52 lines
1.7 KiB
Go
52 lines
1.7 KiB
Go
package nkode
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
model2 "go-nkode/core/model"
|
|
"testing"
|
|
)
|
|
|
|
func TestNewCustomerAttributes(t *testing.T) {
|
|
keypad := model2.KeypadSize{AttrsPerKey: 10, NumbOfKeys: 5}
|
|
_, nil := NewCustomerAttributes(keypad)
|
|
assert.NoError(t, nil)
|
|
}
|
|
|
|
func TestCustomer_ValidKeyEntry(t *testing.T) {
|
|
keypadSize := model2.KeypadSize{AttrsPerKey: 10, NumbOfKeys: 7}
|
|
nkodePolicy := model2.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 := model2.KeypadSize{AttrsPerKey: 10, NumbOfKeys: 7}
|
|
nkodePolicy := model2.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)
|
|
}
|