Exemplo n.º 1
0
        /// <summary>
        /// Creates response module
        /// </summary>
        /// <param name="moduleFolder">Folder path reference to create Response module</param>
        /// <param name="name">Name of Response module</param>
        /// <param name="wseModuleParser">Contains transport information used to fill in Response Module</param>
        /// <param name="correlationId">Uniquely identify the Response Module</param>
        /// <returns></returns>
        public static ApiModule CreateResponseModule(TCFolder moduleFolder,
                                                     string name,
                                                     IWseArtifactsParser wseModuleParser,
                                                     string correlationId
                                                     )
        {
            //tosca specific properties
            ApiModule responseApiModule =
                SetModuleStandardProperties(moduleFolder,
                                            name,
                                            correlationId,
                                            ScanTag.GetResponseScanTag(wseModuleParser));

            responseApiModule.AddTechnicalIdParam("Direction", Direction.In.ToString());
            responseApiModule.AddTechnicalIdParam("InactiveNodes", "Keep");
            responseApiModule.AddTechnicalIdParam("IsRequest", "False");
            responseApiModule.AddConfigurationParam("Executor", "HttpReceive");
            responseApiModule.AddHeaders(wseModuleParser.ResponseHeaders);
            responseApiModule.AddTechnicalIdParam("StatusCode", wseModuleParser.ResponseStatus);
            if (!string.IsNullOrEmpty(wseModuleParser.ResponsePayload))
            {
                responseApiModule.APISetMessagePayload(wseModuleParser.ResponsePayload);
            }
            return(responseApiModule);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Create API Modules Folder Name on the basis of SoapAction, Resource, Endpoint and Method(HttpVerbs)
        /// </summary>
        /// <param name="xTestStep">Wse Teststep</param>
        /// <param name="parserResult">Contains transport info(Endpoint, Method, Resource, Headers)</param>
        /// <returns>FolderName</returns>
        public static string CreateModuleFolderName(XTestStep xTestStep, IWseArtifactsParser parserResult)
        {
            try {
                var soapAction = GetSoapAction(parserResult.Headers);

                if (!string.IsNullOrEmpty(soapAction))
                {
                    var action = soapAction.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries).Last();
                    if (!string.IsNullOrEmpty(action))
                    {
                        return(AppendMethod(action, parserResult.Method));
                    }
                }

                if (!string.IsNullOrEmpty(parserResult.Resource))
                {
                    return(AppendMethod(parserResult.Resource, parserResult.Method));
                }

                if (!string.IsNullOrEmpty(parserResult.Endpoint))
                {
                    return(AppendMethod(parserResult.Endpoint, parserResult.Method));
                }
            }
            catch (Exception) {
                // ignored
            }

            return("UnknownResource");
        }
Exemplo n.º 3
0
        /// <summary>
        /// Creates request module
        /// </summary>
        /// <param name="moduleFolder">Folder path reference to create Request module</param>
        /// <param name="name">Name of Request module</param>
        /// <param name="wseModuleParser">Contains transport information used to fill in Request Module</param>
        /// <param name="correlationId">Uniquely identify the Request Module</param>
        /// <returns></returns>
        public static ApiModule CreateRequestModule(TCFolder moduleFolder,
                                                    string name,
                                                    IWseArtifactsParser wseModuleParser,
                                                    string correlationId)
        {
            //Module Properties
            ApiModule requestApiModule =
                SetModuleStandardProperties(moduleFolder,
                                            name,
                                            correlationId,
                                            ScanTag.GetRequestScanTag(wseModuleParser));

            //Request Properties
            requestApiModule.AddTechnicalIdParam("Direction", Direction.Out.ToString());
            requestApiModule.AddTechnicalIdParam("InactiveNodes", "Remove");
            requestApiModule.AddTechnicalIdParam("IsRequest", "True");
            requestApiModule.AddTechnicalIdParam("MessagesGenerated", "True");
            requestApiModule.AddConfigurationParam("Executor", "HttpSend");
            requestApiModule.AddTechnicalIdParam("Method", wseModuleParser.Method);
            requestApiModule.AddTechnicalIdParam("Endpoint", wseModuleParser.Endpoint);
            requestApiModule.AddTechnicalIdParam("Resource", wseModuleParser.Resource);
            requestApiModule.AddQueryParams(wseModuleParser.QueryParams);
            requestApiModule.AddPathParams(wseModuleParser.PathParams);
            requestApiModule.AddHeaders(wseModuleParser.Headers);
            if (!string.IsNullOrEmpty(wseModuleParser.RequestPayload))
            {
                requestApiModule.APISetMessagePayload(wseModuleParser.RequestPayload);
            }
            return(requestApiModule);
        }
        private (ApiModule requestApiModule, ApiModule responseApiModule) GetExistingOrCreateNewApiModulePair(
            TCObject objectToExecuteOn,
            XTestStep wseTestStep,
            IWseArtifactsParser wseParser)
        {
            ApiModule requestApiModule  = null;
            ApiModule responseApiModule = null;

            if (!IsModuleSearchCriteriaEmpty(wseParser))
            {
                (requestApiModule, responseApiModule) =
                    CommonUtilities.SearchExistingApiModule(objectToExecuteOn, wseParser, wseTestStep);
            }

            if (requestApiModule != null)
            {
                return(requestApiModule, responseApiModule);
            }

            FolderStructureHandler folderStructureHandler = new FolderStructureHandler();

            (TCFolder apiModuleFolder, string moduleName) =
                folderStructureHandler.CreateFolderForApiModules(objectToExecuteOn, wseTestStep, wseParser);
            return(ApiModuleHandler.CreateApiModulePair(apiModuleFolder, moduleName, wseParser));
        }
Exemplo n.º 5
0
        /// <summary>
        /// Get Request/Response API Module on the basis of scanTag.
        /// </summary>
        /// <param name="objectToExecuteOn">TcObjects</param>
        /// <param name="wseArtifactsParser">Contains Transport information</param>
        /// <param name="wseTestStep">WSE TestSteps</param>
        /// <returns>Request/Response API Module</returns>
        public static (ApiModule, ApiModule) SearchExistingApiModule(TCObject objectToExecuteOn,
                                                                     IWseArtifactsParser wseArtifactsParser,
                                                                     XTestStep wseTestStep)
        {
            if (SpecializationHelper.IsUsingEmbeddedResource(wseTestStep, out TCFolder searchFolder))
            {
                var requestModule  = SearchRequestModule(searchFolder, wseArtifactsParser);
                var responseModule = SearchResponseModule(searchFolder, wseArtifactsParser);
                if (requestModule != null)
                {
                    return(requestModule, responseModule);
                }
            }

            return(SearchRequestModule(objectToExecuteOn, wseArtifactsParser),
                   SearchResponseModule(objectToExecuteOn, wseArtifactsParser));
        }
Exemplo n.º 6
0
        /// <summary>
        /// Create ScanTag for uniquely identify a API Request/Response Module from WSE artifacts
        /// </summary>
        /// <param name="parserResult">Transport information used to create ScanTag</param>
        /// <param name="prefix">Dilimiter</param>
        /// <returns></returns>
        private static string Generate(IWseArtifactsParser parserResult, string prefix)
        {
            var scanTag = new StringBuilder();

            scanTag.Append(prefix);
            scanTag.Append("#");
            scanTag.Append(parserResult.Method);
            scanTag.Append("#");
            scanTag.Append(parserResult.Endpoint);
            scanTag.Append("#");
            scanTag.Append(parserResult.Resource);
            scanTag.Append("#");
            scanTag.Append(CommonUtilities.GetSoapAction(parserResult.Headers));
            scanTag.Append("#");
            scanTag.Append(CommonUtilities.GetQueryParamsKeys(parserResult.QueryParams));
            scanTag.Append("#");
            scanTag.Append(parserResult.HashCode);
            return(scanTag.ToString());
        }
