Compare commits

..

18 Commits

Author SHA1 Message Date
carlos
e2d5546de1 Merge pull request 'fix-pin-reset-bug' (#26) from fix-pin-reset-bug into master
Some checks failed
release / docker (push) Has been cancelled
Reviewed-on: #26
2025-02-21 10:31:45 +01:00
alfred-mk
95089875bf remove extra spacing 2025-02-21 12:30:28 +03:00
alfred-mk
4db25055ad Added a fix for invalid PIN in PIN reset 2025-02-21 12:29:28 +03:00
alfred-mk
e8e6f0e371 Added a fix to only hash valid PINs in SaveOthersTemporaryPin 2025-02-21 11:49:51 +03:00
Carlosokumu
91c4967efa check for back 2025-02-21 11:01:42 +03:00
Carlosokumu
7b1824f18c go back if account not unlocked 2025-02-21 11:01:31 +03:00
Carlosokumu
04c3f5ce65 repeat same node on invalid input 2025-02-21 11:01:14 +03:00
Carlosokumu
e646658f40 repeat same node on invalid input 2025-02-21 10:56:12 +03:00
Carlosokumu
c4cab444ad repeat same node on invalid input 2025-02-20 21:26:53 +03:00
Carlosokumu
b5ade9112e catch incorrect pin when resetting for others 2025-02-20 21:21:20 +03:00
Carlosokumu
3b9184e852 check for back 2025-02-20 21:20:41 +03:00
alfred-mk
07b85768d1 Merge branch 'master' into fix-pin-reset-bug 2025-02-20 20:00:21 +03:00
alfred-mk
c9678df152 reset the PIN using the formattedNumber 2025-02-20 19:59:52 +03:00
alfred-mk
c37fee5e54 have the secondarySessionId as a formatted phone number 2025-02-20 19:58:12 +03:00
alfred-mk
98b2a31655 remove extra space 2025-02-20 19:56:48 +03:00
d4fcf40b8d Merge pull request 'remove the sessionId from the ctx' (#25) from remove-session-id-from-ctx into master
Reviewed-on: #25
2025-02-20 17:28:54 +01:00
alfred-mk
83a10efcd9 remove the sessionId from the ctx to prevent double sessionId key (<sessionId>.<sessionId>) 2025-02-20 15:10:18 +03:00
0089d6f125 Merge pull request 'tests-menu-traversal' (#16) from tests-menu-traversal into master
Reviewed-on: #16
2025-02-13 10:00:42 +01:00
11 changed files with 35 additions and 24 deletions

View File

@@ -62,7 +62,6 @@ func main() {
}
ctx := context.Background()
ctx = context.WithValue(ctx, "SessionId", sessionId)
ln, err := lang.LanguageFromCode(config.Language())
if err != nil {
@@ -74,12 +73,12 @@ func main() {
pfp := path.Join(scriptDir, "pp.csv")
cfg := engine.Config{
Root: "root",
SessionId: sessionId,
OutputSize: uint32(size),
FlagCount: uint32(128),
MenuSeparator: menuSeparator,
EngineDebug: engineDebug,
Root: "root",
SessionId: sessionId,
OutputSize: uint32(size),
FlagCount: uint32(128),
MenuSeparator: menuSeparator,
EngineDebug: engineDebug,
ResetOnEmptyInput: true,
}
@@ -128,8 +127,8 @@ func main() {
accountService := services.New(ctx, menuStorageService)
_, err = lhs.GetHandler(accountService)
if err != nil {
fmt.Fprintf(os.Stderr, "get accounts service handler: %v\n", err)
os.Exit(1)
fmt.Fprintf(os.Stderr, "get accounts service handler: %v\n", err)
os.Exit(1)
}
en := lhs.GetEngine(cfg, rs, pe)

View File

@@ -42,7 +42,6 @@ func main() {
}
ctx := context.Background()
ctx = context.WithValue(ctx, "SessionId", sessionId)
pfp := path.Join(scriptDir, "pp.csv")
flagParser, err := application.NewFlagManager(pfp)

View File

@@ -318,7 +318,7 @@ func (h *MenuHandlers) VerifyNewPin(ctx context.Context, sym string, input []byt
return res, fmt.Errorf("missing session")
}
flag_valid_pin, _ := h.flagManager.GetFlag("flag_valid_pin")
if !h.st.Back() {
if string(input) != "0" {
pinInput := string(input)
// Validate that the PIN is a 4-digit number.
if pin.IsValidPIN(pinInput) {
@@ -384,6 +384,12 @@ func (h *MenuHandlers) SaveOthersTemporaryPin(ctx context.Context, sym string, i
}
temporaryPin := string(input)
// Validate that the input is a 4-digit number.
if !pin.IsValidPIN(temporaryPin) {
return res, nil
}
// Retrieve the blocked number associated with this session
blockedNumber, err := store.ReadEntry(ctx, sessionId, storedb.DATA_BLOCKED_NUMBER)
if err != nil {
@@ -416,7 +422,7 @@ func (h *MenuHandlers) CheckBlockedNumPinMisMatch(ctx context.Context, sym strin
if !ok {
return res, fmt.Errorf("missing session")
}
if h.st.Back() {
if string(input) == "0" {
res.FlagReset = append(res.FlagReset, flag_pin_mismatch)
return res, nil
}
@@ -456,7 +462,7 @@ func (h *MenuHandlers) ConfirmPinChange(ctx context.Context, sym string, input [
}
flag_pin_mismatch, _ := h.flagManager.GetFlag("flag_pin_mismatch")
if h.st.Back() {
if string(input) == "0" {
res.FlagReset = append(res.FlagReset, flag_pin_mismatch)
return res, nil
}
@@ -601,16 +607,20 @@ func (h *MenuHandlers) ValidateBlockedNumber(ctx context.Context, sym string, in
return res, fmt.Errorf("missing session")
}
if h.st.Back() {
if string(input) == "0" {
res.FlagReset = append(res.FlagReset, flag_unregistered_number)
return res, nil
}
blockedNumber := string(input)
_, err = store.ReadEntry(ctx, blockedNumber, storedb.DATA_PUBLIC_KEY)
if !phone.IsValidPhoneNumber(blockedNumber) {
formattedNumber, err := phone.FormatPhoneNumber(blockedNumber)
if err != nil {
res.FlagSet = append(res.FlagSet, flag_unregistered_number)
logg.ErrorCtxf(ctx, "Failed to format the phone number: %s", blockedNumber, "error", err)
return res, nil
}
_, err = store.ReadEntry(ctx, formattedNumber, storedb.DATA_PUBLIC_KEY)
if err != nil {
if db.IsNotFound(err) {
logg.InfoCtxf(ctx, "Invalid or unregistered number")
@@ -621,7 +631,7 @@ func (h *MenuHandlers) ValidateBlockedNumber(ctx context.Context, sym string, in
return res, err
}
}
err = store.WriteEntry(ctx, sessionId, storedb.DATA_BLOCKED_NUMBER, []byte(blockedNumber))
err = store.WriteEntry(ctx, sessionId, storedb.DATA_BLOCKED_NUMBER, []byte(formattedNumber))
if err != nil {
return res, nil
}

View File

@@ -21,7 +21,7 @@ var (
sessionID string
src = rand.NewSource(42)
g = rand.New(src)
secondarySessionId = "0700000000"
secondarySessionId = "+254700000000"
)
var groupTestFile = flag.String("test-file", "group_test.json", "The test file to use for running the group tests")

View File

@@ -1,4 +1,4 @@
CATCH pin_entry flag_incorrect_pin 1
CATCH incorrect_pin flag_incorrect_pin 1
RELOAD retrieve_blocked_number
MAP retrieve_blocked_number
CATCH invalid_others_pin flag_valid_pin 0

View File

@@ -1,4 +1,4 @@
CATCH no_admin_privilege flag_admin_privilege 0
CATCH no_admin_privilege flag_admin_privilege 0
LOAD reset_account_authorized 0
RELOAD reset_account_authorized
MOUT back 0

View File

@@ -1,7 +1,8 @@
RELOAD reset_incorrect
RELOAD reset_allow_update
MOUT back 0
HALT
INCMP _ 0
RELOAD authorize_account
CATCH incorrect_pin flag_incorrect_pin 1
CATCH _ flag_allow_update 0
INCMP new_pin *

View File

@@ -3,3 +3,4 @@ MOUT quit 9
HALT
INCMP _ 1
INCMP quit 9
INCMP . *

View File

@@ -3,12 +3,12 @@ LOAD authorize_account 5
LOAD reset_allow_update 4
LOAD verify_new_pin 2
LOAD save_temporary_pin 1
LOAD reset_incorrect 0
LOAD reset_incorrect 0
MOUT change_pin 1
MOUT reset_pin 2
MOUT back 0
HALT
INCMP _ 0
INCMP old_pin 1
INCMP old_pin 1
INCMP enter_other_number 2
INCMP . *

View File

@@ -3,4 +3,4 @@ MOUT quit 9
HALT
INCMP _ 1
INCMP quit 9
INCMP . *

View File

@@ -3,3 +3,4 @@ MOUT quit 9
HALT
INCMP main 0
INCMP quit 9
INCMP . *