public async Task HttpTesterClientAddGetHttpRequest_Success()
        {
            var urlSource = new SwaggerUrlSource(options =>
            {
                options.AddBaseUrl(new Uri("https://qatoolkitapi.azurewebsites.net/"));
                options.AddRequestFilters(new RequestFilter()
                {
                    EndpointNameWhitelist = new string[] { "GetAllBikes" }
                });
                options.UseSwaggerExampleValues = true;
            });

            var requests = await urlSource.Load(new Uri[]
            {
                new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v2/swagger.json")
            });

            using (var client = new HttpTesterClient())
            {
                var response = await client
                               .CreateHttpRequest(requests.FirstOrDefault())
                               .Start();

                var msg = await response.GetResponseJsonBody <List <Bicycle> >();

                var expectedResponse = BicycleFixture.GetBicycles().ToExpectedObject();
                expectedResponse.ShouldEqual(msg);

                Assert.True(client.Duration < 2000);
                Assert.True(response.IsSuccessStatusCode);
            }
        }
示例#2
0
        public async Task SwaggerRequestFilterAuthTypeAndTestTypeAlternativeWithGeneralContainsTestV2_Success()
        {
            var urlSource = new SwaggerUrlSource(options =>
            {
                options.AddBaseUrl(new Uri("https://qatoolkitapi.azurewebsites.net/"));
                options.AddRequestFilters(new RequestFilter()
                {
                    TestTypes = new List <TestType.Enumeration> {
                        TestType.Enumeration.LoadTest
                    },
                    HttpMethodsWhitelist = new List <HttpMethod>()
                    {
                        HttpMethod.Put, HttpMethod.Post, HttpMethod.Get
                    },
                    GeneralContains = new string[] { "bicycle" }
                });
                options.UseSwaggerExampleValues = true;
            });

            var requests = await urlSource.Load(new Uri[] {
                new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v2/swagger.json")
            });

            Assert.Equal(5, requests.Count());
        }
        public async Task HttpTesterClientAddPostHttpRequest_Success()
        {
            var urlSource = new SwaggerUrlSource(options =>
            {
                options.AddBaseUrl(new Uri("https://qatoolkitapi.azurewebsites.net/"));
                options.AddRequestFilters(new RequestFilter()
                {
                    EndpointNameWhitelist = new string[] { "NewBike" }
                });
                options.UseSwaggerExampleValues = true;
            });

            var requests = await urlSource.Load(new Uri[]
            {
                new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v2/swagger.json")
            });

            using (var client = new HttpTesterClient())
            {
                var response = await client
                               .CreateHttpRequest(requests.FirstOrDefault())
                               .WithJsonBody(BicycleFixture.Get())
                               .Start();

                var msg = await response.GetResponseJsonBody <Bicycle>();

                Assert.True(client.Duration < 2000);
                Assert.True(response.IsSuccessStatusCode);
                Assert.Equal("Giant", msg.Brand);
            }
        }
示例#4
0
        public async Task SwaggerRequestFilterOperationIdAndAuthTypeAndTestTypeAlternativeWithMethodTest_Success()
        {
            var urlSource = new SwaggerUrlSource(options =>
            {
                options.AddBaseUrl(new Uri("https://qatoolkitapi.azurewebsites.net/"));
                options.AddRequestFilters(new RequestFilter()
                {
                    TestTypes = new List <TestType.Enumeration> {
                        TestType.Enumeration.LoadTest
                    },
                    EndpointNameWhitelist = new string[] { "DeleteBike", "UpdateBike" },
                    AuthenticationTypes   = new List <AuthenticationType.Enumeration> {
                        AuthenticationType.Enumeration.ApiKey
                    },
                    HttpMethodsWhitelist = new List <HttpMethod>()
                    {
                        HttpMethod.Put, HttpMethod.Delete
                    }
                });
                options.UseSwaggerExampleValues = true;
            });

            var requests = await urlSource.Load(new Uri[] {
                new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v2/swagger.json")
            });

            Assert.Equal(2, requests.Count());
        }
示例#5
0
 public async Task WrongSwaggerUrlSourceArgumentNullException2Test_Fails()
 {
     var urlSource = new SwaggerUrlSource();
     await Assert.ThrowsAsync <InvalidSwaggerException>(async() => await urlSource.Load(
                                                            new Uri[]
     {
         new Uri("https://github.com")
     }));
 }
示例#6
0
 public async Task WrongSwaggerUrlSourceArgumentNullExceptionTest_Fails()
 {
     var urlSource = new SwaggerUrlSource();
     await Assert.ThrowsAsync <InvalidSwaggerException>(async() => await urlSource.Load(
                                                            new Uri[]
     {
         new Uri("https://qatoolkitapi.azurewebsites.net/swagger/index.html")
     }));
 }
示例#7
0
 public async Task SwaggerUrlSourceUriFormatExceptionTest_Fails()
 {
     var urlSource = new SwaggerUrlSource();
     await Assert.ThrowsAsync <UriFormatException>(async() => await urlSource.Load(
                                                       new Uri[]
     {
         new Uri("")
     }));
 }
