BAD MISC - playing with tests
This commit is contained in:
		
							parent
							
								
									d62ebcb791
								
							
						
					
					
						commit
						91247ec52e
					
				| @ -1,7 +1,7 @@ | |||||||
| namespace Microsoft.eShopOnContainers.Services.Basket.API.Controllers; | namespace Microsoft.eShopOnContainers.Services.Basket.API.Controllers; | ||||||
| 
 | 
 | ||||||
| [Route("api/v1/[controller]")]
 | [Route("api/v1/[controller]")]
 | ||||||
| [Authorize] | //[Authorize] | ||||||
| [ApiController] | [ApiController] | ||||||
| public class BasketController : ControllerBase | public class BasketController : ControllerBase | ||||||
| { | { | ||||||
|  | |||||||
| @ -1,9 +1,4 @@ | |||||||
| using Autofac.Core; | var builder = WebApplication.CreateBuilder(new WebApplicationOptions | ||||||
| using Microsoft.Azure.Amqp.Framing; |  | ||||||
| using Microsoft.Extensions.Configuration; |  | ||||||
| 
 |  | ||||||
| var appName = "Basket.API"; |  | ||||||
| var builder = WebApplication.CreateBuilder(new WebApplicationOptions |  | ||||||
| { | { | ||||||
|     Args = args, |     Args = args, | ||||||
|     ApplicationName = typeof(Program).Assembly.FullName, |     ApplicationName = typeof(Program).Assembly.FullName, | ||||||
| @ -63,6 +58,7 @@ JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Remove("sub"); | |||||||
| 
 | 
 | ||||||
| var identityUrl = builder.Configuration.GetValue<string>("IdentityUrl"); | var identityUrl = builder.Configuration.GetValue<string>("IdentityUrl"); | ||||||
| 
 | 
 | ||||||
|  | /* | ||||||
| builder.Services.AddAuthentication("Bearer").AddJwtBearer(options => | builder.Services.AddAuthentication("Bearer").AddJwtBearer(options => | ||||||
| { | { | ||||||
|     options.Authority = identityUrl; |     options.Authority = identityUrl; | ||||||
| @ -78,6 +74,7 @@ builder.Services.AddAuthorization(options => | |||||||
|         policy.RequireClaim("scope", "basket"); |         policy.RequireClaim("scope", "basket"); | ||||||
|     }); |     }); | ||||||
| }); | }); | ||||||
|  | */ | ||||||
| 
 | 
 | ||||||
| builder.Services.AddCustomHealthCheck(builder.Configuration); | builder.Services.AddCustomHealthCheck(builder.Configuration); | ||||||
| 
 | 
 | ||||||
| @ -164,7 +161,6 @@ builder.WebHost.UseKestrel(options => | |||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
| }); | }); | ||||||
| builder.WebHost.CaptureStartupErrors(false); |  | ||||||
| builder.Host.UseSerilog(CreateSerilogLogger(builder.Configuration)); | builder.Host.UseSerilog(CreateSerilogLogger(builder.Configuration)); | ||||||
| builder.WebHost.UseFailing(options => | builder.WebHost.UseFailing(options => | ||||||
| { | { | ||||||
| @ -172,6 +168,7 @@ builder.WebHost.UseFailing(options => | |||||||
|     options.NotFilteredPaths.AddRange(new[] { "/hc", "/liveness" }); |     options.NotFilteredPaths.AddRange(new[] { "/hc", "/liveness" }); | ||||||
| }); | }); | ||||||
| var app = builder.Build(); | var app = builder.Build(); | ||||||
|  | app.MapGet("hello", () => "hello"); | ||||||
| 
 | 
 | ||||||
| if (app.Environment.IsDevelopment()) | if (app.Environment.IsDevelopment()) | ||||||
| { | { | ||||||
| @ -196,13 +193,19 @@ app.UseSwagger() | |||||||
|                 setup.OAuthAppName("Basket Swagger UI"); |                 setup.OAuthAppName("Basket Swagger UI"); | ||||||
|             }); |             }); | ||||||
| 
 | 
 | ||||||
|  | app.Use(del => ctx => | ||||||
|  | { | ||||||
|  |     ctx.Response.StatusCode = 200; | ||||||
|  |     ctx.Response.WriteAsync("hello"); | ||||||
|  |     return Task.CompletedTask; | ||||||
|  |     //return del(ctx); | ||||||
|  | }); | ||||||
| app.UseRouting(); | app.UseRouting(); | ||||||
| app.UseCors("CorsPolicy"); | app.UseCors("CorsPolicy"); | ||||||
| app.UseAuthentication(); | //app.UseAuthentication(); | ||||||
| app.UseAuthorization(); | //app.UseAuthorization(); | ||||||
| app.UseStaticFiles(); | app.UseStaticFiles(); | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| app.MapGrpcService<BasketService>(); | app.MapGrpcService<BasketService>(); | ||||||
| app.MapDefaultControllerRoute(); | app.MapDefaultControllerRoute(); | ||||||
| app.MapControllers(); | app.MapControllers(); | ||||||
| @ -271,6 +274,7 @@ Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) | |||||||
|     var port = config.GetValue("PORT", 80); |     var port = config.GetValue("PORT", 80); | ||||||
|     return (port, grpcPort); |     return (port, grpcPort); | ||||||
| } | } | ||||||
|  | 
 | ||||||
