public async Task CreateTransactionAsync_WhenResponseIsSuccess_ShouldReturnDeserializedContent() { //Arrange var createBankTransactionRequest = GetCreateBankTransactionRequestObject(); var expectedTransactionResult = GetTransactionResultObject(); var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(JsonConvert.SerializeObject(expectedTransactionResult)), RequestMessage = Mock.Of <HttpRequestMessage>() }; var mockedHandler = new DummyHandler(() => Task.CompletedTask, httpResponseMessage); var dummyClient = new HttpClient(mockedHandler) { BaseAddress = new Uri(_BankClientOptions.Url) }; var sut = new BankHttpClient(dummyClient, _loggerMock.Object, _jsonSerializer, _BankClientOptions); //Act var result = await sut.CreateTransactionAsync(createBankTransactionRequest); //Assert result.Should().BeEquivalentTo(expectedTransactionResult); }
public async Task CreateTransactionAsync_WhenResponseIsUnauthorized_ShouldLogErrorMessageAndThrow() { //Arrange var createBankTransactionRequest = GetCreateBankTransactionRequestObject(); var unauthorizedHttpResponseMessage = new HttpResponseMessage(HttpStatusCode.Unauthorized) { Content = Mock.Of <HttpContent>(), RequestMessage = Mock.Of <HttpRequestMessage>() }; var unauthorizedHandler = new DummyHandler(() => Task.CompletedTask, unauthorizedHttpResponseMessage); var dummyClient = new HttpClient(unauthorizedHandler) { BaseAddress = new Uri(_BankClientOptions.Url) }; var sut = new BankHttpClient(dummyClient, _loggerMock.Object, _jsonSerializer, _BankClientOptions); //Act Assert.ThrowsAsync <HttpRequestException>(async() => await sut.CreateTransactionAsync(createBankTransactionRequest)); //Assert _loggerMock.Verify(x => x.Write(LogLevel.Error, $"{EventCodes.ErrorCallingBankApi} - {It.IsAny<string>()}"), Times.Once); }