Included file-scoped namespaces Basket.FunctionalTests
This commit is contained in:
		
							parent
							
								
									886c6070c6
								
							
						
					
					
						commit
						4e6700d3c6
					
				| @ -1,31 +1,26 @@ | |||||||
| using Microsoft.AspNetCore.Http; | namespace Basket.FunctionalTests.Base; | ||||||
| using System.Security.Claims; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Basket.FunctionalTests.Base | class AutoAuthorizeMiddleware | ||||||
| { | { | ||||||
|     class AutoAuthorizeMiddleware |     public const string IDENTITY_ID = "9e3163b9-1ae6-4652-9dc6-7898ab7b7a00"; | ||||||
|  | 
 | ||||||
|  |     private readonly RequestDelegate _next; | ||||||
|  | 
 | ||||||
|  |     public AutoAuthorizeMiddleware(RequestDelegate rd) | ||||||
|     { |     { | ||||||
|         public const string IDENTITY_ID = "9e3163b9-1ae6-4652-9dc6-7898ab7b7a00"; |         _next = rd; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|         private readonly RequestDelegate _next; |     public async Task Invoke(HttpContext httpContext) | ||||||
|  |     { | ||||||
|  |         var identity = new ClaimsIdentity("cookies"); | ||||||
| 
 | 
 | ||||||
|         public AutoAuthorizeMiddleware(RequestDelegate rd) |         identity.AddClaim(new Claim("sub", IDENTITY_ID)); | ||||||
|         { |         identity.AddClaim(new Claim("unique_name", IDENTITY_ID)); | ||||||
|             _next = rd; |         identity.AddClaim(new Claim(ClaimTypes.Name, IDENTITY_ID)); | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|         public async Task Invoke(HttpContext httpContext) |         httpContext.User.AddIdentity(identity); | ||||||
|         { |  | ||||||
|             var identity = new ClaimsIdentity("cookies"); |  | ||||||
| 
 | 
 | ||||||
|             identity.AddClaim(new Claim("sub", IDENTITY_ID)); |         await _next.Invoke(httpContext); | ||||||
|             identity.AddClaim(new Claim("unique_name", IDENTITY_ID)); |  | ||||||
|             identity.AddClaim(new Claim(ClaimTypes.Name, IDENTITY_ID)); |  | ||||||
| 
 |  | ||||||
|             httpContext.User.AddIdentity(identity); |  | ||||||
| 
 |  | ||||||
|             await _next.Invoke(httpContext); |  | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,43 +1,36 @@ | |||||||
| using Microsoft.AspNetCore.Hosting; | namespace Basket.FunctionalTests.Base; | ||||||
| using Microsoft.AspNetCore.TestHost; |  | ||||||
| using Microsoft.Extensions.Configuration; |  | ||||||
| using System.IO; |  | ||||||
| using System.Reflection; |  | ||||||
| 
 | 
 | ||||||
| namespace Basket.FunctionalTests.Base | public class BasketScenarioBase | ||||||
| { | { | ||||||
|     public class BasketScenarioBase |     private const string ApiUrlBase = "api/v1/basket"; | ||||||
|  | 
 | ||||||
|  |     public TestServer CreateServer() | ||||||
|     { |     { | ||||||
|         private const string ApiUrlBase = "api/v1/basket"; |         var path = Assembly.GetAssembly(typeof(BasketScenarioBase)) | ||||||
|  |             .Location; | ||||||
| 
 | 
 | ||||||
|         public TestServer CreateServer() |         var hostBuilder = new WebHostBuilder() | ||||||
|         { |             .UseContentRoot(Path.GetDirectoryName(path)) | ||||||
|             var path = Assembly.GetAssembly(typeof(BasketScenarioBase)) |             .ConfigureAppConfiguration(cb => | ||||||
|                .Location; |  | ||||||
| 
 |  | ||||||
|             var hostBuilder = new WebHostBuilder() |  | ||||||
|                 .UseContentRoot(Path.GetDirectoryName(path)) |  | ||||||
|                 .ConfigureAppConfiguration(cb => |  | ||||||
|                 { |  | ||||||
|                     cb.AddJsonFile("appsettings.json", optional: false) |  | ||||||
|                     .AddEnvironmentVariables(); |  | ||||||
|                 }).UseStartup<BasketTestsStartup>(); |  | ||||||
| 
 |  | ||||||
|             return new TestServer(hostBuilder); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         public static class Get |  | ||||||
|         { |  | ||||||
|             public static string GetBasket(int id) |  | ||||||
|             { |             { | ||||||
|                 return $"{ApiUrlBase}/{id}"; |                 cb.AddJsonFile("appsettings.json", optional: false) | ||||||
|             } |                 .AddEnvironmentVariables(); | ||||||
|         } |             }).UseStartup<BasketTestsStartup>(); | ||||||
| 
 | 
 | ||||||
|         public static class Post |         return new TestServer(hostBuilder); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static class Get | ||||||
|  |     { | ||||||
|  |         public static string GetBasket(int id) | ||||||
|         { |         { | ||||||
|             public static string Basket = $"{ApiUrlBase}/"; |             return $"{ApiUrlBase}/{id}"; | ||||||
|             public static string CheckoutOrder = $"{ApiUrlBase}/checkout"; |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     public static class Post | ||||||
|  |     { | ||||||
|  |         public static string Basket = $"{ApiUrlBase}/"; | ||||||
|  |         public static string CheckoutOrder = $"{ApiUrlBase}/checkout"; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,9 +1,4 @@ | |||||||
| using Microsoft.AspNetCore.Builder; |  | ||||||
| using Microsoft.AspNetCore.Routing; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Basket.API; |  | ||||||
| using Microsoft.Extensions.Configuration; |  | ||||||
| using Microsoft.Extensions.DependencyInjection; |  | ||||||
| using System; |  | ||||||
| 
 | 
 | ||||||
| namespace Basket.FunctionalTests.Base | namespace Basket.FunctionalTests.Base | ||||||
| { | { | ||||||
|  | |||||||
| @ -1,18 +1,13 @@ | |||||||
| using Microsoft.AspNetCore.TestHost; | namespace Basket.FunctionalTests.Base; | ||||||
| using System; |  | ||||||
| using System.Net.Http; |  | ||||||
| 
 | 
 | ||||||
| namespace Basket.FunctionalTests.Base | static class HttpClientExtensions | ||||||
| { | { | ||||||
|     static class HttpClientExtensions |     public static HttpClient CreateIdempotentClient(this TestServer server) | ||||||
|     { |     { | ||||||
|         public static HttpClient CreateIdempotentClient(this TestServer server) |         var client = server.CreateClient(); | ||||||
|         { |  | ||||||
|             var client = server.CreateClient(); |  | ||||||
| 
 | 
 | ||||||
|             client.DefaultRequestHeaders.Add("x-requestid", Guid.NewGuid().ToString()); |         client.DefaultRequestHeaders.Add("x-requestid", Guid.NewGuid().ToString()); | ||||||
| 
 | 
 | ||||||
|             return client; |         return client; | ||||||
|         } |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,95 +1,85 @@ | |||||||
| using Basket.FunctionalTests.Base; | namespace Basket.FunctionalTests; | ||||||
| using Microsoft.eShopOnContainers.Services.Basket.API.Model; |  | ||||||
| using System; |  | ||||||
| using System.Net.Http; |  | ||||||
| using System.Text; |  | ||||||
| using System.Text.Json; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| using Xunit; |  | ||||||
| 
 | 
 | ||||||
| namespace Basket.FunctionalTests | public class BasketScenarios | ||||||
|  |     : BasketScenarioBase | ||||||
| { | { | ||||||
|     public class BasketScenarios |     [Fact] | ||||||
|         : BasketScenarioBase |     public async Task Post_basket_and_response_ok_status_code() | ||||||
|     { |     { | ||||||
|         [Fact] |         using (var server = CreateServer()) | ||||||
|         public async Task Post_basket_and_response_ok_status_code() |  | ||||||
|         { |         { | ||||||
|             using (var server = CreateServer()) |             var content = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json"); | ||||||
|             { |             var response = await server.CreateClient() | ||||||
|                 var content = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json"); |                 .PostAsync(Post.Basket, content); | ||||||
|                 var response = await server.CreateClient() |  | ||||||
|                    .PostAsync(Post.Basket, content); |  | ||||||
| 
 | 
 | ||||||
|                 response.EnsureSuccessStatusCode(); |             response.EnsureSuccessStatusCode(); | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         [Fact] |  | ||||||
|         public async Task Get_basket_and_response_ok_status_code() |  | ||||||
|         { |  | ||||||
|             using (var server = CreateServer()) |  | ||||||
|             { |  | ||||||
|                 var response = await server.CreateClient() |  | ||||||
|                    .GetAsync(Get.GetBasket(1)); |  | ||||||
| 
 |  | ||||||
|                 response.EnsureSuccessStatusCode(); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         [Fact] |  | ||||||
|         public async Task Send_Checkout_basket_and_response_ok_status_code() |  | ||||||
|         { |  | ||||||
|             using (var server = CreateServer()) |  | ||||||
|             { |  | ||||||
|                 var contentBasket = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json"); |  | ||||||
| 
 |  | ||||||
|                 await server.CreateClient() |  | ||||||
|                    .PostAsync(Post.Basket, contentBasket); |  | ||||||
| 
 |  | ||||||
|                 var contentCheckout = new StringContent(BuildCheckout(), UTF8Encoding.UTF8, "application/json"); |  | ||||||
| 
 |  | ||||||
|                 var response = await server.CreateIdempotentClient() |  | ||||||
|                    .PostAsync(Post.CheckoutOrder, contentCheckout); |  | ||||||
| 
 |  | ||||||
|                 response.EnsureSuccessStatusCode(); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         string BuildBasket() |  | ||||||
|         { |  | ||||||
|             var order = new CustomerBasket(AutoAuthorizeMiddleware.IDENTITY_ID); |  | ||||||
| 
 |  | ||||||
|             order.Items.Add(new BasketItem |  | ||||||
|             { |  | ||||||
|                 ProductId = 1, |  | ||||||
|                 ProductName = ".NET Bot Black Hoodie", |  | ||||||
|                 UnitPrice = 10, |  | ||||||
|                 Quantity = 1 |  | ||||||
|             }); |  | ||||||
| 
 |  | ||||||
|             return JsonSerializer.Serialize(order); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         string BuildCheckout() |  | ||||||
|         { |  | ||||||
|             var checkoutBasket = new |  | ||||||
|             { |  | ||||||
|                 City = "city", |  | ||||||
|                 Street = "street", |  | ||||||
|                 State = "state", |  | ||||||
|                 Country = "coutry", |  | ||||||
|                 ZipCode = "zipcode", |  | ||||||
|                 CardNumber = "1234567890123456", |  | ||||||
|                 CardHolderName = "CardHolderName", |  | ||||||
|                 CardExpiration = DateTime.UtcNow.AddDays(1), |  | ||||||
|                 CardSecurityNumber = "123", |  | ||||||
|                 CardTypeId = 1, |  | ||||||
|                 Buyer = "Buyer", |  | ||||||
|                 RequestId = Guid.NewGuid() |  | ||||||
|             }; |  | ||||||
| 
 |  | ||||||
|             return JsonSerializer.Serialize(checkoutBasket); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     [Fact] | ||||||
|  |     public async Task Get_basket_and_response_ok_status_code() | ||||||
|  |     { | ||||||
|  |         using (var server = CreateServer()) | ||||||
|  |         { | ||||||
|  |             var response = await server.CreateClient() | ||||||
|  |                 .GetAsync(Get.GetBasket(1)); | ||||||
|  | 
 | ||||||
|  |             response.EnsureSuccessStatusCode(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     [Fact] | ||||||
|  |     public async Task Send_Checkout_basket_and_response_ok_status_code() | ||||||
|  |     { | ||||||
|  |         using (var server = CreateServer()) | ||||||
|  |         { | ||||||
|  |             var contentBasket = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json"); | ||||||
|  | 
 | ||||||
|  |             await server.CreateClient() | ||||||
|  |                 .PostAsync(Post.Basket, contentBasket); | ||||||
|  | 
 | ||||||
|  |             var contentCheckout = new StringContent(BuildCheckout(), UTF8Encoding.UTF8, "application/json"); | ||||||
|  | 
 | ||||||
|  |             var response = await server.CreateIdempotentClient() | ||||||
|  |                 .PostAsync(Post.CheckoutOrder, contentCheckout); | ||||||
|  | 
 | ||||||
|  |             response.EnsureSuccessStatusCode(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     string BuildBasket() | ||||||
|  |     { | ||||||
|  |         var order = new CustomerBasket(AutoAuthorizeMiddleware.IDENTITY_ID); | ||||||
|  | 
 | ||||||
|  |         order.Items.Add(new BasketItem | ||||||
|  |         { | ||||||
|  |             ProductId = 1, | ||||||
|  |             ProductName = ".NET Bot Black Hoodie", | ||||||
|  |             UnitPrice = 10, | ||||||
|  |             Quantity = 1 | ||||||
|  |         }); | ||||||
|  | 
 | ||||||
|  |         return JsonSerializer.Serialize(order); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     string BuildCheckout() | ||||||
|  |     { | ||||||
|  |         var checkoutBasket = new | ||||||
|  |         { | ||||||
|  |             City = "city", | ||||||
|  |             Street = "street", | ||||||
|  |             State = "state", | ||||||
|  |             Country = "coutry", | ||||||
|  |             ZipCode = "zipcode", | ||||||
|  |             CardNumber = "1234567890123456", | ||||||
|  |             CardHolderName = "CardHolderName", | ||||||
|  |             CardExpiration = DateTime.UtcNow.AddDays(1), | ||||||
|  |             CardSecurityNumber = "123", | ||||||
|  |             CardTypeId = 1, | ||||||
|  |             Buyer = "Buyer", | ||||||
|  |             RequestId = Guid.NewGuid() | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         return JsonSerializer.Serialize(checkoutBasket); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,12 +1,4 @@ | |||||||
| using Basket.FunctionalTests.Base; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Basket.API.Infrastructure.Repositories; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Basket.API.Model; |  | ||||||
| using Microsoft.Extensions.DependencyInjection; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using StackExchange.Redis; |  | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| using Xunit; |  | ||||||
| 
 | 
 | ||||||
| namespace Basket.FunctionalTests | namespace Basket.FunctionalTests | ||||||
| { | { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user