diff --git a/internal/handlers/ussd/menuhandler_test.go b/internal/handlers/ussd/menuhandler_test.go index 1b22411..8fd3dbe 100644 --- a/internal/handlers/ussd/menuhandler_test.go +++ b/internal/handlers/ussd/menuhandler_test.go @@ -8,8 +8,11 @@ import ( "testing" "git.defalsify.org/vise.git/resource" + "git.grassecon.net/urdt/ussd/internal/handlers/ussd/mocks" "git.grassecon.net/urdt/ussd/internal/models" "git.grassecon.net/urdt/ussd/internal/utils" + "github.com/alecthomas/assert/v2" + "github.com/stretchr/testify/mock" ) // MockAccountCreator implements AccountCreator for testing @@ -170,6 +173,51 @@ func TestCreateAccount(t *testing.T) { } } + + +func TestCreateAccount_Success(t *testing.T) { + mockAccountFileHandler := new(mocks.MockAccountFileHandler) + mockCreateAccountService := new(mocks.MockAccountService) + + mockAccountFileHandler.On("EnsureFileExists").Return(nil) + + // Mock that no account data exists + mockAccountFileHandler.On("ReadAccountData").Return(nil, nil) + + // Define expected account response after api call + expectedAccountResp := &models.AccountResponse{ + Ok: true, + Result: struct { + CustodialId json.Number `json:"custodialId"` + PublicKey string `json:"publicKey"` + TrackingId string `json:"trackingId"` + }{ + CustodialId: "12", + PublicKey: "some-public-key", + TrackingId: "some-tracking-id", + }, + } + mockCreateAccountService.On("CreateAccount").Return(expectedAccountResp, nil) + + // Mock WriteAccountData to not error + mockAccountFileHandler.On("WriteAccountData", mock.Anything).Return(nil) + + handlers := &Handlers{ + accountService: mockCreateAccountService, + } + + + actualResponse, err := handlers.accountService.CreateAccount() + + // Assert results + assert.NoError(t, err) + assert.Equal(t,expectedAccountResp.Ok,true) + assert.Equal(t,expectedAccountResp,actualResponse) + + +} + + func TestSavePin(t *testing.T) { // Setup tempDir, err := os.MkdirTemp("", "test_save_pin")