public void Setup()
        {
            _bankAuthProvider = new Mock <IDevBankAuthRepository>();
            _logger           = new Mock <LoggerMock <DevBankAuthProvider> >();

            _transactionAuthRequest = new TransactionAuthRequest(new CardDetails(), 100);
            _devBankAuthProvider    = new DevBankAuthProvider(
                _bankAuthProvider.Object,
                _logger.Object);
        }
Exemplo n.º 2
0
        public async Task <TransactionAuthResponse> VerifyAsync(TransactionAuthRequest payload)
        {
            var transactionId = Guid.NewGuid();

            if (payload.Amount <= 0)
            {
                return(new TransactionAuthResponse(
                           transactionId: Guid.NewGuid(),
                           verified: false,
                           code: HttpStatusCode.NotAcceptable.ToString(),
                           description: "Amount not accepted"
                           ));
            }

            try
            {
                var transactionAuth = await _bankAuthProvider.ValidateAsync(payload.Amount);

                return(transactionAuth == null ?
                       new TransactionAuthResponse(
                           transactionId: transactionId,
                           verified: true,
                           code: "10000",
                           description: "Successful"
                           ) :
                       new TransactionAuthResponse(
                           transactionId: transactionId,
                           verified: false,
                           code: transactionAuth.TransactionCode,
                           description: transactionAuth.Description
                           ));
            }
            catch (Exception ex)
            {
                _logger.LogError(
                    ex,
                    "Unhandled Exception for Command {Name} {@Command}",
                    nameof(DevBankAuthProvider),
                    payload);
            }

            return(new TransactionAuthResponse(
                       Guid.NewGuid(),
                       true,
                       HttpStatusCode.ServiceUnavailable.ToString(),
                       "The verification could not be performed"
                       ));
        }