user signup sessions
This commit is contained in:
@@ -1,13 +1,67 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"go-nkode/models"
|
||||
"go-nkode/util"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func SelectKeyByAttrIdx(interfaceUser []int, passcodeIdxs []int, keypadSize models.KeypadSize) ([]int, error) {
|
||||
selectedKeys := make([]int, len(passcodeIdxs))
|
||||
for idx := range passcodeIdxs {
|
||||
attrIdx := util.IndexOf[int](interfaceUser, passcodeIdxs[idx])
|
||||
keyNumb := attrIdx / keypadSize.AttrsPerKey
|
||||
if keyNumb < 0 || keyNumb >= keypadSize.NumbOfKeys {
|
||||
return nil, errors.New(fmt.Sprintf("index key number: %d out of range 0-%d", keyNumb, keypadSize.NumbOfKeys-1))
|
||||
}
|
||||
selectedKeys[idx] = keyNumb
|
||||
}
|
||||
return selectedKeys, nil
|
||||
}
|
||||
|
||||
func TestNewCustomerAttributes(t *testing.T) {
|
||||
keypad := models.KeypadSize{AttrsPerKey: 10, NumbOfKeys: 5}
|
||||
_, nil := NewCustomerAttributes(keypad)
|
||||
assert.NoError(t, nil)
|
||||
}
|
||||
|
||||
func TestCustomer_ValidKeyEntry(t *testing.T) {
|
||||
keypadSize := models.KeypadSize{AttrsPerKey: 10, NumbOfKeys: 7}
|
||||
nkodePolicy := models.NewDefaultNKodePolicy()
|
||||
customer, err := NewCustomer(keypadSize, nkodePolicy)
|
||||
assert.NoError(t, err)
|
||||
newUserInterface, err := NewUserInterface(customer.Attributes.KeypadSize)
|
||||
assert.NoError(t, err)
|
||||
username := "testing123"
|
||||
passcodeIdx := []int{0, 1, 2, 3}
|
||||
err = customer.AddNewUser(username, passcodeIdx, *newUserInterface)
|
||||
assert.NoError(t, err)
|
||||
userLoginInterface, err := customer.GetLoginInterface(username)
|
||||
assert.NoError(t, err)
|
||||
selectedKeys, err := SelectKeyByAttrIdx(userLoginInterface, passcodeIdx, keypadSize)
|
||||
assert.NoError(t, err)
|
||||
validatedPasscode, err := customer.ValidKeyEntry(username, selectedKeys)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, len(validatedPasscode), len(passcodeIdx))
|
||||
for idx := range validatedPasscode {
|
||||
assert.Equal(t, validatedPasscode[idx], passcodeIdx[idx])
|
||||
}
|
||||
}
|
||||
|
||||
func TestCustomer_IsValidNKode(t *testing.T) {
|
||||
keypadSize := models.KeypadSize{AttrsPerKey: 10, NumbOfKeys: 7}
|
||||
nkodePolicy := models.NewDefaultNKodePolicy()
|
||||
customer, err := NewCustomer(keypadSize, nkodePolicy)
|
||||
assert.NoError(t, err)
|
||||
newUserInterface, err := NewUserInterface(customer.Attributes.KeypadSize)
|
||||
assert.NoError(t, err)
|
||||
username := "testing123"
|
||||
passcodeIdx := []int{0, 1, 2, 3}
|
||||
err = customer.AddNewUser(username, passcodeIdx, *newUserInterface)
|
||||
assert.NoError(t, err)
|
||||
err = customer.IsValidNKode(passcodeIdx)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user