Beispiel #1
0
        public async Task Handle_BankResponseUnknownError_ReturnsBadGateway()
        {
            //arrange
            var transferFundsResponse = TransferFundsResponse.UnknownError(_fixture.Create <int>());

            _mockBankApiClient
            .Setup(x => x.TransferFunds(It.IsAny <TransferFundsRequest>()))
            .ReturnsAsync(transferFundsResponse);

            //act
            var res = await _createPaymentHandler.Handle(_fixture.Create <CreatePaymentRequest>());

            //assert
            res.StatusCode.Should().Be(StatusCodes.Status502BadGateway);
        }
        private async Task <TransferFundsResponse> TransferFundsResponseInternal(TransferFundsRequest request)
        {
            var response = await _httpClient.PostAsync(
                "api/payment",
                new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"));

            var responseBody = await response.Content.ReadAsStringAsync();

            if (!response.IsSuccessStatusCode)
            {
                if (response.StatusCode == (HttpStatusCode)HttpStatusCodeUnprocessableEntity)
                {
                    return(TransferFundsResponse.Error((int)response.StatusCode, JsonConvert.DeserializeObject <TransferFundsErrorResponse>(responseBody)));
                }
                else
                {
                    return(TransferFundsResponse.UnknownError((int)response.StatusCode));
                }
            }

            var deserialized = JsonConvert.DeserializeObject <TransferFundsSuccessfulResponse>(responseBody);

            return(TransferFundsResponse.Successful(deserialized));
        }