示例#8
0
        public async Task SwaggerUrlSourceWithoutOptionsV3Test_Successfull()
        {
            var urlSource = new SwaggerUrlSource();
            var requests  = await urlSource.Load(
                new Uri[]
            {
                new Uri("https://petstore3.swagger.io/api/v3/openapi.json")
            });

            Assert.NotNull(requests);
        }
示例#9
0
        public async Task PetsSwaggerGetPetByIdWithExampleValuesAndDifferentBaseAddressTestV1_Successfull()
        {
            var urlSource = new SwaggerUrlSource(options =>
            {
                options.AddBaseUrl(new Uri("http://localhost/"));
                options.AddRequestFilters(new RequestFilter()
                {
                    EndpointNameWhitelist = new string[] { "GetAllBikes" }
                });
                options.UseSwaggerExampleValues = true;
            });

            var requests = await urlSource.Load(new Uri[] {
                new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v1/swagger.json")
            });

            _logger.LogInformation(JsonConvert.SerializeObject(requests, Formatting.Indented));

            Assert.NotNull(requests);
            Assert.Single(requests);
            Assert.Empty(requests.FirstOrDefault().AuthenticationTypes);
            Assert.Equal("http://localhost/", requests.FirstOrDefault().BasePath);
            Assert.Equal("Get all bikes", requests.FirstOrDefault().Description);
            Assert.Equal(HttpMethod.Get, requests.FirstOrDefault().Method);
            Assert.Equal("GetAllBikes", requests.FirstOrDefault().OperationId);
            Assert.Equal(3, requests.FirstOrDefault().Parameters.Count);
            Assert.Equal("/api/bicycles", requests.FirstOrDefault().Path);
            Assert.Empty(requests.FirstOrDefault().RequestBodies);
            Assert.Equal(2, requests.FirstOrDefault().Responses.Count);

            var getBikesParameters = JsonConvert.SerializeObject(BicyclesParameters.Get(true), Formatting.None);

            Assert.Equal(getBikesParameters.ToLower(), JsonConvert.SerializeObject(requests.FirstOrDefault().Parameters, Formatting.None).ToLower());

            var expectedPetsResponse = JsonConvert.SerializeObject(GetBicycleByIdResponse.Get().OrderBy(x => x.StatusCode), Formatting.None);

            Assert.Equal(expectedPetsResponse.ToLower(), JsonConvert.SerializeObject(requests.FirstOrDefault().Responses.OrderBy(x => x.StatusCode), Formatting.None).ToLower());

            Assert.Equal("Get all bikes by filter", requests.FirstOrDefault().Summary);
            Assert.Collection(requests.FirstOrDefault().Tags, item =>
            {
                item = "Public";
            });
            Assert.Empty(requests.FirstOrDefault().TestTypes);
        }
示例#10
0
        public async Task SwaggerRequestFilterGeneralContainsTagTest_Success()
        {
            var urlSource = new SwaggerUrlSource(options =>
            {
                options.AddBaseUrl(new Uri("https://qatoolkitapi.azurewebsites.net/"));
                options.AddRequestFilters(new RequestFilter()
                {
                    GeneralContains = new string[] { "PUBLIC" }
                });
                options.UseSwaggerExampleValues = true;
            });

            var requests = await urlSource.Load(new Uri[] {
                new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v1/swagger.json")
            });

            Assert.Equal(5, requests.Count());
        }
示例#11
0
        public async Task SwaggerRequestFilterOnlyOperationIdTest_Success()
        {
            var urlSource = new SwaggerUrlSource(options =>
            {
                options.AddBaseUrl(new Uri("https://qatoolkitapi.azurewebsites.net/"));
                options.AddRequestFilters(new RequestFilter()
                {
                    EndpointNameWhitelist = new string[] { "GetAllBikes", "UpdateBike" }
                });
                options.UseSwaggerExampleValues = true;
            });

            var requests = await urlSource.Load(new Uri[] {
                new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v1/swagger.json")
            });

            Assert.Equal(2, requests.Count());
        }
        public async Task HttpTesterClientWithSwagger_Success()
        {
            var urlSource = new SwaggerUrlSource(options =>
            {
                options.AddBaseUrl(new Uri("https://qatoolkitapi.azurewebsites.net/"));
                options.AddRequestFilters(new RequestFilter()
                {
                    EndpointNameWhitelist = new string[] { "NewBike" }
                });
                options.UseSwaggerExampleValues = true;
            });

            var requests = await urlSource.Load(new Uri[]
            {
                new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v1/swagger.json")
            });

            var replacementValues = new Dictionary <string, object>
            {
                { "api-version", 1 }
            };

            var urlGenerator = new HttpRequestUrlGenerator(requests.FirstOrDefault(),
                                                           options => { options.AddReplacementValues(replacementValues); });

            using (var client = new HttpTesterClient())
            {
                var response = await client
                               .CreateHttpRequest(new Uri(urlGenerator.GetUrl()))
                               .WithHeaders(new Dictionary <string, string>()
                {
                    { "Content-Type", "application/json" }
                })
                               .WithMethod(HttpMethod.Post)
                               .WithJsonBody(BicycleFixture.Get())
                               .Start();

                var msg = await response.GetResponseJsonBody <Bicycle>();

                Assert.True(client.Duration < 2000);
                Assert.True(response.IsSuccessStatusCode);
                Assert.Equal("Giant", msg.Brand);
            }
        }
示例#13
0
        public async Task PetsSwaggerGetPetByIdWithExampleValuesAndDifferentBaseAddressTestV2_Successfull()
        {
            var urlSource = new SwaggerUrlSource(options =>
            {
                options.AddBaseUrl(new Uri("http://localhost/"));
                options.AddRequestFilters(new RequestFilter()
                {
                    EndpointNameWhitelist = new string[] { "NewBike", "UpdateBike" },
                    AuthenticationTypes   = new List <AuthenticationType.Enumeration>()
                    {
                        AuthenticationType.Enumeration.ApiKey
                    }
                });
                options.UseSwaggerExampleValues = true;
            });

            var requests = await urlSource.Load(new Uri[] {
                new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v2/swagger.json")
            });

            _logger.LogInformation(JsonConvert.SerializeObject(requests, Formatting.Indented));

            Assert.NotNull(requests);
            Assert.Equal(2, requests.Count());
            Assert.Equal("http://localhost/", requests.FirstOrDefault().BasePath);
            Assert.Equal("Add new bike. TEST TAGS -> [@integrationtest,@loadtest,@apikey,@customer]", requests.FirstOrDefault().Description);
            Assert.Equal(HttpMethod.Post, requests.FirstOrDefault().Method);
            Assert.Equal("NewBike", requests.FirstOrDefault().OperationId);
            Assert.Equal(3, requests.FirstOrDefault().Parameters.Count);
            Assert.Equal("/api/bicycles", requests.FirstOrDefault().Path);
            Assert.NotEmpty(requests.FirstOrDefault().RequestBodies);
            Assert.Equal(3, requests.FirstOrDefault().Responses.Count);

            Assert.Equal("Create new bicycle", requests.FirstOrDefault().Summary);
            Assert.Collection(requests.FirstOrDefault().Tags, item =>
            {
                item = "Public";
            });
            Assert.Equal(2, requests.FirstOrDefault().TestTypes.Count);
            Assert.Equal(2, requests.FirstOrDefault().AuthenticationTypes.Count);
            Assert.Contains(TestType.Enumeration.IntegrationTest, requests.FirstOrDefault().TestTypes);
            Assert.Contains(TestType.Enumeration.LoadTest, requests.FirstOrDefault().TestTypes);
            Assert.Contains(AuthenticationType.Enumeration.ApiKey, requests.FirstOrDefault().AuthenticationTypes);
        }
示例#14
0
        public async Task SwaggerUrlSourceWithOptionsV3Test_Successfull()
        {
            var swaggerSource = new SwaggerUrlSource(
                options =>
            {
                options.AddRequestFilters(new RequestFilter()
                {
                    EndpointNameWhitelist = new string[] { "getPetById", "addPet" }
                });
            });

            var requests = await swaggerSource.Load(new Uri[] {
                new Uri("https://petstore3.swagger.io/api/v3/openapi.json")
            });

            _logger.LogInformation(JsonConvert.SerializeObject(requests, Formatting.Indented));

            Assert.NotNull(requests);
        }
示例#15
0
        public async Task SwaggerRequestFilterOnlyTestTypeTest_Success()
        {
            var urlSource = new SwaggerUrlSource(options =>
            {
                options.AddBaseUrl(new Uri("https://qatoolkitapi.azurewebsites.net/"));
                options.AddRequestFilters(new RequestFilter()
                {
                    TestTypes = new List <TestType.Enumeration> {
                        TestType.Enumeration.LoadTest
                    }
                });
                options.UseSwaggerExampleValues = true;
            });

            var requests = await urlSource.Load(new Uri[] {
                new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v2/swagger.json")
            });

            Assert.Equal(7, requests.Count());
        }
示例#16
0
        public async Task SwaggerRequestFilterOperationIdAndAuthTypeTest_Success()
        {
            var urlSource = new SwaggerUrlSource(options =>
            {
                options.AddBaseUrl(new Uri("https://qatoolkitapi.azurewebsites.net/"));
                options.AddRequestFilters(new RequestFilter()
                {
                    TestTypes = new List <TestType.Enumeration> {
                        TestType.Enumeration.LoadTest
                    },
                    EndpointNameWhitelist = new string[] { "UpdateBike" }
                });
                options.UseSwaggerExampleValues = true;
            });

            var requests = await urlSource.Load(new Uri[] {
                new Uri("https://qatoolkitapi.azurewebsites.net/swagger/v2/swagger.json")
            });

            Assert.Single(requests);
        }