public void GetCustomers_NoCustomersFound_ThrowsHttpRequestException( [Frozen] MockHttpMessageHandler handler, [Frozen] HttpClient httpClient, Uri uri, CustomerApiClient sut ) { //Arrange httpClient.BaseAddress = uri; handler.When(HttpMethod.Get, $"{uri}*") .Respond(HttpStatusCode.NotFound); //Act Func <Task> func = async() => await sut.GetCustomersAsync( 0, 10, null, null, null ); //Assert func.Should().Throw <HttpRequestException>() .WithMessage("Response status code does not indicate success: 404 (Not Found)."); }
public async Task GetCustomers_IndividualCustomersFound_ReturnsIndividualCustomer( [Frozen] MockHttpMessageHandler handler, [Frozen] HttpClient httpClient, Uri uri, List <models.GetCustomers.IndividualCustomer> list, CustomerApiClient sut ) { //Arrange foreach (var item in list) { item.CustomerType = CustomerType.Individual; } var customers = new models.GetCustomers.GetCustomersResponse { Customers = list.ToList <models.GetCustomers.Customer>(), TotalCustomers = list.Count }; httpClient.BaseAddress = uri; handler.When(HttpMethod.Get, $"{uri}*") .Respond(HttpStatusCode.OK, new StringContent( JsonSerializer.Serialize(customers, new JsonSerializerOptions { Converters = { new JsonStringEnumConverter(), new CustomerConverter < models.GetCustomers.Customer, models.GetCustomers.StoreCustomer, models.GetCustomers.IndividualCustomer>() }, IgnoreReadOnlyProperties = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase }), Encoding.UTF8, "application/json" ) ); //Act var response = await sut.GetCustomersAsync( 0, 10, "territory", CustomerType.Individual, "accountNumber" ); //Assert response.TotalCustomers.Should().Be(list.Count); response.Customers.Should().BeEquivalentTo(list); }
public void SetupPact() { pact = new CustomerApiPact(); mockProviderService = pact.MockProviderService; // NOTE: Clears any previously registered interactions before the test is run mockProviderService.ClearInteractions(); mockProviderServiceBaseUri = pact.MockProviderServiceBaseUri; client = new CustomerApiClient(mockProviderServiceBaseUri); }
public async Task UpdateCustomer_IndividualCustomerFound_ReturnIndividualCustomer( [Frozen] MockHttpMessageHandler handler, [Frozen] HttpClient httpClient, Uri uri, models.UpdateCustomer.IndividualCustomer customer, CustomerApiClient sut ) { //Arrange customer.CustomerType = CustomerType.Individual; httpClient.BaseAddress = uri; handler.When(HttpMethod.Put, $"{uri}*") .Respond(HttpStatusCode.OK, new StringContent( JsonSerializer.Serialize(customer, new JsonSerializerOptions { Converters = { new JsonStringEnumConverter(), new CustomerConverter < models.UpdateCustomer.Customer, models.UpdateCustomer.StoreCustomer, models.UpdateCustomer.IndividualCustomer>() }, IgnoreReadOnlyProperties = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase }), Encoding.UTF8, "application/json" ) ); //Act var response = await sut.UpdateCustomerAsync("1", customer); //Assert response.Should().BeEquivalentTo(customer); }
public void GetPreferredAddress_CustomerNotFound_ThrowsHttpRequestException( [Frozen] MockHttpMessageHandler handler, [Frozen] HttpClient httpClient, Uri uri, string accountNumber, string addressType, CustomerApiClient sut ) { //Arrange httpClient.BaseAddress = uri; handler.When(HttpMethod.Get, $"{uri}*") .Respond(HttpStatusCode.NotFound); //Act Func <Task> func = async() => await sut.GetPreferredAddressAsync(accountNumber, addressType); //Assert func.Should().Throw <CustomerApiClientException>() .WithInnerException <HttpRequestException>() .WithMessage("Response status code does not indicate success: 404 (Not Found)."); }
public async Task GetPreferredAddress_AddressFound_ReturnAddress( [Frozen] MockHttpMessageHandler handler, [Frozen] HttpClient httpClient, Uri uri, string accountNumber, string addressType, models.GetPreferredAddress.Address address, CustomerApiClient sut ) { //Arrange httpClient.BaseAddress = uri; handler.When(HttpMethod.Get, $"{uri}*") .Respond(HttpStatusCode.OK, new StringContent( JsonSerializer.Serialize(address, new JsonSerializerOptions { Converters = { new JsonStringEnumConverter() }, PropertyNamingPolicy = JsonNamingPolicy.CamelCase }), Encoding.UTF8, "application/json" ) ); //Act var response = await sut.GetPreferredAddressAsync(accountNumber, addressType); //Assert response.Should().BeEquivalentTo(address); }