public async Task GetAccountDetailsHandlesInvalidAccountNumber() { const int statusCodeInvalidAccountNumber = 400; const long errorCodeInvalidAccountNumber = 1001124; const string errorMessageInvalidAccountNumber = "Account number \'{account_number}\' does not fit format ^[\\\\d]{8}$"; var accountsApi = Substitute.For <IAccountsApi>(); accountsApi.ApiV1AccountsByAccountNumberGetAsync("") .ThrowsForAnyArgs( SwaggerApiException( statusCodeInvalidAccountNumber, errorCodeInvalidAccountNumber, errorMessageInvalidAccountNumber ) ); var connection = new BizfiBankConnection(accountsApi, null); var result = await connection.GetAccountDetails("0"); Assert.That(result.Success, Is.False); Assert.That(result.Result, Is.Null); Assert.That(result.Error, Is.Not.Null); Assert.That(result.StatusCode, Is.EqualTo(statusCodeInvalidAccountNumber)); Assert.That(result.Error.ErrorCode, Is.EqualTo(errorCodeInvalidAccountNumber)); }
public async Task GetAccountDetailsReturnsData() { const string accountNumber = "00112233"; var remoteAccountData = new AccountViewModel { AccountNumber = accountNumber, AccountName = "Current Account", SortCode = "079046", Balance = 350, AvailableBalance = 400, Overdraft = 50 }; var accountsApi = Substitute.For <IAccountsApi>(); accountsApi.ApiV1AccountsByAccountNumberGetAsync(accountNumber) .Returns(remoteAccountData); var connection = new BizfiBankConnection(accountsApi, null); var result = await connection.GetAccountDetails(accountNumber); Assert.That(result.Success, Is.True); Assert.That(result.Result, Is.Not.Null); Assert.That(result.Error, Is.Null); Assert.That(result.Result.AccountNumber, Is.EqualTo(accountNumber)); Assert.That(result.Result.AccountName, Is.EqualTo(remoteAccountData.AccountName)); Assert.That(result.Result.SortCode, Is.EqualTo(remoteAccountData.SortCode)); Assert.That(result.Result.CurrentBalance, Is.EqualTo(remoteAccountData.Balance)); Assert.That(result.Result.OverdraftLimit, Is.EqualTo(remoteAccountData.Overdraft)); }
public async Task GetAccountDetailsHandlesAccountNotFound() { const int statusCodeNotFound = 404; const long errorCodeNotFound = 1001123; const string errorMessageNotFound = "Unable to find account with account number \'{account_number}\'"; var accountsApi = Substitute.For <IAccountsApi>(); accountsApi.ApiV1AccountsByAccountNumberGetAsync("") .ThrowsForAnyArgs( SwaggerApiException( statusCodeNotFound, errorCodeNotFound, errorMessageNotFound ) ); var connection = new BizfiBankConnection(accountsApi, null); var result = await connection.GetAccountDetails("12345678"); Assert.That(result.Success, Is.False); Assert.That(result.Result, Is.Null); Assert.That(result.Error, Is.Not.Null); Assert.That(result.StatusCode, Is.EqualTo(statusCodeNotFound)); Assert.That(result.Error.ErrorCode, Is.EqualTo(errorCodeNotFound)); }
public async Task GetAccountDetailsHandlesServerError() { const int statusCodeServerError = (int)HttpStatusCode.InternalServerError; var accountsApi = Substitute.For <IAccountsApi>(); accountsApi.ApiV1AccountsByAccountNumberGetAsync("") .ThrowsForAnyArgs( new Exception() ); var connection = new BizfiBankConnection(accountsApi, null); var result = await connection.GetAccountDetails("12345678"); Assert.That(result.Success, Is.False); Assert.That(result.Result, Is.Null); Assert.That(result.Error, Is.Not.Null); Assert.That(result.StatusCode, Is.EqualTo(statusCodeServerError)); Assert.That(result.Error.ErrorCode, Is.Null); }