public async Task GetItem_NoAddItemBefore_EmptyCartReturned() { // Setup test server and client using var server = await _host.StartAsync(); var httpClient = server.GetTestClient(); string userId = Guid.NewGuid().ToString(); // Create a GRPC communication channel between the client and the server var channel = GrpcChannel.ForAddress(httpClient.BaseAddress, new GrpcChannelOptions { HttpClient = httpClient }); var cartClient = new CartServiceClient(channel); var request = new GetCartRequest { UserId = userId, }; var cart = await cartClient.GetCartAsync(request); Assert.NotNull(cart); // All grpc objects implement IEquitable, so we can compare equality with by-value semantics Assert.Equal(new Cart(), cart); }
public async ValueTask <IResolveResult> GetCartAsync(ResolverContext context) { var input = context.GetArgument <GetCartRequest>("input"); var result = await _cartServiceClient.GetCartAsync(input); return(As(result.Result)); }
//[Auth(Policy = "access_cart_api")] public async Task <IActionResult> Get(Guid id) { return(Ok(await _cartServiceClient.GetCartAsync(new GetCartRequest { CartId = id.ToString() }) )); }
public async Task AddItem_New_Inserted() { // Setup test server and client using var server = await _host.StartAsync(); var httpClient = server.GetTestClient(); string userId = Guid.NewGuid().ToString(); // Create a GRPC communication channel between the client and the server var channel = GrpcChannel.ForAddress(httpClient.BaseAddress, new GrpcChannelOptions { HttpClient = httpClient }); // Create a proxy object to work with the server var client = new CartServiceClient(channel); var request = new AddItemRequest { UserId = userId, Item = new CartItem { ProductId = "1", Quantity = 1 } }; await client.AddItemAsync(request); var getCartRequest = new GetCartRequest { UserId = userId }; var cart = await client.GetCartAsync(getCartRequest); Assert.NotNull(cart); Assert.Equal(userId, cart.UserId); Assert.Single(cart.Items); await client.EmptyCartAsync(new EmptyCartRequest { UserId = userId }); cart = await client.GetCartAsync(getCartRequest); Assert.Empty(cart.Items); }
public async ValueTask <IResolveResult> GetCartAsync(ResolverContext context) { return(await GrpcClientCatch( "cart-service", async headers => { var input = context.GetArgument <GetCartRequest>("input"); var result = await _cartServiceClient.GetCartAsync(input, headers); return As(result.Result); })); }
public async Task AddItem_New_Inserted() { string userId = Guid.NewGuid().ToString(); // Construct server's Uri string targetUri = $"{serverHostName}:{port}"; // Create a GRPC communication channel between the client and the server var channel = new Channel(targetUri, ChannelCredentials.Insecure); // Create a proxy object to work with the server var client = new CartServiceClient(channel); var request = new AddItemRequest { UserId = userId, Item = new CartItem { ProductId = "1", Quantity = 1 } }; await client.AddItemAsync(request); var getCartRequest = new GetCartRequest { UserId = userId }; var cart = await client.GetCartAsync(getCartRequest); Assert.NotNull(cart); Assert.Equal(userId, cart.UserId); Assert.Single(cart.Items); await client.EmptyCartAsync(new EmptyCartRequest { UserId = userId }); cart = await client.GetCartAsync(getCartRequest); Assert.Empty(cart.Items); }
public async Task AddItem_New_Inserted() { string userId = Guid.NewGuid().ToString(); // Create a GRPC communication channel between the client and the server using (var channel = GrpcChannel.ForAddress(TargetUrl)) { // Create a proxy object to work with the server var client = new CartServiceClient(channel); var request = new AddItemRequest { UserId = userId, Item = new CartItem { ProductId = "1", Quantity = 1 } }; await client.AddItemAsync(request); var getCartRequest = new GetCartRequest { UserId = userId }; var cart = await client.GetCartAsync(getCartRequest); Assert.NotNull(cart); Assert.Equal(userId, cart.UserId); Assert.Single(cart.Items); await client.EmptyCartAsync(new EmptyCartRequest { UserId = userId }); cart = await client.GetCartAsync(getCartRequest); Assert.Empty(cart.Items); } }
public async Task AddItem_ItemExists_Updated() { // Setup test server and client using var server = await _host.StartAsync(); var httpClient = server.GetTestClient(); string userId = Guid.NewGuid().ToString(); // Create a GRPC communication channel between the client and the server var channel = GrpcChannel.ForAddress(httpClient.BaseAddress, new GrpcChannelOptions { HttpClient = httpClient }); var client = new CartServiceClient(channel); var request = new AddItemRequest { UserId = userId, Item = new CartItem { ProductId = "1", Quantity = 1 } }; // First add - nothing should fail await client.AddItemAsync(request); // Second add of existing product - quantity should be updated await client.AddItemAsync(request); var getCartRequest = new GetCartRequest { UserId = userId }; var cart = await client.GetCartAsync(getCartRequest); Assert.NotNull(cart); Assert.Equal(userId, cart.UserId); Assert.Single(cart.Items); Assert.Equal(2, cart.Items[0].Quantity); // Cleanup await client.EmptyCartAsync(new EmptyCartRequest { UserId = userId }); }
public async Task AddItem_ItemExists_Updated() { string userId = Guid.NewGuid().ToString(); // Construct server's Uri string targetUri = $"{serverHostName}:{port}"; // Create a GRPC communication channel between the client and the server var channel = new Channel(targetUri, ChannelCredentials.Insecure); var client = new CartServiceClient(channel); var request = new AddItemRequest { UserId = userId, Item = new CartItem { ProductId = "1", Quantity = 1 } }; // First add - nothing should fail await client.AddItemAsync(request); // Second add of existing product - quantity should be updated await client.AddItemAsync(request); var getCartRequest = new GetCartRequest { UserId = userId }; var cart = await client.GetCartAsync(getCartRequest); Assert.NotNull(cart); Assert.Equal(userId, cart.UserId); Assert.Single(cart.Items); Assert.Equal(2, cart.Items[0].Quantity); // Cleanup await client.EmptyCartAsync(new EmptyCartRequest { UserId = userId }); }
public async Task GetItem_NoAddItemBefore_EmptyCartReturned() { string userId = Guid.NewGuid().ToString(); // Create a GRPC communication channel between the client and the server using (var channel = GrpcChannel.ForAddress(TargetUrl)) { var client = new CartServiceClient(channel); var request = new GetCartRequest { UserId = userId, }; var cart = await client.GetCartAsync(request); Assert.NotNull(cart); // All grpc objects implement IEquitable, so we can compare equality with by-value semantics Assert.Equal(new Cart(), cart); } }
public async Task GetItem_NoAddItemBefore_EmptyCartReturned() { string userId = Guid.NewGuid().ToString(); // Construct server's Uri string targetUri = $"{serverHostName}:{port}"; // Create a GRPC communication channel between the client and the server var channel = new Channel(targetUri, ChannelCredentials.Insecure); var client = new CartServiceClient(channel); var request = new GetCartRequest { UserId = userId, }; var cart = await client.GetCartAsync(request); Assert.NotNull(cart); // All grpc objects implement IEquitable, so we can compare equality with by-value semantics Assert.Equal(new Cart(), cart); }