Add default customer id

This commit is contained in:
2024-08-30 18:37:22 -05:00
parent fe06a95c98
commit 5684387bb0
16 changed files with 77 additions and 40 deletions

View File

@@ -1,4 +1,4 @@
package m
package model
import (
"errors"

View File

@@ -1,4 +1,4 @@
package m
package model
import (
"errors"

View File

@@ -1,4 +1,4 @@
package m
package model
import "errors"

View File

@@ -1,4 +1,4 @@
package m
package model
import (
"encoding/json"
@@ -13,8 +13,8 @@ type NKodeHandler struct {
func (h *NKodeHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
switch r.URL.Path {
case api.CreateNewCustomer:
h.CreateNewCustomerHandler(w, r)
//case api.CreateNewCustomer:
// h.CreateNewCustomerHandler(w, r)
case api.GenerateSignupInterface:
h.GenerateSignupInterfaceHandler(w, r)
case api.SetNKode:
@@ -46,7 +46,7 @@ func (h *NKodeHandler) CreateNewCustomerHandler(w http.ResponseWriter, r *http.R
log.Fatal(err)
return
}
customerId, err := h.Api.CreateNewCustomer(customerPost.NKodePolicy)
customerId, err := h.Api.CreateNewCustomer(customerPost.NKodePolicy, nil)
if err != nil {
internalServerErrorHandler(w)
log.Fatal(err)
@@ -84,7 +84,17 @@ func (h *NKodeHandler) GenerateSignupInterfaceHandler(w http.ResponseWriter, r *
log.Fatal(err)
return
}
resp, err := h.Api.GenerateSignupInterface(signupPost.CustomerId, KeypadDefault)
kp := KeypadDimension{
AttrsPerKey: signupPost.AttrsPerKey,
NumbOfKeys: signupPost.NumbOfKeys,
}
err = kp.IsValidKeypadDimension()
if err != nil {
keypadSizeOutOfRange(w)
log.Fatal(err)
return
}
resp, err := h.Api.GenerateSignupInterface(signupPost.CustomerId, kp)
if err != nil {
internalServerErrorHandler(w)
log.Fatal(err)
@@ -270,3 +280,8 @@ func methodNotAllowed(w http.ResponseWriter) {
w.WriteHeader(http.StatusMethodNotAllowed)
w.Write([]byte("405 method not allowed"))
}
func keypadSizeOutOfRange(w http.ResponseWriter) {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte("invalid keypad dimensions"))
}

View File

@@ -1,4 +1,4 @@
package m
package model
import (
"errors"

View File

@@ -1,4 +1,4 @@
package m
package model
import (
"errors"

View File

@@ -1,4 +1,4 @@
package m
package model
import (
"github.com/google/uuid"
@@ -14,6 +14,8 @@ type NewCustomerPost struct {
type GenerateSignupInterfacePost struct {
CustomerId CustomerId `json:"customer_id"`
AttrsPerKey int `json:"attrs_per_key"`
NumbOfKeys int `json:"numb_of_keys"`
}
type SetNKodePost struct {
@@ -66,7 +68,7 @@ type Username string
type IdxInterface []int
type NKodeAPIInterface interface {
CreateNewCustomer(NKodePolicy) (*CustomerId, error)
CreateNewCustomer(NKodePolicy, *CustomerId) (*CustomerId, error)
GenerateSignupInterface(CustomerId, KeypadDimension) (*GenerateSignupInterfaceResp, error)
SetNKode(Username, CustomerId, SessionId, KeySelection) (IdxInterface, error)
ConfirmNKode(CustomerId, SessionId, KeySelection) error

View File

@@ -1,4 +1,4 @@
package m
package model
import (
"go-nkode/util"

View File

@@ -1,4 +1,4 @@
package m
package model
import (
"crypto/sha256"

View File

@@ -1,4 +1,4 @@
package m
package model
import (
"errors"

View File

@@ -1,4 +1,4 @@
package m
package model
import (
"github.com/stretchr/testify/assert"

View File

@@ -14,24 +14,24 @@ func TestCustomer(t *testing.T) {
func testNewCustomerAttributes(t *testing.T) {
// keypad := m.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 5}
_, nil := m.NewCustomerAttributes()
_, nil := model.NewCustomerAttributes()
assert.NoError(t, nil)
}
func testCustomerValidKeyEntry(t *testing.T) {
kp := m.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 9}
nkodePolicy := m.NewDefaultNKodePolicy()
customer, err := m.NewCustomer(nkodePolicy)
kp := model.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 9}
nkodePolicy := model.NewDefaultNKodePolicy()
customer, err := model.NewCustomer(nkodePolicy)
assert.NoError(t, err)
newUserInterface, err := m.NewUserInterface(&kp)
newUserInterface, err := model.NewUserInterface(&kp)
assert.NoError(t, err)
username := m.Username("testing123")
username := model.Username("testing123")
passcodeIdx := []int{0, 1, 2, 3}
user, err := NewUser(*customer, username, passcodeIdx, *newUserInterface, kp)
assert.NoError(t, err)
userLoginInterface, err := user.GetLoginInterface()
assert.NoError(t, err)
selectedKeys, err := m.SelectKeyByAttrIdx(userLoginInterface, passcodeIdx, kp)
selectedKeys, err := model.SelectKeyByAttrIdx(userLoginInterface, passcodeIdx, kp)
assert.NoError(t, err)
validatedPasscode, err := ValidKeyEntry(*user, *customer, selectedKeys)
assert.NoError(t, err)
@@ -42,13 +42,13 @@ func testCustomerValidKeyEntry(t *testing.T) {
}
func testCustomerIsValidNKode(t *testing.T) {
kp := m.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 7}
nkodePolicy := m.NewDefaultNKodePolicy()
customer, err := m.NewCustomer(nkodePolicy)
kp := model.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 7}
nkodePolicy := model.NewDefaultNKodePolicy()
customer, err := model.NewCustomer(nkodePolicy)
assert.NoError(t, err)
newUserInterface, err := m.NewUserInterface(&kp)
newUserInterface, err := model.NewUserInterface(&kp)
assert.NoError(t, err)
username := m.Username("testing123")
username := model.Username("testing123")
passcodeIdx := []int{0, 1, 2, 3}
user, err := NewUser(*customer, username, passcodeIdx, *newUserInterface, kp)
assert.NoError(t, err)

View File

@@ -5,11 +5,11 @@ import (
)
type DbAccessor interface {
GetCustomer(m.CustomerId) (*m.Customer, error)
GetUser(m.Username, m.CustomerId) (*m.User, error)
WriteNewCustomer(m.Customer) error
WriteNewUser(m.User) error
UpdateUserInterface(m.UserId, m.UserInterface) error
Renew(m.CustomerId) error
RefreshUser(m.User, []int, m.CustomerAttributes) error
GetCustomer(model.CustomerId) (*model.Customer, error)
GetUser(model.Username, model.CustomerId) (*model.User, error)
WriteNewCustomer(model.Customer) error
WriteNewUser(model.User) error
UpdateUserInterface(model.UserId, model.UserInterface) error
Renew(model.CustomerId) error
RefreshUser(model.User, []int, model.CustomerAttributes) error
}

View File

@@ -18,8 +18,11 @@ func NewNKodeAPI(db DbAccessor) NKodeAPI {
}
}
func (n *NKodeAPI) CreateNewCustomer(nkodePolicy m.NKodePolicy) (*m.CustomerId, error) {
func (n *NKodeAPI) CreateNewCustomer(nkodePolicy m.NKodePolicy, id *m.CustomerId) (*m.CustomerId, error) {
newCustomer, err := m.NewCustomer(nkodePolicy)
if id != nil {
newCustomer.Id = *id
}
if err != nil {
return nil, err
}

View File

@@ -31,7 +31,7 @@ func testNKodeAPI(t *testing.T, db DbAccessor) {
nkodePolicy := m.NewDefaultNKodePolicy()
keypadSize := m.KeypadDimension{AttrsPerKey: 10, NumbOfKeys: 8}
nkodeApi := NewNKodeAPI(db)
customerId, err := nkodeApi.CreateNewCustomer(nkodePolicy)
customerId, err := nkodeApi.CreateNewCustomer(nkodePolicy, nil)
assert.NoError(t, err)
signupResponse, err := nkodeApi.GenerateSignupInterface(*customerId, keypadSize)
assert.NoError(t, err)

21
main.go
View File

@@ -2,6 +2,7 @@ package main
import (
"fmt"
"github.com/google/uuid"
"go-nkode/core/api"
"go-nkode/core/model"
"go-nkode/core/nkode"
@@ -16,9 +17,10 @@ func main() {
log.Fatal(err)
}
nkodeApi := nkode.NewNKodeAPI(db)
handler := m.NKodeHandler{Api: &nkodeApi}
AddDefaultCustomer(nkodeApi)
handler := model.NKodeHandler{Api: &nkodeApi}
mux := http.NewServeMux()
mux.Handle(api.CreateNewCustomer, &handler)
//mux.Handle(api.CreateNewCustomer, &handler)
mux.Handle(api.GenerateSignupInterface, &handler)
mux.Handle(api.SetNKode, &handler)
mux.Handle(api.ConfirmNKode, &handler)
@@ -28,3 +30,18 @@ func main() {
fmt.Println("Running on localhost:8080...")
log.Fatal(http.ListenAndServe("localhost:8080", mux))
}
func AddDefaultCustomer(api nkode.NKodeAPI) {
newId, err := uuid.Parse("ed9ed6e0-082c-4b57-8d8c-f00ed6493457")
if err != nil {
log.Fatal(err)
}
customerId := model.CustomerId(newId)
nkode_policy := model.NewDefaultNKodePolicy()
_, err = api.CreateNewCustomer(nkode_policy, &customerId)
if err != nil {
log.Print(err)
} else {
log.Print("created new customer: ", newId)
}
}