59 lines
1.9 KiB
Go
59 lines
1.9 KiB
Go
package test
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"go-nkode/core"
|
|
"testing"
|
|
)
|
|
|
|
func TestCustomer(t *testing.T) {
|
|
testNewCustomerAttributes(t)
|
|
testCustomerValidKeyEntry(t)
|
|
testCustomerIsValidNKode(t)
|
|
}
|
|
|
|
func testNewCustomerAttributes(t *testing.T) {
|
|
_, nil := core.NewCustomerAttributes()
|
|
assert.NoError(t, nil)
|
|
}
|
|
|
|
func testCustomerValidKeyEntry(t *testing.T) {
|
|
kp := core.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 9}
|
|
nkodePolicy := core.NewDefaultNKodePolicy()
|
|
customer, err := core.NewCustomer(nkodePolicy)
|
|
assert.NoError(t, err)
|
|
mockSvgInterface := make(core.SvgIdInterface, kp.TotalAttrs())
|
|
userInterface, err := core.NewUserInterface(&kp, mockSvgInterface)
|
|
assert.NoError(t, err)
|
|
userEmail := "testing@example.com"
|
|
passcodeIdx := []int{0, 1, 2, 3}
|
|
user, err := core.NewUser(*customer, userEmail, passcodeIdx, *userInterface, kp)
|
|
assert.NoError(t, err)
|
|
userLoginInterface, err := user.GetLoginInterface()
|
|
assert.NoError(t, err)
|
|
selectedKeys, err := core.SelectKeyByAttrIdx(userLoginInterface, passcodeIdx, kp)
|
|
assert.NoError(t, err)
|
|
validatedPasscode, err := core.ValidKeyEntry(*user, *customer, selectedKeys)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, len(validatedPasscode), len(passcodeIdx))
|
|
for idx := range validatedPasscode {
|
|
assert.Equal(t, validatedPasscode[idx], passcodeIdx[idx])
|
|
}
|
|
}
|
|
|
|
func testCustomerIsValidNKode(t *testing.T) {
|
|
kp := core.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 7}
|
|
nkodePolicy := core.NewDefaultNKodePolicy()
|
|
customer, err := core.NewCustomer(nkodePolicy)
|
|
assert.NoError(t, err)
|
|
mockSvgInterface := make(core.SvgIdInterface, kp.TotalAttrs())
|
|
userInterface, err := core.NewUserInterface(&kp, mockSvgInterface)
|
|
assert.NoError(t, err)
|
|
userEmail := "testing123@example.com"
|
|
passcodeIdx := []int{0, 1, 2, 3}
|
|
user, err := core.NewUser(*customer, userEmail, passcodeIdx, *userInterface, kp)
|
|
assert.NoError(t, err)
|
|
err = customer.IsValidNKode(user.Kp, passcodeIdx)
|
|
assert.NoError(t, err)
|
|
}
|