Skip to content

Commit

Permalink
feat: coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
brokeyourbike committed Dec 9, 2023
1 parent a04fd59 commit df42b57
Show file tree
Hide file tree
Showing 7 changed files with 280 additions and 20 deletions.
27 changes: 27 additions & 0 deletions accounts_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,15 @@ func TestFetchAccount(t *testing.T) {
assert.Len(t, got.Account.Currency, 1)
}

func TestFetchAccount_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.FetchAccount(nil, uuid.New()) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestFetchAccounts(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))
Expand All @@ -53,6 +62,15 @@ func TestFetchAccounts(t *testing.T) {
assert.Len(t, got.Accounts, 1)
}

func TestFetchAccounts_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.FetchAccounts(nil, 1, 100) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestCreateAccount(t *testing.T) {
mockSigner := clearbank.NewMockSigner(t)
mockHttpClient := clearbank.NewMockHttpClient(t)
Expand All @@ -68,3 +86,12 @@ func TestCreateAccount(t *testing.T) {
require.NoError(t, err)
assert.Equal(t, uuid.MustParse("a85002e3-0116-4b14-b7fa-427e60f4f6bc"), got.Account.ID)
}

func TestCreateAccount_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.CreateAccount(nil, clearbank.CreateAccountPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}
16 changes: 6 additions & 10 deletions fx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ package clearbank_test
import (
"bytes"
"context"
"errors"
"io"
"net/http"
"testing"

"github.com/brokeyourbike/clearbank-api-client-go"
"github.com/stretchr/testify/assert"
mock "github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
)

func TestInitiateFxOrder(t *testing.T) {
Expand All @@ -27,15 +27,11 @@ func TestInitiateFxOrder(t *testing.T) {
assert.NoError(t, client.InitiateFxOrder(ctx, clearbank.FXPayload{}))
}

func TestInitiateFxOrder_FailedHttpRequest(t *testing.T) {
mockSigner := clearbank.NewMockSigner(t)
func TestInitiateFxOrder_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", mockSigner, clearbank.WithHTTPClient(mockHttpClient))

ctx := clearbank.RequestIdContext(context.TODO(), "123")
mockSigner.On("Sign", ctx, mock.Anything).Return([]byte("signed"), nil).Once()

mockHttpClient.On("Do", mock.AnythingOfType("*http.Request")).Return(nil, errors.New("cannot do")).Once()
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

assert.Error(t, client.InitiateFxOrder(ctx, clearbank.FXPayload{}))
err := client.InitiateFxOrder(nil, clearbank.FXPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}
128 changes: 128 additions & 0 deletions mccy_accounts_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ import (
"testing"

"github.com/brokeyourbike/clearbank-api-client-go"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestMCCYAccountBalancesResponse_UnmarshalJSON(t *testing.T) {
Expand All @@ -26,3 +28,129 @@ func TestMCCYAccountBalancesResponse_UnmarshalJSON(t *testing.T) {
assert.Equal(t, 10.00, resp.Balances[0].Available)
assert.Equal(t, 9.00, resp.Balances[0].Actual)
}

func TestFetchMCCYAccount_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.FetchMCCYAccount(nil, uuid.New()) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestFetchMCCYAccounts_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.FetchMCCYAccounts(nil, 1, 100) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestCreateMCCYAccount_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.CreateMCCYAccount(nil, clearbank.CreateMCCYAccountPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestUpdateMCCYAccount_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.UpdateMCCYAccount(nil, uuid.New(), clearbank.UpdateMCCYAccountPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestUpdateMCCYAccountStatus_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.UpdateMCCYAccountStatus(nil, uuid.New(), clearbank.UpdateMCCYAccountStatusPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestEnableMCCYAccountCurrency_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

err := client.EnableMCCYAccountCurrency(nil, uuid.New(), clearbank.EnableMCCYAccountCurrencyPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestCloseMCCYAccount_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

err := client.CloseMCCYAccount(nil, uuid.New(), clearbank.MCCYAccountCloseReasonOther) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestFetchMCCYAccountBalances_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.FetchMCCYAccountBalances(nil, uuid.New()) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestFetchMCCYVirtualAccount_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.FetchMCCYVirtualAccount(nil, uuid.New()) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestFetchMCCYVirtualAccounts_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.FetchMCCYVirtualAccounts(nil, 1, 100) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestCreateMCCYVirtualAccount_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.CreateMCCYVirtualAccount(nil, clearbank.CreateMCCYVirtualAccountPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestUpdateMCCYVirtualAccount_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.UpdateMCCYVirtualAccount(nil, uuid.New(), clearbank.UpdateMCCYVirtualAccountPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestUpdateMCCYVirtualAccountStatus_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.UpdateMCCYVirtualAccountStatus(nil, uuid.New(), clearbank.UpdateMCCYVirtualAccountStatusPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestCloseMCCYVirtualAccount_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

err := client.CloseMCCYVirtualAccount(nil, uuid.New(), clearbank.MCCYAccountCloseReasonOther) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}
63 changes: 63 additions & 0 deletions mccy_transactions_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package clearbank_test

import (
"testing"

"github.com/brokeyourbike/clearbank-api-client-go"
"github.com/google/uuid"
"github.com/stretchr/testify/require"
)

func TestInitiateInternalTransaction_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

err := client.InitiateInternalTransaction(nil, clearbank.CreateInternalTransactionPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestInitiateMCCYTransactions_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

err := client.InitiateMCCYTransactions(nil, clearbank.CreateMCCYTransactionsPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestInitiateMCCYInboundPayment_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.InitiateMCCYInboundPayment(nil, "currency", clearbank.CreateMCCYInboundPaymentPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestFetchMCCYTransaction_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.FetchMCCYTransaction(nil, uuid.New()) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestFetchMCCYTransactionsForAccount_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.FetchMCCYTransactionsForAccount(nil, uuid.New(), "USD", clearbank.FetchTransactionsParams{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestFetchMCCYTransactionsForVirtualAccount_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.FetchMCCYTransactionsForVirtualAccount(nil, uuid.New(), "USD", clearbank.FetchTransactionsParams{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}
28 changes: 18 additions & 10 deletions rate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"bytes"
"context"
_ "embed"
"errors"
"io"
"net/http"
"testing"
Expand Down Expand Up @@ -41,6 +40,15 @@ func TestFetchMarketrate(t *testing.T) {
assert.Equal(t, "GBP/USD", got.Symbol)
}

func TestFetchMarketrate_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

_, err := client.FetchMarketrate(nil, clearbank.MarketrateParams{FixedSide: clearbank.FixedSideBuy}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestFetchMarketrate_Fail(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))
Expand All @@ -65,23 +73,23 @@ func TestNegotiate(t *testing.T) {
assert.Equal(t, "https://example.com", got.URL)
}

func TestNegotiate_ValidationFailed(t *testing.T) {
func TestNegotiate_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

resp := &http.Response{StatusCode: 123, Body: io.NopCloser(bytes.NewReader(badRequestInvalid))}
mockHttpClient.On("Do", mock.AnythingOfType("*http.Request")).Return(resp, nil).Once()

_, err := client.Negotiate(context.TODO())
_, err := client.Negotiate(nil) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.ErrorIs(t, err, clearbank.UnexpectedResponse{Status: 123, Body: "{}"}, "err response with no required fields is unexpected")
require.Contains(t, err.Error(), "failed to create request")
}

func TestNegotiate_FailedHttpRequest(t *testing.T) {
func TestNegotiate_ValidationFailed(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))
mockHttpClient.On("Do", mock.AnythingOfType("*http.Request")).Return(nil, errors.New("cannot do")).Once()

resp := &http.Response{StatusCode: 123, Body: io.NopCloser(bytes.NewReader(badRequestInvalid))}
mockHttpClient.On("Do", mock.AnythingOfType("*http.Request")).Return(resp, nil).Once()

_, err := client.Negotiate(context.TODO())
assert.Error(t, err)
require.Error(t, err)
require.ErrorIs(t, err, clearbank.UnexpectedResponse{Status: 123, Body: "{}"}, "err response with no required fields is unexpected")
}
19 changes: 19 additions & 0 deletions statement_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/brokeyourbike/clearbank-api-client-go"
"github.com/stretchr/testify/assert"
mock "github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
)

func TestRequestStatement(t *testing.T) {
Expand All @@ -27,6 +28,15 @@ func TestRequestStatement(t *testing.T) {
assert.NoError(t, client.RequestStatement(ctx, clearbank.StatementPayload{}))
}

func TestRequestStatement_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

err := client.RequestStatement(nil, clearbank.StatementPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}

func TestRequestStatementFor(t *testing.T) {
mockSigner := clearbank.NewMockSigner(t)
mockHttpClient := clearbank.NewMockHttpClient(t)
Expand All @@ -40,3 +50,12 @@ func TestRequestStatementFor(t *testing.T) {

assert.NoError(t, client.RequestStatementFor(ctx, "IBAN12345", clearbank.StatementPayload{}))
}

func TestRequestStatementFor_RequestErr(t *testing.T) {
mockHttpClient := clearbank.NewMockHttpClient(t)
client := clearbank.NewClient("token", nil, clearbank.WithHTTPClient(mockHttpClient))

err := client.RequestStatementFor(nil, "IBAN12345", clearbank.StatementPayload{}) //lint:ignore SA1012 testing failure
require.Error(t, err)
require.Contains(t, err.Error(), "failed to create request")
}
Loading

0 comments on commit df42b57

Please sign in to comment.