| void ConfigureEventBus(IApplicationBuilder app) | void ConfigureEventBus(IApplicationBuilder app) | ||||||
| { | { | ||||||
|     var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>(); |     var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>(); | ||||||
| @ -278,18 +282,15 @@ void ConfigureEventBus(IApplicationBuilder app) | |||||||
|     eventBus.Subscribe<ProductPriceChangedIntegrationEvent, ProductPriceChangedIntegrationEventHandler>(); |     eventBus.Subscribe<ProductPriceChangedIntegrationEvent, ProductPriceChangedIntegrationEventHandler>(); | ||||||
|     eventBus.Subscribe<OrderStartedIntegrationEvent, OrderStartedIntegrationEventHandler>(); |     eventBus.Subscribe<OrderStartedIntegrationEvent, OrderStartedIntegrationEventHandler>(); | ||||||
| } | } | ||||||
|  | 
 | ||||||
| public partial class Program | public partial class Program | ||||||
| { | { | ||||||
| 
 |     private static string Namespace = typeof(Program).Assembly.GetName().Name; | ||||||
|     public static string Namespace = typeof(Program).Assembly.GetName().Name; |  | ||||||
|     public static string AppName = Namespace.Substring(Namespace.LastIndexOf('.', Namespace.LastIndexOf('.') - 1) + 1); |     public static string AppName = Namespace.Substring(Namespace.LastIndexOf('.', Namespace.LastIndexOf('.') - 1) + 1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| public static class CustomExtensionMethods | public static class CustomExtensionMethods | ||||||
| { | { | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
|     public static IServiceCollection RegisterEventBus(this IServiceCollection services, IConfiguration configuration) |     public static IServiceCollection RegisterEventBus(this IServiceCollection services, IConfiguration configuration) | ||||||
|     { |     { | ||||||
|         if (configuration.GetValue<bool>("AzureServiceBusEnabled")) |         if (configuration.GetValue<bool>("AzureServiceBusEnabled")) | ||||||
|  | |||||||
| @ -18,6 +18,7 @@ class AutoAuthorizeMiddleware | |||||||
|         identity.AddClaim(new Claim("sub", IDENTITY_ID)); |         identity.AddClaim(new Claim("sub", IDENTITY_ID)); | ||||||
|         identity.AddClaim(new Claim("unique_name", IDENTITY_ID)); |         identity.AddClaim(new Claim("unique_name", IDENTITY_ID)); | ||||||
|         identity.AddClaim(new Claim(ClaimTypes.Name, IDENTITY_ID)); |         identity.AddClaim(new Claim(ClaimTypes.Name, IDENTITY_ID)); | ||||||
|  |         identity.AddClaim(new Claim("scope", "basket")); | ||||||
| 
 | 
 | ||||||
|         httpContext.User.AddIdentity(identity); |         httpContext.User.AddIdentity(identity); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,13 +0,0 @@ | |||||||
| namespace Basket.FunctionalTests.Base; |  | ||||||
| 
 |  | ||||||
| static class HttpClientExtensions |  | ||||||
| { |  | ||||||
|     public static HttpClient CreateIdempotentClient(this TestServer server) |  | ||||||
|     { |  | ||||||
|         var client = server.CreateClient(); |  | ||||||
| 
 |  | ||||||
|         client.DefaultRequestHeaders.Add("x-requestid", Guid.NewGuid().ToString()); |  | ||||||
| 
 |  | ||||||
|         return client; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,15 +1,43 @@ | |||||||
| namespace Basket.FunctionalTests; | using System.Linq; | ||||||
|  | using Microsoft.AspNetCore.Mvc.Testing; | ||||||
|  | using Microsoft.Extensions.Hosting; | ||||||
| 
 | 
 | ||||||
| public class BasketScenarios | namespace Basket.FunctionalTests; | ||||||
|     : BasketScenarioBase | 
 | ||||||
|  | public class TestWebApplicationFactory<TProgram> : WebApplicationFactory<TProgram> where TProgram : class | ||||||
| { | { | ||||||
|  |     protected override void ConfigureWebHost(IWebHostBuilder builder) | ||||||
|  |     { | ||||||
|  |         base.ConfigureWebHost(builder); | ||||||
|  |         builder.Configure(app => | ||||||
|  |         { | ||||||
|  |             app.UseMiddleware<AutoAuthorizeMiddleware>(); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     protected override IHost CreateHost(IHostBuilder builder) | ||||||
|  |     { | ||||||
|  |         return base.CreateHost(builder); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | public class BasketScenarios : BasketScenarioBase, IClassFixture<TestWebApplicationFactory<Program>> | ||||||
|  | { | ||||||
|  |     private readonly TestWebApplicationFactory<Program> _factory; | ||||||
|  |     private readonly HttpClient _httpClient; | ||||||
|  | 
 | ||||||
|  |     public BasketScenarios(TestWebApplicationFactory<Program> factory) | ||||||
|  |     { | ||||||
|  |         _factory = factory; | ||||||
|  |         _httpClient = _factory.CreateClient(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     [Fact] |     [Fact] | ||||||
|     public async Task Post_basket_and_response_ok_status_code() |     public async Task Post_basket_and_response_ok_status_code() | ||||||
|     { |     { | ||||||
|         using var server = CreateServer(); |  | ||||||
|         var content = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json"); |         var content = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json"); | ||||||
|         var response = await server.CreateClient() |         var uri = "/api/v1/basket/"; | ||||||
|             .PostAsync(Post.Basket, content); |         var response = await _httpClient.PostAsync(uri, content); | ||||||
| 
 | 
 | ||||||
|         response.EnsureSuccessStatusCode(); |         response.EnsureSuccessStatusCode(); | ||||||
|     } |     } | ||||||
| @ -17,25 +45,25 @@ public class BasketScenarios | |||||||
|     [Fact] |     [Fact] | ||||||
|     public async Task Get_basket_and_response_ok_status_code() |     public async Task Get_basket_and_response_ok_status_code() | ||||||
|     { |     { | ||||||
|         using var server = CreateServer(); |         var response = await _httpClient | ||||||
|         var response = await server.CreateClient() |  | ||||||
|             .GetAsync(Get.GetBasket(1)); |             .GetAsync(Get.GetBasket(1)); | ||||||
| 
 |  | ||||||
|         response.EnsureSuccessStatusCode(); |         response.EnsureSuccessStatusCode(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     [Fact] |     [Fact] | ||||||
|     public async Task Send_Checkout_basket_and_response_ok_status_code() |     public async Task Send_Checkout_basket_and_response_ok_status_code() | ||||||
|     { |     { | ||||||
|         using var server = CreateServer(); |  | ||||||
|         var contentBasket = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json"); |         var contentBasket = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json"); | ||||||
| 
 | 
 | ||||||
|         await server.CreateClient() |         await _httpClient | ||||||
|             .PostAsync(Post.Basket, contentBasket); |             .PostAsync(Post.Basket, contentBasket); | ||||||
| 
 | 
 | ||||||
|         var contentCheckout = new StringContent(BuildCheckout(), UTF8Encoding.UTF8, "application/json"); |         var contentCheckout = new StringContent(BuildCheckout(), UTF8Encoding.UTF8, "application/json") | ||||||
|  |         { | ||||||
|  |              Headers = { { "x-requestid", Guid.NewGuid().ToString() } } | ||||||
|  |         }; | ||||||
| 
 | 
 | ||||||
|         var response = await server.CreateIdempotentClient() |         var response = await _httpClient | ||||||
|             .PostAsync(Post.CheckoutOrder, contentCheckout); |             .PostAsync(Post.CheckoutOrder, contentCheckout); | ||||||
| 
 | 
 | ||||||
|         response.EnsureSuccessStatusCode(); |         response.EnsureSuccessStatusCode(); | ||||||
|  | |||||||
| @ -1,11 +0,0 @@ | |||||||
| namespace Ordering.FunctionalTests; |  | ||||||
| 
 |  | ||||||
| static class HttpClientExtensions |  | ||||||
| { |  | ||||||
|     public static HttpClient CreateIdempotentClient(this TestServer server) |  | ||||||
|     { |  | ||||||
|         var client = server.CreateClient(); |  | ||||||
|         client.DefaultRequestHeaders.Add("x-requestid", Guid.NewGuid().ToString()); |  | ||||||
|         return client; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -23,8 +23,11 @@ namespace Ordering.FunctionalTests | |||||||
|         public async Task Cancel_order_no_order_created_bad_request_response() |         public async Task Cancel_order_no_order_created_bad_request_response() | ||||||
|         { |         { | ||||||
|             using var server = CreateServer(); |             using var server = CreateServer(); | ||||||
|             var content = new StringContent(BuildOrder(), UTF8Encoding.UTF8, "application/json"); |             var content = new StringContent(BuildOrder(), UTF8Encoding.UTF8, "application/json") | ||||||
|             var response = await server.CreateIdempotentClient() |             { | ||||||
|  |                 Headers = { { "x-requestid", Guid.NewGuid().ToString() } } | ||||||
|  |             }; | ||||||
|  |             var response = await server.CreateClient() | ||||||
|                 .PutAsync(Put.CancelOrder, content); |                 .PutAsync(Put.CancelOrder, content); | ||||||
| 
 | 
 | ||||||
|             Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); |             Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); | ||||||
| @ -34,8 +37,11 @@ namespace Ordering.FunctionalTests | |||||||
|         public async Task Ship_order_no_order_created_bad_request_response() |         public async Task Ship_order_no_order_created_bad_request_response() | ||||||
|         { |         { | ||||||
|             using var server = CreateServer(); |             using var server = CreateServer(); | ||||||
|             var content = new StringContent(BuildOrder(), UTF8Encoding.UTF8, "application/json"); |             var content = new StringContent(BuildOrder(), UTF8Encoding.UTF8, "application/json") | ||||||
|             var response = await server.CreateIdempotentClient() |             { | ||||||
|  |                 Headers = { { "x-requestid", Guid.NewGuid().ToString() } } | ||||||
|  |             }; | ||||||
|  |             var response = await server.CreateClient() | ||||||
|                 .PutAsync(Put.ShipOrder, content); |                 .PutAsync(Put.ShipOrder, content); | ||||||
| 
 | 
 | ||||||
|             Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); |             Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); | ||||||
|  | |||||||
| @ -1,5 +1,4 @@ | |||||||
| var appName = "Payment.API"; | var builder = WebApplication.CreateBuilder(new WebApplicationOptions | ||||||
| var builder = WebApplication.CreateBuilder(new WebApplicationOptions |  | ||||||
| { | { | ||||||
|     Args = args, |     Args = args, | ||||||
|     ApplicationName = typeof(Program).Assembly.FullName, |     ApplicationName = typeof(Program).Assembly.FullName, | ||||||
| @ -165,27 +164,6 @@ Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) | |||||||
|         .CreateLogger(); |         .CreateLogger(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| IConfiguration GetConfiguration() |  | ||||||
| { |  | ||||||
|     var builder = new ConfigurationBuilder() |  | ||||||
|         .SetBasePath(Directory.GetCurrentDirectory()) |  | ||||||
|         .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) |  | ||||||
|         .AddEnvironmentVariables(); |  | ||||||
| 
 |  | ||||||
|     var config = builder.Build(); |  | ||||||
| 
 |  | ||||||
|     if (config.GetValue<bool>("UseVault", false)) |  | ||||||
|     { |  | ||||||
|         TokenCredential credential = new ClientSecretCredential( |  | ||||||
|             config["Vault:TenantId"], |  | ||||||
|             config["Vault:ClientId"], |  | ||||||
|             config["Vault:ClientSecret"]); |  | ||||||
|         builder.AddAzureKeyVault(new Uri($"https://{config["Vault:Name"]}.vault.azure.net/"), credential); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return builder.Build(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| public partial class Program | public partial class Program | ||||||
| { | { | ||||||
|     public static string Namespace = typeof(Program).Assembly.GetName().Name; |     public static string Namespace = typeof(Program).Assembly.GetName().Name; | ||||||
|  | |||||||
| @ -1,11 +0,0 @@ | |||||||
| namespace FunctionalTests.Extensions; |  | ||||||
| 
 |  | ||||||
| static class HttpClientExtensions |  | ||||||
| { |  | ||||||
|     public static HttpClient CreateIdempotentClient(this TestServer server) |  | ||||||
|     { |  | ||||||
|         var client = server.CreateClient(); |  | ||||||
|         client.DefaultRequestHeaders.Add("x-requestid", Guid.NewGuid().ToString()); |  | ||||||
|         return client; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -8,14 +8,11 @@ global using Microsoft.AspNetCore.Hosting; | |||||||
| global using Microsoft.Extensions.Configuration; | global using Microsoft.Extensions.Configuration; | ||||||
| global using System.IO; | global using System.IO; | ||||||
| global using System.Reflection; | global using System.Reflection; | ||||||
| global using FunctionalTests.Middleware; |  | ||||||
| global using Microsoft.AspNetCore.Builder; |  | ||||||
| global using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; | global using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; | ||||||
| global using Microsoft.eShopOnContainers.Services.Catalog.API.Infrastructure; | global using Microsoft.eShopOnContainers.Services.Catalog.API.Infrastructure; | ||||||
| global using Microsoft.Extensions.DependencyInjection; | global using Microsoft.Extensions.DependencyInjection; | ||||||
| global using Microsoft.Extensions.Logging; | global using Microsoft.Extensions.Logging; | ||||||
| global using Microsoft.Extensions.Options; | global using Microsoft.Extensions.Options; | ||||||
| global using FunctionalTests.Extensions; |  | ||||||
| global using FunctionalTests.Services.Basket; | global using FunctionalTests.Services.Basket; | ||||||
| global using Microsoft.eShopOnContainers.Services.Basket.API.Model; | global using Microsoft.eShopOnContainers.Services.Basket.API.Model; | ||||||
| global using Microsoft.eShopOnContainers.WebMVC.ViewModels; | global using Microsoft.eShopOnContainers.WebMVC.ViewModels; | ||||||
|  | |||||||
| @ -11,21 +11,32 @@ public class OrderingScenarios : OrderingScenariosBase | |||||||
|         var cityExpected = $"city-{Guid.NewGuid()}"; |         var cityExpected = $"city-{Guid.NewGuid()}"; | ||||||
|         var orderStatusExpected = "cancelled"; |         var orderStatusExpected = "cancelled"; | ||||||
| 
 | 
 | ||||||
|         var basketClient = basketServer.CreateIdempotentClient(); |         var basketClient = basketServer.CreateClient(); | ||||||
|         var orderClient = orderServer.CreateIdempotentClient(); |         var orderClient = orderServer.CreateClient(); | ||||||
| 
 | 
 | ||||||
|         // GIVEN a basket is created  |         // GIVEN a basket is created  | ||||||
|         var contentBasket = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json"); |         var contentBasket = new StringContent(BuildBasket(), UTF8Encoding.UTF8, "application/json") | ||||||
|  |         { | ||||||
|  |             Headers = { { "x-requestid", Guid.NewGuid().ToString() } } | ||||||
|  |         }; | ||||||
|         await basketClient.PostAsync(BasketScenariosBase.Post.CreateBasket, contentBasket); |         await basketClient.PostAsync(BasketScenariosBase.Post.CreateBasket, contentBasket); | ||||||
| 
 | 
 | ||||||
|         // AND basket checkout is sent |         // AND basket checkout is sent | ||||||
|         await basketClient.PostAsync(BasketScenariosBase.Post.CheckoutOrder, new StringContent(BuildCheckout(cityExpected), UTF8Encoding.UTF8, "application/json")); |         await basketClient.PostAsync( | ||||||
|  |             BasketScenariosBase.Post.CheckoutOrder, | ||||||
|  |             new StringContent(BuildCheckout(cityExpected), UTF8Encoding.UTF8, "application/json") | ||||||
|  |             { | ||||||
|  |                 Headers = { { "x-requestid", Guid.NewGuid().ToString() } } | ||||||
|  |             }); | ||||||
| 
 | 
 | ||||||
|         // WHEN Order is created in Ordering.api |         // WHEN Order is created in Ordering.api | ||||||
|         var newOrder = await TryGetNewOrderCreated(cityExpected, orderClient); |         var newOrder = await TryGetNewOrderCreated(cityExpected, orderClient); | ||||||
| 
 | 
 | ||||||
|         // AND Order is cancelled in Ordering.api |         // AND Order is cancelled in Ordering.api | ||||||
|         await orderClient.PutAsync(OrderingScenariosBase.Put.CancelOrder, new StringContent(BuildCancelOrder(newOrder.OrderNumber), UTF8Encoding.UTF8, "application/json")); |         await orderClient.PutAsync(OrderingScenariosBase.Put.CancelOrder, new StringContent(BuildCancelOrder(newOrder.OrderNumber), UTF8Encoding.UTF8, "application/json") | ||||||
|  |         { | ||||||
|  |             Headers = { { "x-requestid", Guid.NewGuid().ToString() } } | ||||||
|  |         }); | ||||||
| 
 | 
 | ||||||
|         // AND the requested order is retrieved |         // AND the requested order is retrieved | ||||||
|         var order = await TryGetOrder(newOrder.OrderNumber, orderClient); |         var order = await TryGetOrder(newOrder.OrderNumber, orderClient); | ||||||
|  | |||||||
| @ -53,7 +53,7 @@ public class BasketService : IBasketService | |||||||
|         var uri = API.Basket.CheckoutBasket(_basketByPassUrl); |         var uri = API.Basket.CheckoutBasket(_basketByPassUrl); | ||||||
|         var basketContent = new StringContent(JsonSerializer.Serialize(basket), Encoding.UTF8, "application/json"); |         var basketContent = new StringContent(JsonSerializer.Serialize(basket), Encoding.UTF8, "application/json"); | ||||||
| 
 | 
 | ||||||
|         _logger.LogInformation("Uri chechout {uri}", uri); |         _logger.LogInformation("Uri checkout {uri}", uri); | ||||||
| 
 | 
 | ||||||
|         var response = await _apiClient.PostAsync(uri, basketContent); |         var response = await _apiClient.PostAsync(uri, basketContent); | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user