package core import ( "github.com/stretchr/testify/assert" "go-nkode/util" "testing" ) func TestNKodeAPI(t *testing.T) { db1 := NewInMemoryDb() testNKodeAPI(t, &db1) //dbFile := "../../test.db" //db2 := NewSqliteDB(dbFile) //defer db2.CloseDb() //testNKodeAPI(t, db2) // if _, err := os.Stat(dbFile); err == nil { // err = os.Remove(dbFile) // assert.NoError(t, err) // } else { // assert.NoError(t, err) // } } func testNKodeAPI(t *testing.T, db DbAccessor) { attrsPerKey := 5 numbOfKeys := 4 for idx := 0; idx < 1; idx++ { userEmail := Email("test_username" + util.GenerateRandomString(12) + "@example.com") passcodeLen := 4 nkodePolicy := NewDefaultNKodePolicy() keypadSize := KeypadDimension{AttrsPerKey: attrsPerKey, NumbOfKeys: numbOfKeys} nkodeApi := NewNKodeAPI(db) customerId, err := nkodeApi.CreateNewCustomer(nkodePolicy, nil) assert.NoError(t, err) signupResponse, err := nkodeApi.GenerateSignupInterface(userEmail, *customerId, keypadSize) assert.NoError(t, err) setInterface := signupResponse.UserIdxInterface sessionIdStr := signupResponse.SessionId sessionId, err := SessionIdFromString(sessionIdStr) assert.NoError(t, err) keypadSize = KeypadDimension{AttrsPerKey: numbOfKeys, NumbOfKeys: numbOfKeys} userPasscode := setInterface[:passcodeLen] setKeySelect, err := SelectKeyByAttrIdx(setInterface, userPasscode, keypadSize) assert.NoError(t, err) confirmInterface, err := nkodeApi.SetNKode(*customerId, sessionId, setKeySelect) assert.NoError(t, err) confirmKeySelect, err := SelectKeyByAttrIdx(confirmInterface, userPasscode, keypadSize) err = nkodeApi.ConfirmNKode(*customerId, sessionId, confirmKeySelect) assert.NoError(t, err) keypadSize = KeypadDimension{AttrsPerKey: attrsPerKey, NumbOfKeys: numbOfKeys} loginInterface, err := nkodeApi.GetLoginInterface(userEmail, *customerId) assert.NoError(t, err) loginKeySelection, err := SelectKeyByAttrIdx(loginInterface.UserIdxInterface, userPasscode, keypadSize) assert.NoError(t, err) _, err = nkodeApi.Login(*customerId, userEmail, loginKeySelection) assert.NoError(t, err) err = nkodeApi.RenewAttributes(*customerId) assert.NoError(t, err) loginInterface, err = nkodeApi.GetLoginInterface(userEmail, *customerId) assert.NoError(t, err) loginKeySelection, err = SelectKeyByAttrIdx(loginInterface.UserIdxInterface, userPasscode, keypadSize) assert.NoError(t, err) _, err = nkodeApi.Login(*customerId, userEmail, loginKeySelection) assert.NoError(t, err) } }