Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }