示例#1
0
        public static List <ApplicationAPIModel> CompareAPIModels(ApplicationAPIModel learnedModel, List <ApplicationAPIModel> existingAPIs)
        {
            if (learnedModel.APIType == ApplicationAPIUtils.eWebApiType.REST)
            {
                // Filter matching APIs based on Request Http Version
                existingAPIs = existingAPIs.Where(m => m.ReqHttpVersion == learnedModel.ReqHttpVersion).ToList();

                // Filter matching APIs based on Response Content Type
                existingAPIs = existingAPIs.Where(m => m.ResponseContentType == learnedModel.ResponseContentType).ToList();

                // Filter matching APIs based on Content Type
                existingAPIs = existingAPIs.Where(m => m.ContentType == learnedModel.ContentType).ToList();
            }

            // Filter matching APIs based on URL Domain
            existingAPIs = existingAPIs.Where(m => m.URLDomain == learnedModel.URLDomain).ToList();

            // Filter matching APIs based on HTTP Headers
            //existingAPIs = existingAPIs.Where(m => m.HttpHeaders.Equals(learnedModel.HttpHeaders)).ToList();

            for (int i = existingAPIs.Count - 1; i >= 0; i--)
            {
                ApplicationAPIModel apiMod = existingAPIs[i];
                foreach (APIModelKeyValue headerPair in apiMod.HttpHeaders)
                {
                    APIModelKeyValue apiHeaderExistings = learnedModel.HttpHeaders.Where(h => h.Param == headerPair.Param && h.Value == headerPair.Value).FirstOrDefault();
                    if (apiHeaderExistings != null)
                    {
                        continue;
                    }
                    else
                    {
                        existingAPIs.RemoveAt(i);
                        break;
                    }
                }
            }

            // Filter matching APIs based on Request Body
            existingAPIs = existingAPIs.Where(m => m.RequestBody != null && m.RequestBody.Equals(learnedModel.RequestBody)).ToList();

            return(existingAPIs);
        }
