public void VerifyCard_WhenVerifyIsFailedAndHasOneError_ShouldFillResponseCorrectly()
        {
            var cardRequest = ZeroAuthHelper.ValidCardRequest();

            _mockRestClient.Setup(m => m.Execute(It.IsAny <IRestRequest>())).Returns(new RestResponse <string>
            {
                StatusCode = HttpStatusCode.BadRequest,
                Content    = ZeroAuthHelper.InvalidZeroAuthResponseOneError(),
                Data       = ZeroAuthHelper.InvalidZeroAuthResponseOneError()
            });

            var response = _zeroAuthService.VerifyCard(new MerchantAuthentication(), cardRequest);

            response.Should().NotBeNull();
            response.ErrorDataCollection.Should().NotBeNull();
            response.ErrorDataCollection.Should().HaveCount(1);
            response.ErrorDataCollection.Should().ContainSingle(o => o.Code == 322 && o.Message == "Zero Dollar Auth is not enabled");
        }
        public void VerifyCard_WhenVerifyIsSuccessAndCardIsKo_ShouldFillResponseCorrectly()
        {
            var cardRequest = ZeroAuthHelper.ValidCardRequest();

            _mockRestClient.Setup(m => m.Execute(It.IsAny <IRestRequest>())).Returns(new RestResponse <string>
            {
                StatusCode = HttpStatusCode.Created,
                Content    = ZeroAuthHelper.ValidZeroAuthResponseWithFalseResponse(),
                Data       = ZeroAuthHelper.ValidZeroAuthResponseWithFalseResponse()
            });

            var response = _zeroAuthService.VerifyCard(new MerchantAuthentication(), cardRequest);

            _mockRestClient.Verify(m => m.Execute(It.IsAny <RestRequest>()), Times.Once);

            _mockRestClient.Verify(m => m.Execute(It.Is <RestRequest>(request => request.Method == Method.POST)), Times.Once);

            _mockRestClient.Verify(m => m.Execute(It.Is <RestRequest>(request => request.Parameters.Any(
                                                                          param => param.Type == ParameterType.RequestBody && param.Name == @"application/json"))), Times.Once);

            response.Should().NotBeNull();
            response.ErrorDataCollection.Should().BeNull();
            response.IsValid.Should().BeFalse();
        }
        public void VerifyCard_WhenHttpStatusCodeEqualsTo0_ReturnsMappedErrorResponse()
        {
            var restResponse = new RestResponse
            {
                StatusCode     = 0,
                ErrorException = new Exception("Test exception"),
                ErrorMessage   = "Undefined Error"
            };

            _mockRestClient.Setup(m => m.Execute(It.IsAny <IRestRequest>())).Returns(restResponse);

            var response = _zeroAuthService.VerifyCard(MerchantAuthenticationHelper.CreateMerchantAuthentication(), ZeroAuthHelper.ValidCardRequest());

            response.Should().NotBeNull();
            Assert.AreEqual(response.HttpStatus, restResponse.StatusCode);
            response.ErrorDataCollection.Should().NotBeNull();
            response.ErrorDataCollection[0].Code.Should().Be(-1);
            response.ErrorDataCollection[0].Message.Should().Be("ErrorMessage: Undefined Error | ErrorException: System.Exception: Test exception");
        }