Пример #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);
        }
Пример #2
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);
        }
        public void CreateApiModulesAndTestSteps(TCObject rootComponentFolder,
                                                 XModule wseModule,
                                                 ModuleType moduleType)
        {
            foreach (var teststep in CommonUtilities.GetFilteredWseTestSteps(rootComponentFolder, wseModule.TestSteps))
            {
                try {
                    var requestSpecializationModule = teststep.TestStepValues
                                                      .FirstOrDefault(
                        x => x.Name == "Request" &&
                        (x.SpecializationModule.Name
                         != "Web service request data in JSON Resource" &&
                         x.SpecializationModule.Name
                         != "Web service request data in XML Resource"
                        ))
                                                      ?.SpecializationModule;

                    var responseSpecializationModule = teststep.TestStepValues
                                                       .FirstOrDefault(
                        x => x.Name == "Response" &&
                        (x.SpecializationModule.Name
                         != "Web service response data in JSON Resource" &&
                         x.SpecializationModule.Name
                         != "Web service response data in XML Resource"
                        ))
                                                       ?.SpecializationModule;

                    if (responseSpecializationModule == null && requestSpecializationModule == null)
                    {
                        return;
                    }
                    string correlationId  = Guid.NewGuid().ToString();
                    var    testStepParser = new WseTestStepParser(moduleType);
                    testStepParser.Parse(teststep, requestSpecializationModule, responseSpecializationModule);
                    ApiModule requestApiModule;
                    ApiModule responseApiModule;
                    ApiModule apiModule = null;
                    switch (moduleType)
                    {
                    case ModuleType.CommunicatewithWebserviceRestJson
                        when !string.IsNullOrEmpty(testStepParser.Endpoint):
                    case ModuleType.CommunicatewithWebservice
                        when !string.IsNullOrEmpty(CommonUtilities.GetSoapAction(testStepParser.Headers)):
                        apiModule = SearchApiModuleByScanTag(rootComponentFolder,
                                                             testStepParser,
                                                             requestSpecializationModule,
                                                             responseSpecializationModule,
                                                             SearchRequestModule);
                        break;
                    }

                    if (apiModule == null)
                    {
                        var apiModuleFolder =
                            new FolderStructureHandler().CreateFolderForWseModules(
                                rootComponentFolder,
                                requestSpecializationModule ?? responseSpecializationModule);
                        requestApiModule =
                            ApiModuleCreator.CreateRequestModule(apiModuleFolder,
                                                                 requestSpecializationModule == null
                                                                             ? responseSpecializationModule.Name
                                                                             : requestSpecializationModule.Name,
                                                                 testStepParser,
                                                                 correlationId,
                                                                 ScanTag.GetRequestScanTag(testStepParser));
                        string responseModuleName = requestSpecializationModule == null
                                                            ? responseSpecializationModule.Name
                                                            : requestSpecializationModule.Name;
                        responseApiModule =
                            ApiModuleCreator.CreateResponseModule(apiModuleFolder,
                                                                  $"{responseModuleName} Response",
                                                                  testStepParser,
                                                                  correlationId,
                                                                  ScanTag.GetResponseScanTag(testStepParser));
                    }
                    else
                    {
                        requestApiModule  = apiModule;
                        responseApiModule = SearchApiModuleByScanTag(rootComponentFolder,
                                                                     testStepParser,
                                                                     requestSpecializationModule,
                                                                     responseSpecializationModule,
                                                                     SearchResponseModule);
                    }

                    FileLogger.Instance.Debug(
                        $"Completed migration for WSE Module : '{wseModule.Name}' NodePath:'{wseModule.NodePath}'");

                    WseTestStepImporter wseTestStepMigrator = new WseTestStepImporter();
                    wseTestStepMigrator.MigrateTestSteps(rootComponentFolder,
                                                         requestApiModule,
                                                         responseApiModule,
                                                         new List <XTestStep>()
                    {
                        teststep
                    },
                                                         moduleType);
                }
                catch (Exception e) {
                    FileLogger.Instance.Error(e);
                }
            }
        }
 private ApiModule SearchResponseModule(TCObject rootComponentFolder, WseTestStepParser testStepParser)
 {
     return(ScanTag.SearchModuleByScanTag(rootComponentFolder, ScanTag.GetResponseScanTag(testStepParser)));
 }