Exemplo n.º 7
0
        /// <summary>
        /// Creates request and response module pair
        /// </summary>
        /// <param name="apiModuleFolder">Folder path reference to create Request and Response module</param>
        /// <param name="moduleName">Name of Request and Response module</param>
        /// <param name="wseParser">Contains transport information like Endpoint, Headers, Payload used to fill in Request and Response Module</param>
        /// <returns></returns>
        public static (ApiModule, ApiModule) CreateApiModulePair(TCFolder apiModuleFolder,
                                                                 string moduleName,
                                                                 IWseArtifactsParser wseParser
                                                                 )
        {
            string    correlationId    = Guid.NewGuid().ToString();
            ApiModule requestApiModule =
                CreateRequestModule(apiModuleFolder,
                                    moduleName,
                                    wseParser,
                                    correlationId
                                    );
            ApiModule responseApiModule =
                CreateResponseModule(apiModuleFolder,
                                     $"{moduleName} Response",
                                     wseParser,
                                     correlationId
                                     );

            return(requestApiModule, responseApiModule);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Identify location of existing WSE Specialized Modules and create generic folder for storing API modules
        /// </summary>
        /// <param name="rootComponentFolder"> Component Folder at which migration is executing </param>
        /// <param name="xTestStep">TestStep for WseArtifacts</param>
        /// <param name="parserResult">Transport information used to fill in Request and Response Module</param>
        /// <returns></returns>
        public (TCFolder, string) CreateFolderForApiModules(TCObject rootComponentFolder,
                                                            XTestStep xTestStep,
                                                            IWseArtifactsParser parserResult)
        {
            if (SpecializationHelper.IsRequestIsUsingEmbeddedModule(xTestStep, out XModule requestSpecializationModule)
                )
            {
                return(CreateFolderForApiModules(requestSpecializationModule), requestSpecializationModule.Name);
            }

            if (SpecializationHelper.IsResponseIsUsingEmbeddedModule(xTestStep,
                                                                     out XModule responseSpecializationModule))
            {
                return(CreateFolderForApiModules(responseSpecializationModule), responseSpecializationModule.Name);
            }

            var apiModulesFolder = GetOrCreateApiModulesFolder(rootComponentFolder);
            var moduleName       = CommonUtilities.CreateModuleFolderName(xTestStep, parserResult);
            var folder           = apiModulesFolder.CreateFolder();

            folder.Name = $"API_{moduleName}";
            folder.EnsureUniqueName();
            return(folder, moduleName);
        }
Exemplo n.º 9
0
 protected override bool IsModuleSearchCriteriaEmpty(IWseArtifactsParser parserResult)
 {
     return(string.IsNullOrEmpty(parserResult.Endpoint));
 }
Exemplo n.º 10
0
 SearchResponseModule(TCObject rootComponentFolder, IWseArtifactsParser testStepParser)
 {
     return(ScanTag.SearchModuleByScanTag(rootComponentFolder,
                                          ScanTag.GetResponseScanTag(testStepParser)));
 }
Exemplo n.º 11
0
 private static ApiModule SearchRequestModule(TCObject rootComponentFolder, IWseArtifactsParser testStepParser)
 {
     return(ScanTag.SearchModuleByScanTag(rootComponentFolder,
                                          ScanTag.GetRequestScanTag(testStepParser)));
 }
Exemplo n.º 12
0
 protected override bool IsModuleSearchCriteriaEmpty(IWseArtifactsParser parserResult)
 {
     return(string.IsNullOrEmpty(CommonUtilities.GetSoapAction(parserResult.Headers)));
 }
 protected abstract bool IsModuleSearchCriteriaEmpty(IWseArtifactsParser parserResult);
Exemplo n.º 14
0
 public static string GetResponseScanTag(IWseArtifactsParser parser)
 {
     return(Generate(parser, "Response"));
 }
Exemplo n.º 15
0
 public static string GetRequestScanTag(IWseArtifactsParser parser)
 {
     return(Generate(parser, "Request"));
 }