示例#2
0
        public void APIParsingSavingAndPulling()
        {
            // Arrange

            //Act

            ApplicationAPIModel AAMS1 = new ApplicationAPIModel();

            AAMS1.Name           = "Soap1";
            AAMS1.Description    = "Description";
            AAMS1.EndpointURL    = "EndpointURL";
            AAMS1.ReqHttpVersion = ApplicationAPIUtils.eHttpVersion.HTTPV10;
            AppModelParameter AMDP = new AppModelParameter()
            {
                PlaceHolder = "placeholder", Description = "Description"
            };
            OptionalValue OV1 = new OptionalValue("Value1");
            OptionalValue OV2 = new OptionalValue("Value2");

            AMDP.OptionalValuesList.Add(OV1);
            AMDP.OptionalValuesList.Add(OV2);
            AAMS1.AppModelParameters = new ObservableList <AppModelParameter>();
            AAMS1.AppModelParameters.Add(AMDP);

            APIModelKeyValue AMKV = new APIModelKeyValue("param", "value");

            //AAMS1.APIModelKeyValueHeaders = new ObservableList<APIModelKeyValue>();
            //AAMS1.APIModelKeyValueHeaders.Add(AMKV);

            AAMS1.NetworkCredentials          = ApplicationAPIUtils.eNetworkCredentials.Custom;
            AAMS1.URLUser                     = "******";
            AAMS1.URLDomain                   = "URLDomain";
            AAMS1.URLPass                     = "******";
            AAMS1.DoNotFailActionOnBadRespose = true;


            AAMS1.HttpHeaders = new ObservableList <APIModelKeyValue>();
            AAMS1.HttpHeaders.Add(AMKV);
            AAMS1.RequestBodyType      = ApplicationAPIUtils.eRequestBodyType.FreeText;
            AAMS1.CertificateType      = ApplicationAPIUtils.eCretificateType.AllSSL;
            AAMS1.CertificatePath      = "CertificatePath";
            AAMS1.ImportCetificateFile = true;
            AAMS1.CertificatePassword  = "******";
            AAMS1.SecurityType         = ApplicationAPIUtils.eSercurityType.Ssl3;
            AAMS1.AuthorizationType    = ApplicationAPIUtils.eAuthType.BasicAuthentication;

            AAMS1.TemplateFileNameFileBrowser = "TemplateFileNameFileBrowser";
            AAMS1.ImportRequestFile           = "ImportRequestFile";
            AAMS1.AuthUsername = "******";
            AAMS1.AuthPassword = "******";

            //APIParameter APIP = new APIParameter("parameterName", "parameterType", 1, 2);
            //AAMS1.ParametersList = new ObservableList<APIParameter>();
            //AAMS1.ParametersList.Add(APIP);
            AAMS1.SOAPAction = "SOAPAction";

            SR.AddRepositoryItem(AAMS1);

            //SR.ClearRepositoryItemsCache<ApplicationAPIModel>();    //TODO: we need to make sure this test run as stand alone or it will mess other UT

            ObservableList <ApplicationAPIModel> AAMBList = SR.GetAllRepositoryItems <ApplicationAPIModel>();
            ApplicationAPIModel AAMS2 = (ApplicationAPIModel)(from x in AAMBList where x.Guid == AAMS1.Guid select x).FirstOrDefault();

            // TODO: change 'Value Check' to the name of the field

            //Assert
            Assert.AreEqual(AAMS2.Name, "Soap1", "Value Check");
            Assert.AreEqual(AAMS2.Description, "Description", "Value Check");
            Assert.AreEqual(AAMS2.EndpointURL, "EndpointURL", "Value Check");
            Assert.AreEqual(AAMS2.ReqHttpVersion, ApplicationAPIUtils.eHttpVersion.HTTPV10, "Value Check");
            Assert.AreEqual(AAMS2.AppModelParameters.Count, 1, "Value Check");
            Assert.AreEqual(AAMS2.AppModelParameters[0].OptionalValuesList.Count, 2, "Value Check");
            //Assert.AreEqual(AAMS2.APIModelKeyValueHeaders.Count, 1, "Value Check");
            Assert.AreEqual(AAMS2.NetworkCredentials, ApplicationAPIUtils.eNetworkCredentials.Custom, "Value Check");
            Assert.AreEqual(AAMS2.URLUser, "URLUser", "Value Check");
            Assert.AreEqual(AAMS2.URLDomain, "URLDomain", "Value Check");
            Assert.AreEqual(AAMS2.URLPass, "URLPass", "Value Check");
            Assert.AreEqual(AAMS2.DoNotFailActionOnBadRespose, true, "Value Check");
            Assert.AreEqual(AAMS2.HttpHeaders.Count, 1, "Value Check");
            Assert.AreEqual(AAMS2.RequestBodyType, ApplicationAPIUtils.eRequestBodyType.FreeText, "Value Check");
            Assert.AreEqual(AAMS2.CertificateType, ApplicationAPIUtils.eCretificateType.AllSSL, "Value Check");
            Assert.AreEqual(AAMS2.CertificatePath, "CertificatePath", "Value Check");
            Assert.AreEqual(AAMS2.ImportCetificateFile, true, "Value Check");
            Assert.AreEqual(AAMS2.CertificatePassword, "CertificatePassword", "Value Check");
            Assert.AreEqual(AAMS2.SecurityType, ApplicationAPIUtils.eSercurityType.Ssl3, "Value Check");
            Assert.AreEqual(AAMS2.AuthorizationType, ApplicationAPIUtils.eAuthType.BasicAuthentication, "Value Check");
            Assert.AreEqual(AAMS2.TemplateFileNameFileBrowser, "TemplateFileNameFileBrowser", "Value Check");
            Assert.AreEqual(AAMS2.ImportRequestFile, "ImportRequestFile", "Value Check");
            Assert.AreEqual(AAMS2.AuthUsername, "AuthUsername", "Value Check");
            Assert.AreEqual(AAMS2.AuthPassword, "AuthPassword", "Value Check");
            //Assert.AreEqual(AAMS2.ParametersList.Count, 1, "Value Check");
            Assert.AreEqual(AAMS2.SOAPAction, "SOAPAction", "Value Check");
        }
