add tests
This commit is contained in:
		
							parent
							
								
									da93444d3f
								
							
						
					
					
						commit
						ca655b0cdc
					
				@ -2,170 +2,374 @@ package ussd
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	"git.defalsify.org/vise.git/db"
 | 
			
		||||
	"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"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestCreateAccount_Success(t *testing.T) {
 | 
			
		||||
	mockCreateAccountService := new(mocks.MockAccountService)
 | 
			
		||||
	mockUserDataStore := new(mocks.MockDb)
 | 
			
		||||
// func TestCreateAccount(t *testing.T) {
 | 
			
		||||
// 	// Create a new instance of MockMyDataStore
 | 
			
		||||
// 	mockDataStore := new(mocks.MockMyDataStore)
 | 
			
		||||
// 	mockCreateAccountService := new(mocks.MockAccountService)
 | 
			
		||||
 | 
			
		||||
// 	// Define session ID and mock data
 | 
			
		||||
// 	sessionId := "session123"
 | 
			
		||||
// 	typ := utils.DATA_ACCOUNT_CREATED
 | 
			
		||||
// 	fakeError := db.ErrNotFound{}
 | 
			
		||||
// 	// Create context with session ID
 | 
			
		||||
// 	ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
			
		||||
 | 
			
		||||
// 	// Define expected interactions with the mock
 | 
			
		||||
// 	mockDataStore.On("ReadEntry", ctx, sessionId, typ).Return([]byte("123"), fakeError)
 | 
			
		||||
// 	expectedAccountResp := &models.AccountResponse{
 | 
			
		||||
// 		Ok: true,
 | 
			
		||||
// 		Result: struct {
 | 
			
		||||
// 			CustodialId json.Number `json:"custodialId"`
 | 
			
		||||
// 			PublicKey   string      `json:"publicKey"`
 | 
			
		||||
// 			TrackingId  string      `json:"trackingId"`
 | 
			
		||||
// 		}{
 | 
			
		||||
// 			CustodialId: "12",
 | 
			
		||||
// 			PublicKey:   "0x8E0XSCSVA",
 | 
			
		||||
// 			TrackingId:  "d95a7e83-196c-4fd0-866fSGAGA",
 | 
			
		||||
// 		},
 | 
			
		||||
// 	}
 | 
			
		||||
// 	mockCreateAccountService.On("CreateAccount").Return(expectedAccountResp, nil)
 | 
			
		||||
// 	data := map[utils.DataTyp]string{
 | 
			
		||||
// 		utils.DATA_TRACKING_ID:  expectedAccountResp.Result.TrackingId,
 | 
			
		||||
// 		utils.DATA_PUBLIC_KEY:   expectedAccountResp.Result.PublicKey,
 | 
			
		||||
// 		utils.DATA_CUSTODIAL_ID: expectedAccountResp.Result.CustodialId.String(),
 | 
			
		||||
// 	}
 | 
			
		||||
 | 
			
		||||
// 	for key, value := range data {
 | 
			
		||||
// 		//err := utils.WriteEntry(ctx, h.userdataStore, sessionId, key, []byte(value))
 | 
			
		||||
// 		mockDataStore.On("WriteEntry", ctx, sessionId, key, []byte(value)).Return(nil)
 | 
			
		||||
// 	}
 | 
			
		||||
// 	//mockDataStore.On("WriteEntry", mock.Anything, sessionId, mock.Anything, mock.Anything).Return(nil)
 | 
			
		||||
 | 
			
		||||
// 	// Create a Handlers instance with the mock data store
 | 
			
		||||
// 	h := &Handlers{
 | 
			
		||||
// 		userdataStore:  mockDataStore,
 | 
			
		||||
// 		accountService: mockCreateAccountService,
 | 
			
		||||
// 	}
 | 
			
		||||
 | 
			
		||||
// 	// Call the method you want to test
 | 
			
		||||
// 	_, err := h.CreateAccount(ctx, "some-symbol", []byte("some-input"))
 | 
			
		||||
 | 
			
		||||
// 	// Assert that no errors occurred
 | 
			
		||||
// 	assert.NoError(t, err)
 | 
			
		||||
 | 
			
		||||
// 	// Assert that expectations were met
 | 
			
		||||
// 	mockDataStore.AssertExpectations(t)
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
func TestSaveFirstname(t *testing.T) {
 | 
			
		||||
	// Create a new instance of MockMyDataStore
 | 
			
		||||
	mockStore := new(mocks.MockUserDataStore)
 | 
			
		||||
 | 
			
		||||
	// Define test data
 | 
			
		||||
	sessionId := "session123"
 | 
			
		||||
	firstName := "John"
 | 
			
		||||
	ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
			
		||||
 | 
			
		||||
	// Set up the expected behavior of the mock
 | 
			
		||||
	mockStore.On("WriteEntry", ctx, sessionId, utils.DATA_FIRST_NAME, []byte(firstName)).Return(nil)
 | 
			
		||||
 | 
			
		||||
	// Create the Handlers instance with the mock store
 | 
			
		||||
	h := &Handlers{
 | 
			
		||||
		userdataStore:  mockUserDataStore,
 | 
			
		||||
		accountService: mockCreateAccountService,
 | 
			
		||||
		userdataStore: mockStore,
 | 
			
		||||
	}
 | 
			
		||||
	ctx := context.WithValue(context.Background(), "SessionId", "test-session-12345")
 | 
			
		||||
	k := utils.PackKey(utils.DATA_ACCOUNT_CREATED, []byte("test-session-12345"))
 | 
			
		||||
	mockUserDataStore.On("SetPrefix", uint8(0x20)).Return(nil)
 | 
			
		||||
	mockUserDataStore.On("SetSession", "test-session-12345").Return(nil)
 | 
			
		||||
	mockUserDataStore.On("Get", ctx, k).
 | 
			
		||||
		Return(nil, db.ErrNotFound{})
 | 
			
		||||
 | 
			
		||||
	// 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:   "0x8E0XSCSVA",
 | 
			
		||||
			TrackingId:  "d95a7e83-196c-4fd0-866fSGAGA",
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	mockCreateAccountService.On("CreateAccount").Return(expectedAccountResp, nil)
 | 
			
		||||
 | 
			
		||||
	_, err := h.CreateAccount(ctx, "create_account", []byte("create_account"))
 | 
			
		||||
	// Call the method
 | 
			
		||||
	res, err := h.SaveFirstname(ctx, "save_firstname", []byte(firstName))
 | 
			
		||||
 | 
			
		||||
	// Assert results
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	assert.Equal(t, expectedAccountResp.Ok, true)
 | 
			
		||||
}
 | 
			
		||||
	assert.Equal(t, resource.Result{}, res)
 | 
			
		||||
 | 
			
		||||
func TestSaveFirstname(t *testing.T) {
 | 
			
		||||
	// Create a mock database
 | 
			
		||||
	mockDb := new(mocks.MockDb)
 | 
			
		||||
 | 
			
		||||
	// Create a Handlers instance with the mock database
 | 
			
		||||
	h := &Handlers{
 | 
			
		||||
		userdataStore: mockDb,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Create a context with a session ID
 | 
			
		||||
	ctx := context.WithValue(context.Background(), "SessionId", "test-session")
 | 
			
		||||
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		name        string
 | 
			
		||||
		input       []byte
 | 
			
		||||
		expectError bool
 | 
			
		||||
		setupMock   func(*mocks.MockDb)
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			name:        "Valid first name",
 | 
			
		||||
			input:       []byte("John"),
 | 
			
		||||
			expectError: false,
 | 
			
		||||
			setupMock: func(m *mocks.MockDb) {
 | 
			
		||||
				m.On("SetPrefix", uint8(0x20)).Return(nil)
 | 
			
		||||
				m.On("SetSession", "test-session").Return(nil)
 | 
			
		||||
				m.On("Put", mock.Anything, mock.Anything, []byte("John")).Return(nil)
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name:        "Empty first name",
 | 
			
		||||
			input:       []byte{},
 | 
			
		||||
			expectError: false, // Note: The function doesn't return an error for empty input
 | 
			
		||||
			setupMock:   func(m *mocks.MockDb) {},
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, tt := range tests {
 | 
			
		||||
		t.Run(tt.name, func(t *testing.T) {
 | 
			
		||||
			// Setup mock expectations
 | 
			
		||||
			tt.setupMock(mockDb)
 | 
			
		||||
 | 
			
		||||
			// Call the function
 | 
			
		||||
			_, err := h.SaveFirstname(ctx, "", tt.input)
 | 
			
		||||
 | 
			
		||||
			if tt.expectError {
 | 
			
		||||
				assert.Error(t, err)
 | 
			
		||||
			} else {
 | 
			
		||||
				assert.NoError(t, err)
 | 
			
		||||
				mockDb.AssertExpectations(t)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Clear mock for the next test
 | 
			
		||||
			mockDb.ExpectedCalls = nil
 | 
			
		||||
			mockDb.Calls = nil
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	// Assert all expectations were met
 | 
			
		||||
	mockStore.AssertExpectations(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestSaveFamilyname(t *testing.T) {
 | 
			
		||||
	// Create a mock database
 | 
			
		||||
	mockDb := new(mocks.MockDb)
 | 
			
		||||
	// Create a new instance of MockMyDataStore
 | 
			
		||||
	mockStore := new(mocks.MockUserDataStore)
 | 
			
		||||
 | 
			
		||||
	// Create a Handlers instance with the mock database
 | 
			
		||||
	// Define test data
 | 
			
		||||
	sessionId := "session123"
 | 
			
		||||
	familyName := "Doeee"
 | 
			
		||||
	ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
			
		||||
 | 
			
		||||
	// Set up the expected behavior of the mock
 | 
			
		||||
	mockStore.On("WriteEntry", ctx, sessionId, utils.DATA_FAMILY_NAME, []byte(familyName)).Return(nil)
 | 
			
		||||
 | 
			
		||||
	// Create the Handlers instance with the mock store
 | 
			
		||||
	h := &Handlers{
 | 
			
		||||
		userdataStore: mockDb,
 | 
			
		||||
		userdataStore: mockStore,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Create a context with a session ID
 | 
			
		||||
	ctx := context.WithValue(context.Background(), "SessionId", "test-session")
 | 
			
		||||
	// Call the method
 | 
			
		||||
	res, err := h.SaveFamilyname(ctx, "save_familyname", []byte(familyName))
 | 
			
		||||
 | 
			
		||||
	// Assert results
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	assert.Equal(t, resource.Result{}, res)
 | 
			
		||||
 | 
			
		||||
	// Assert all expectations were met
 | 
			
		||||
	mockStore.AssertExpectations(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestSaveYoB(t *testing.T) {
 | 
			
		||||
	// Create a new instance of MockMyDataStore
 | 
			
		||||
	mockStore := new(mocks.MockUserDataStore)
 | 
			
		||||
 | 
			
		||||
	// Define test data
 | 
			
		||||
	sessionId := "session123"
 | 
			
		||||
	yob := "1980"
 | 
			
		||||
	ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
			
		||||
 | 
			
		||||
	// Set up the expected behavior of the mock
 | 
			
		||||
	mockStore.On("WriteEntry", ctx, sessionId, utils.DATA_YOB, []byte(yob)).Return(nil)
 | 
			
		||||
 | 
			
		||||
	// Create the Handlers instance with the mock store
 | 
			
		||||
	h := &Handlers{
 | 
			
		||||
		userdataStore: mockStore,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Call the method
 | 
			
		||||
	res, err := h.SaveYob(ctx, "save_yob", []byte(yob))
 | 
			
		||||
 | 
			
		||||
	// Assert results
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	assert.Equal(t, resource.Result{}, res)
 | 
			
		||||
 | 
			
		||||
	// Assert all expectations were met
 | 
			
		||||
	mockStore.AssertExpectations(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestSaveLocation(t *testing.T) {
 | 
			
		||||
	// Create a new instance of MockMyDataStore
 | 
			
		||||
	mockStore := new(mocks.MockUserDataStore)
 | 
			
		||||
 | 
			
		||||
	// Define test data
 | 
			
		||||
	sessionId := "session123"
 | 
			
		||||
	yob := "Kilifi"
 | 
			
		||||
	ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
			
		||||
 | 
			
		||||
	// Set up the expected behavior of the mock
 | 
			
		||||
	mockStore.On("WriteEntry", ctx, sessionId, utils.DATA_LOCATION, []byte(yob)).Return(nil)
 | 
			
		||||
 | 
			
		||||
	// Create the Handlers instance with the mock store
 | 
			
		||||
	h := &Handlers{
 | 
			
		||||
		userdataStore: mockStore,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Call the method
 | 
			
		||||
	res, err := h.SaveLocation(ctx, "save_location", []byte(yob))
 | 
			
		||||
 | 
			
		||||
	// Assert results
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	assert.Equal(t, resource.Result{}, res)
 | 
			
		||||
 | 
			
		||||
	// Assert all expectations were met
 | 
			
		||||
	mockStore.AssertExpectations(t)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestSaveGender(t *testing.T) {
 | 
			
		||||
	// Create a new instance of MockMyDataStore
 | 
			
		||||
	mockStore := new(mocks.MockUserDataStore)
 | 
			
		||||
 | 
			
		||||
	// Define the session ID and context
 | 
			
		||||
	sessionId := "session123"
 | 
			
		||||
	ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
			
		||||
 | 
			
		||||
	// Define test cases
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		name        string
 | 
			
		||||
		input       []byte
 | 
			
		||||
		expectError bool
 | 
			
		||||
		setupMock   func(*mocks.MockDb)
 | 
			
		||||
		name           string
 | 
			
		||||
		input          []byte
 | 
			
		||||
		expectedGender string
 | 
			
		||||
		expectCall     bool
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			name:        "Valid family name",
 | 
			
		||||
			input:       []byte("Smith"),
 | 
			
		||||
			expectError: false,
 | 
			
		||||
			setupMock: func(m *mocks.MockDb) {
 | 
			
		||||
				m.On("SetPrefix", uint8(0x20)).Return(nil)
 | 
			
		||||
				m.On("SetSession", "test-session").Return(nil)
 | 
			
		||||
				m.On("Put", mock.Anything, mock.Anything, []byte("Smith")).Return(nil)
 | 
			
		||||
			},
 | 
			
		||||
			name:           "Valid Male Input",
 | 
			
		||||
			input:          []byte("1"),
 | 
			
		||||
			expectedGender: "Male",
 | 
			
		||||
			expectCall:     true,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name:        "Empty family name",
 | 
			
		||||
			input:       []byte{},
 | 
			
		||||
			expectError: true,
 | 
			
		||||
			setupMock:   func(m *mocks.MockDb) {},
 | 
			
		||||
			name:           "Valid Female Input",
 | 
			
		||||
			input:          []byte("2"),
 | 
			
		||||
			expectedGender: "Female",
 | 
			
		||||
			expectCall:     true,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name:           "Valid Unspecified Input",
 | 
			
		||||
			input:          []byte("3"),
 | 
			
		||||
			expectedGender: "Unspecified",
 | 
			
		||||
			expectCall:     true,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name:           "Empty Input",
 | 
			
		||||
			input:          []byte(""),
 | 
			
		||||
			expectedGender: "",
 | 
			
		||||
			expectCall:     false,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, tt := range tests {
 | 
			
		||||
		t.Run(tt.name, func(t *testing.T) {
 | 
			
		||||
			// Setup mock expectations
 | 
			
		||||
			tt.setupMock(mockDb)
 | 
			
		||||
 | 
			
		||||
			// Call the function
 | 
			
		||||
			_, err := h.SaveFamilyname(ctx, "", tt.input)
 | 
			
		||||
 | 
			
		||||
			if tt.expectError {
 | 
			
		||||
				assert.Error(t, err)
 | 
			
		||||
			// Set up expectations for the mock database
 | 
			
		||||
			if tt.expectCall {
 | 
			
		||||
				expectedKey := utils.DATA_GENDER
 | 
			
		||||
				mockStore.On("WriteEntry", ctx, sessionId, expectedKey, []byte(tt.expectedGender)).Return(nil)
 | 
			
		||||
			} else {
 | 
			
		||||
				assert.NoError(t, err)
 | 
			
		||||
				mockDb.AssertExpectations(t)
 | 
			
		||||
				mockStore.On("WriteEntry", ctx, sessionId, utils.DATA_GENDER, []byte(tt.expectedGender)).Return(nil)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Clear mock for the next test
 | 
			
		||||
			mockDb.ExpectedCalls = nil
 | 
			
		||||
			mockDb.Calls = nil
 | 
			
		||||
			// Create the Handlers instance with the mock store
 | 
			
		||||
			h := &Handlers{
 | 
			
		||||
				userdataStore: mockStore,
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Call the method
 | 
			
		||||
			_, err := h.SaveGender(ctx, "someSym", tt.input)
 | 
			
		||||
 | 
			
		||||
			// Assert no error
 | 
			
		||||
			assert.NoError(t, err)
 | 
			
		||||
 | 
			
		||||
			// Verify expectations
 | 
			
		||||
			if tt.expectCall {
 | 
			
		||||
				mockStore.AssertCalled(t, "WriteEntry", ctx, sessionId, utils.DATA_GENDER, []byte(tt.expectedGender))
 | 
			
		||||
			} else {
 | 
			
		||||
				mockStore.AssertNotCalled(t, "WriteEntry", ctx, sessionId, utils.DATA_GENDER, []byte(tt.expectedGender))
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func testSavePin () {
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
func TestCheckIdentifier(t *testing.T) {
 | 
			
		||||
	// Create a new instance of MockMyDataStore
 | 
			
		||||
	mockStore := new(mocks.MockUserDataStore)
 | 
			
		||||
 | 
			
		||||
	// Define the session ID and context
 | 
			
		||||
	sessionId := "session123"
 | 
			
		||||
	ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
			
		||||
 | 
			
		||||
	// Define test cases
 | 
			
		||||
	tests := []struct {
 | 
			
		||||
		name            string
 | 
			
		||||
		mockPublicKey   []byte
 | 
			
		||||
		mockErr         error
 | 
			
		||||
		expectedContent string
 | 
			
		||||
		expectError     bool
 | 
			
		||||
	}{
 | 
			
		||||
		{
 | 
			
		||||
			name:            "Saved public Key",
 | 
			
		||||
			mockPublicKey:   []byte("0xa8363"),
 | 
			
		||||
			mockErr:         nil,
 | 
			
		||||
			expectedContent: "0xa8363",
 | 
			
		||||
			expectError:     false,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, tt := range tests {
 | 
			
		||||
		t.Run(tt.name, func(t *testing.T) {
 | 
			
		||||
			// Set up expectations for the mock database
 | 
			
		||||
			mockStore.On("ReadEntry", ctx, sessionId, utils.DATA_PUBLIC_KEY).Return(tt.mockPublicKey, tt.mockErr)
 | 
			
		||||
 | 
			
		||||
			// Create the Handlers instance with the mock store
 | 
			
		||||
			h := &Handlers{
 | 
			
		||||
				userdataStore: mockStore,
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Call the method
 | 
			
		||||
			res, err := h.CheckIdentifier(ctx, "check_identifier", nil)
 | 
			
		||||
 | 
			
		||||
			// Assert results
 | 
			
		||||
 | 
			
		||||
			assert.NoError(t, err)
 | 
			
		||||
			assert.Equal(t, tt.expectedContent, res.Content)
 | 
			
		||||
 | 
			
		||||
			// Verify expectations
 | 
			
		||||
			mockStore.AssertExpectations(t)
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestMaxAmount(t *testing.T) {
 | 
			
		||||
	mockStore := new(mocks.MockUserDataStore)
 | 
			
		||||
	mockCreateAccountService := new(mocks.MockAccountService)
 | 
			
		||||
 | 
			
		||||
	// Define test data
 | 
			
		||||
	sessionId := "session123"
 | 
			
		||||
	ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
			
		||||
	publicKey := "0xcasgatweksalw1018221"
 | 
			
		||||
	expectedBalance := "0.003CELO"
 | 
			
		||||
 | 
			
		||||
	// Set up the expected behavior of the mock
 | 
			
		||||
	mockStore.On("ReadEntry", ctx, sessionId, utils.DATA_PUBLIC_KEY).Return([]byte(publicKey), nil)
 | 
			
		||||
	mockCreateAccountService.On("CheckBalance", publicKey).Return(expectedBalance, nil)
 | 
			
		||||
 | 
			
		||||
	// Create the Handlers instance with the mock store
 | 
			
		||||
	h := &Handlers{
 | 
			
		||||
		userdataStore:  mockStore,
 | 
			
		||||
		accountService: mockCreateAccountService,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Call the method
 | 
			
		||||
	res, _ := h.MaxAmount(ctx, "max_amount", []byte("check_balance"))
 | 
			
		||||
 | 
			
		||||
	//Assert that the balance that was set as the result content is what was returned by  Check Balance
 | 
			
		||||
	assert.Equal(t, expectedBalance, res.Content)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestGetSender(t *testing.T) {
 | 
			
		||||
	mockStore := new(mocks.MockUserDataStore)
 | 
			
		||||
 | 
			
		||||
	// Define test data
 | 
			
		||||
	sessionId := "session123"
 | 
			
		||||
	ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
			
		||||
	publicKey := "0xcasgatweksalw1018221"
 | 
			
		||||
 | 
			
		||||
	// Set up the expected behavior of the mock
 | 
			
		||||
	mockStore.On("ReadEntry", ctx, sessionId, utils.DATA_PUBLIC_KEY).Return([]byte(publicKey), nil)
 | 
			
		||||
 | 
			
		||||
	// Create the Handlers instance with the mock store
 | 
			
		||||
	h := &Handlers{
 | 
			
		||||
		userdataStore: mockStore,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Call the method
 | 
			
		||||
	res, _ := h.GetSender(ctx, "max_amount", []byte("check_balance"))
 | 
			
		||||
 | 
			
		||||
	//Assert that the public key from readentry operation  is what was set as the result content.
 | 
			
		||||
	assert.Equal(t, publicKey, res.Content)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestGetAmount(t *testing.T) {
 | 
			
		||||
	mockStore := new(mocks.MockUserDataStore)
 | 
			
		||||
 | 
			
		||||
	// Define test data
 | 
			
		||||
	sessionId := "session123"
 | 
			
		||||
	ctx := context.WithValue(context.Background(), "SessionId", sessionId)
 | 
			
		||||
	Amount := "0.03CELO"
 | 
			
		||||
 | 
			
		||||
	// Set up the expected behavior of the mock
 | 
			
		||||
	mockStore.On("ReadEntry", ctx, sessionId, utils.DATA_AMOUNT).Return([]byte(Amount), nil)
 | 
			
		||||
 | 
			
		||||
	// Create the Handlers instance with the mock store
 | 
			
		||||
	h := &Handlers{
 | 
			
		||||
		userdataStore: mockStore,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Call the method
 | 
			
		||||
	res, _ := h.GetAmount(ctx, "get_amount", []byte("Getting amount..."))
 | 
			
		||||
 | 
			
		||||
	//Assert that the retrieved amount is what was set as the content
 | 
			
		||||
	assert.Equal(t, Amount, res.Content)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user