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); }
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" )); }