示例#3
0
        private void AddHttpHeaderRow(object sender, RoutedEventArgs e)
        {
            APIModelKeyValue AMBKV = new APIModelKeyValue();

            mApplicationAPIModel.HttpHeaders.Add(AMBKV);
        }
示例#4
0
        private ApplicationAPIModel GenerateBasicModel(SwaggerOperation Operation, SwaggerOperationMethod method, ref bool supportBody, string path)
        {
            ApplicationAPIModel AAM = new ApplicationAPIModel();

            System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("{[a-zA-Z]*}");
            foreach (var Match in reg.Matches(path))
            {
                string modal = "<" + Match.ToString().ToUpper() + ">";
                path = path.Replace(Match.ToString(), modal);
                AAM.AppModelParameters.Add(new AppModelParameter(modal, Match.ToString() + "in url", "", "", new ObservableList <OptionalValue>()));
            }
            AAM.EndpointURL = Swaggerdoc.BaseUrl + path;
            AAM.APIType     = ApplicationAPIUtils.eWebApiType.REST;
            AAM.Name        = Operation.Summary;
            if (string.IsNullOrWhiteSpace(AAM.Name))
            {
                AAM.Name = Operation.OperationId;
            }
            AAM.URLDomain = Swaggerdoc.BaseUrl;
            supportBody   = true;
            switch (method)
            {
            case SwaggerOperationMethod.Get:
                AAM.RequestType = ApplicationAPIUtils.eRequestType.GET;
                supportBody     = false;
                break;

            case SwaggerOperationMethod.Delete:
                AAM.RequestType = ApplicationAPIUtils.eRequestType.DELETE;
                break;

            case SwaggerOperationMethod.Head:
                AAM.RequestType = ApplicationAPIUtils.eRequestType.Head;
                break;

            case SwaggerOperationMethod.Options:
                AAM.RequestType = ApplicationAPIUtils.eRequestType.Options;
                break;

            case SwaggerOperationMethod.Patch:
                AAM.RequestType = ApplicationAPIUtils.eRequestType.PATCH;
                break;

            case SwaggerOperationMethod.Post:
                AAM.RequestType = ApplicationAPIUtils.eRequestType.POST;
                break;

            case SwaggerOperationMethod.Put:
                AAM.RequestType = ApplicationAPIUtils.eRequestType.PUT;
                break;

            case SwaggerOperationMethod.Trace:
                AAM.RequestType = ApplicationAPIUtils.eRequestType.POST;
                break;

            case SwaggerOperationMethod.Undefined:
                AAM.RequestType = ApplicationAPIUtils.eRequestType.POST;
                break;
            }


            foreach (SwaggerParameter param in Operation.Parameters)
            {
                if (param.Kind == SwaggerParameterKind.Header)
                {
                    string           modelName = "<" + param.Name + ">";
                    APIModelKeyValue header    = new APIModelKeyValue();
                    header.ItemName = param.Name;
                    header.Param    = param.Name;
                    header.Value    = modelName;
                    AAM.AppModelParameters.Add(new AppModelParameter(modelName, param.Name + " in headers", "", "", new ObservableList <OptionalValue>()));
                    AAM.HttpHeaders.Add(header);
                }
            }

            return(AAM);
        }
        /// <summary>
        /// This method is used to create or update API Model from Soap action
        /// </summary>
        /// <param name="actionToConvert"></param>
        /// <param name="path"></param>
        /// <returns></returns>
        private void CreateAPIModelFromWebserviceAction(ref ApplicationAPIModel aPIModel, Act actionToConvert, bool pullValidations, bool parameterizeRequestBody)
        {
            try
            {
                aPIModel.ItemName = actionToConvert.ItemName;

                if (actionToConvert.GetType() == typeof(ActWebAPIRest))
                {
                    aPIModel.APIType = ApplicationAPIUtils.eWebApiType.REST;
                }
                else
                {
                    aPIModel.APIType = ApplicationAPIUtils.eWebApiType.SOAP;
                }

                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.RequestBody), nameof(ApplicationAPIModel.RequestBody), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIRest.Fields.RequestType), nameof(ApplicationAPIModel.RequestType), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIRest.Fields.ReqHttpVersion), nameof(ApplicationAPIModel.ReqHttpVersion), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIRest.Fields.ResponseContentType), nameof(ApplicationAPIModel.ResponseContentType), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIRest.Fields.CookieMode), nameof(ApplicationAPIModel.CookieMode), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIRest.Fields.ContentType), nameof(ApplicationAPIModel.ContentType), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPISoap.Fields.SOAPAction), nameof(ApplicationAPIModel.SOAPAction), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.EndPointURL), nameof(ApplicationAPIModel.EndpointURL), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.URLUser), nameof(ApplicationAPIModel.URLUser), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.URLDomain), nameof(ApplicationAPIModel.URLDomain), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.URLPass), nameof(ApplicationAPIModel.URLPass), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.CertificatePath), nameof(ApplicationAPIModel.CertificatePath), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.DoNotFailActionOnBadRespose), nameof(ApplicationAPIModel.DoNotFailActionOnBadRespose), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.ImportCetificateFile), nameof(ApplicationAPIModel.ImportCetificateFile), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.CertificatePassword), nameof(ApplicationAPIModel.CertificatePassword), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.SecurityType), nameof(ApplicationAPIModel.SecurityType), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.AuthorizationType), nameof(ApplicationAPIModel.AuthorizationType), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.TemplateFileNameFileBrowser), nameof(ApplicationAPIModel.TemplateFileNameFileBrowser), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.AuthUsername), nameof(ApplicationAPIModel.AuthUsername), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.AuthPassword), nameof(ApplicationAPIModel.AuthPassword), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.CertificateTypeRadioButton), nameof(ApplicationAPIModel.CertificateType), actionToConvert);
                SetPropertyValue(aPIModel, nameof(ActWebAPIBase.Fields.NetworkCredentialsRadioButton), nameof(ApplicationAPIModel.NetworkCredentials), actionToConvert);

                if (!string.IsNullOrEmpty(Convert.ToString(aPIModel.TemplateFileNameFileBrowser)))
                {
                    aPIModel.RequestBodyType = ApplicationAPIUtils.eRequestBodyType.TemplateFile;
                }

                if (((ActWebAPIBase)actionToConvert).HttpHeaders != null)
                {
                    if (aPIModel.HttpHeaders == null)
                    {
                        aPIModel.HttpHeaders = new ObservableList <APIModelKeyValue>();
                    }
                    foreach (var header in ((ActWebAPIBase)actionToConvert).HttpHeaders)
                    {
                        APIModelKeyValue keyVal = new APIModelKeyValue();
                        keyVal.ItemName = header.ItemName;
                        keyVal.Param    = header.ItemName;
                        keyVal.FileName = header.ItemName;
                        keyVal.Value    = header.Value;
                        aPIModel.HttpHeaders.Add(keyVal);
                    }
                }

                if (parameterizeRequestBody)
                {
                    ParameterizeApiModellBody(aPIModel, actionToConvert, parameterizeRequestBody);
                }

                if (pullValidations)
                {
                    foreach (var exitingRV in actionToConvert.ReturnValues)
                    {
                        ActReturnValue actR = new ActReturnValue();

                        if (string.IsNullOrEmpty(exitingRV.Expected) == false)
                        {
                            actR.Expected = exitingRV.Expected;
                        }
                        if (exitingRV.StoreTo == ActReturnValue.eStoreTo.ApplicationModelParameter)
                        {
                            actR.StoreTo      = exitingRV.StoreTo;
                            actR.StoreToValue = exitingRV.StoreToValue;
                        }
                        if (actR.Expected != null || actR.StoreTo != ActReturnValue.eStoreTo.None)
                        {
                            actR.Active = true;
                            actR.Param  = exitingRV.Param;
                            actR.Path   = exitingRV.Path;
                            aPIModel.ReturnValues.Add(actR);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Reporter.ToLog(eLogLevel.ERROR, "Error occurred while creating the API Model from webservice Action", ex);
            }
        }