From 9a63234470270fb028f8612615e4d5ef70bbb171 Mon Sep 17 00:00:00 2001 From: Carlosokumu Date: Mon, 10 Feb 2025 15:45:15 +0300 Subject: [PATCH] set and reset admin flag using persister's state --- menutraversal_test/menu_traversal_test.go | 74 +++++++++++++++++++---- 1 file changed, 62 insertions(+), 12 deletions(-) diff --git a/menutraversal_test/menu_traversal_test.go b/menutraversal_test/menu_traversal_test.go index b040606..4cf8715 100644 --- a/menutraversal_test/menu_traversal_test.go +++ b/menutraversal_test/menu_traversal_test.go @@ -16,11 +16,12 @@ import ( ) var ( - logg = logging.NewVanilla().WithDomain("menutraversaltest") - testData = driver.ReadData() - sessionID string - src = rand.NewSource(42) - g = rand.New(src) + logg = logging.NewVanilla().WithDomain("menutraversaltest") + testData = driver.ReadData() + sessionID string + src = rand.NewSource(42) + g = rand.New(src) + secondarySessionId = "0700000000" ) var groupTestFile = flag.String("test-file", "group_test.json", "The test file to use for running the group tests") @@ -97,7 +98,43 @@ func TestMain(m *testing.M) { } func TestAccountCreationSuccessful(t *testing.T) { - en, fn, eventChannel := testutil.TestEngine(sessionID) + en, fn, eventChannel, _, _ := testutil.TestEngine(sessionID) + defer fn() + ctx := context.Background() + sessions := testData + for _, session := range sessions { + groups := driver.FilterGroupsByName(session.Groups, "account_creation_successful") + for _, group := range groups { + for i, step := range group.Steps { + logg.TraceCtxf(ctx, "executing step", "i", i, "step", step) + cont, err := en.Exec(ctx, []byte(step.Input)) + if err != nil { + t.Fatalf("Test case '%s' failed at input '%s': %v", group.Name, step.Input, err) + } + if !cont { + break + } + w := bytes.NewBuffer(nil) + _, err = en.Flush(ctx, w) + if err != nil { + t.Fatalf("Test case '%s' failed during Flush: %v", group.Name, err) + } + b := w.Bytes() + match, err := step.MatchesExpectedContent(b) + if err != nil { + t.Fatalf("Error compiling regex for step '%s': %v", step.Input, err) + } + if !match { + t.Fatalf("expected:\n\t%s\ngot:\n\t%s\n", step.ExpectedContent, b) + } + } + } + } + <-eventChannel +} + +func TestSecondaryAccount(t *testing.T) { + en, fn, eventChannel, _, _ := testutil.TestEngine(secondarySessionId) defer fn() ctx := context.Background() sessions := testData @@ -140,7 +177,7 @@ func TestAccountRegistrationRejectTerms(t *testing.T) { t.Fail() } edgeCaseSessionID := v.String() - en, fn, _ := testutil.TestEngine(edgeCaseSessionID) + en, fn, _, _, _ := testutil.TestEngine(edgeCaseSessionID) defer fn() ctx := context.Background() sessions := testData @@ -176,7 +213,7 @@ func TestAccountRegistrationRejectTerms(t *testing.T) { } func TestMainMenuHelp(t *testing.T) { - en, fn, _ := testutil.TestEngine(sessionID) + en, fn, _, _, _ := testutil.TestEngine(sessionID) defer fn() ctx := context.Background() sessions := testData @@ -218,7 +255,7 @@ func TestMainMenuHelp(t *testing.T) { } func TestMainMenuQuit(t *testing.T) { - en, fn, _ := testutil.TestEngine(sessionID) + en, fn, _, _, _ := testutil.TestEngine(sessionID) defer fn() ctx := context.Background() sessions := testData @@ -259,7 +296,7 @@ func TestMainMenuQuit(t *testing.T) { } func TestMyAccount_MyAddress(t *testing.T) { - en, fn, _ := testutil.TestEngine(sessionID) + en, fn, _, _, _ := testutil.TestEngine(sessionID) defer fn() ctx := context.Background() sessions := testData @@ -303,7 +340,7 @@ func TestMyAccount_MyAddress(t *testing.T) { } func TestMainMenuSend(t *testing.T) { - en, fn, _ := testutil.TestEngine(sessionID) + en, fn, _, _, _ := testutil.TestEngine(sessionID) defer fn() ctx := context.Background() sessions := testData @@ -354,9 +391,12 @@ func TestGroups(t *testing.T) { if err != nil { log.Fatalf("Failed to load test groups: %v", err) } - en, fn, _ := testutil.TestEngine(sessionID) + en, fn, _, pe, flagParser := testutil.TestEngine(sessionID) defer fn() ctx := context.Background() + + flag_admin_privilege, _ := flagParser.GetFlag("flag_admin_privilege") + // Create test cases from loaded groups tests := driver.CreateTestCases(groups) for _, tt := range tests { @@ -377,9 +417,19 @@ func TestGroups(t *testing.T) { balance := extractBalance(b) attempts := extractRemainingAttempts(b) + st := pe.GetState() + + if st != nil { + st.SetFlag(flag_admin_privilege) + if tt.Name == "menu_my_account_reset_others_pin_with_no_privileges" { + st.ResetFlag(flag_admin_privilege) + } + } + expectedContent := []byte(tt.ExpectedContent) expectedContent = bytes.Replace(expectedContent, []byte("{balance}"), []byte(balance), -1) expectedContent = bytes.Replace(expectedContent, []byte("{attempts}"), []byte(attempts), -1) + expectedContent = bytes.Replace(expectedContent, []byte("{secondary_session_id}"), []byte(secondarySessionId), -1) tt.ExpectedContent = string(expectedContent)