upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/tests/unit/test_session.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/test_session.c')
-rw-r--r--tests/unit/test_session.c37
1 files changed, 13 insertions, 24 deletions
diff --git a/tests/unit/test_session.c b/tests/unit/test_session.c
index 548be0d..2619ba3 100644
--- a/tests/unit/test_session.c
+++ b/tests/unit/test_session.c
@@ -46,8 +46,7 @@ static void test_sessions(void)
46 ASSERT_EQ_INT(0, session_active_count(), "No sessions after init"); 46 ASSERT_EQ_INT(0, session_active_count(), "No sessions after init");
47 47
48 printf("\n--- session_create ---\n"); 48 printf("\n--- session_create ---\n");
49 const char *secrets[] = {"secret1", "secret2"}; 49 session_t *s = session_create(0x0A01A8C0, 60000);
50 session_t *s = session_create(0x0A01A8C0, 60000, secrets, 2);
51 ASSERT(s != NULL, "session_create returns non-NULL"); 50 ASSERT(s != NULL, "session_create returns non-NULL");
52 ASSERT_EQ_INT(1, session_active_count(), "1 session after create"); 51 ASSERT_EQ_INT(1, session_active_count(), "1 session after create");
53 ASSERT_EQ_INT(1, g_granted_count, "firewall_grant_access was called"); 52 ASSERT_EQ_INT(1, g_granted_count, "firewall_grant_access was called");
@@ -57,23 +56,18 @@ static void test_sessions(void)
57 ASSERT(found == s, "session_find_by_ip returns the created session"); 56 ASSERT(found == s, "session_find_by_ip returns the created session");
58 ASSERT(session_find_by_ip(0x01020304) == NULL, "session_find_by_ip returns NULL for unknown IP"); 57 ASSERT(session_find_by_ip(0x01020304) == NULL, "session_find_by_ip returns NULL for unknown IP");
59 58
60 printf("\n--- session_is_secret_spent ---\n");
61 ASSERT(session_is_secret_spent("secret1"), "secret1 is marked spent");
62 ASSERT(session_is_secret_spent("secret2"), "secret2 is marked spent");
63 ASSERT(!session_is_secret_spent("secret_unknown"), "unknown secret is not spent");
64
65 printf("\n--- Duplicate secret rejected ---\n");
66 const char *dup_secrets[] = {"secret1"};
67 g_granted_count = 0;
68 session_t *dup = session_create(0x0B01A8C0, 60000, dup_secrets, 1);
69 ASSERT(dup == NULL, "Duplicate secret returns NULL");
70 ASSERT_EQ_INT(0, g_granted_count, "No new firewall grant for duplicate");
71
72 printf("\n--- session_extend ---\n"); 59 printf("\n--- session_extend ---\n");
73 uint64_t old_allotment = s->allotment_ms; 60 uint64_t old_allotment = s->allotment_ms;
74 session_extend(s, 30000); 61 session_extend(s, 30000);
75 ASSERT(s->allotment_ms == old_allotment + 30000, "Allotment extended by 30000ms"); 62 ASSERT(s->allotment_ms == old_allotment + 30000, "Allotment extended by 30000ms");
76 63
64 printf("\n--- session_extend for existing client ---\n");
65 g_granted_count = 0;
66 session_t *s2 = session_create(0x0A01A8C0, 30000);
67 ASSERT(s2 == s, "same IP returns existing session");
68 ASSERT_EQ_INT(0, g_granted_count, "no new firewall grant for extension");
69 ASSERT(s->allotment_ms == old_allotment + 60000, "allotment extended by 30000ms on re-pay");
70
77 printf("\n--- session_revoke ---\n"); 71 printf("\n--- session_revoke ---\n");
78 g_revoked_count = 0; 72 g_revoked_count = 0;
79 session_revoke(s); 73 session_revoke(s);
@@ -81,10 +75,8 @@ static void test_sessions(void)
81 ASSERT_EQ_INT(0, session_active_count(), "No active sessions after revoke"); 75 ASSERT_EQ_INT(0, session_active_count(), "No active sessions after revoke");
82 76
83 printf("\n--- session_revoke_all ---\n"); 77 printf("\n--- session_revoke_all ---\n");
84 const char *s1[] = {"s1"}; 78 session_create(0x01000001, 60000);
85 const char *s2[] = {"s2"}; 79 session_create(0x01000002, 60000);
86 session_create(0x01000001, 60000, s1, 1);
87 session_create(0x01000002, 60000, s2, 1);
88 ASSERT_EQ_INT(2, session_active_count(), "2 sessions created"); 80 ASSERT_EQ_INT(2, session_active_count(), "2 sessions created");
89 81
90 g_revoked_count = 0; 82 g_revoked_count = 0;
@@ -93,8 +85,7 @@ static void test_sessions(void)
93 85
94 printf("\n--- session_tick does not crash ---\n"); 86 printf("\n--- session_tick does not crash ---\n");
95 session_manager_init(); 87 session_manager_init();
96 const char *st[] = {"tick_secret"}; 88 session_create(0x0A000001, 60000);
97 session_create(0x0A000001, 60000, st, 1);
98 session_tick(); 89 session_tick();
99 ASSERT_EQ_INT(1, session_active_count(), "Session still active after tick (not expired)"); 90 ASSERT_EQ_INT(1, session_active_count(), "Session still active after tick (not expired)");
100} 91}
@@ -106,9 +97,8 @@ void test_bytes_sessions(void)
106 memset(&g_test_config, 0, sizeof(g_test_config)); 97 memset(&g_test_config, 0, sizeof(g_test_config));
107 strncpy(g_test_config.metric, "bytes", sizeof(g_test_config.metric) - 1); 98 strncpy(g_test_config.metric, "bytes", sizeof(g_test_config.metric) - 1);
108 99
109 const char *sec[] = {"bytes_secret"};
110 uint64_t allotment = 22020096; 100 uint64_t allotment = 22020096;
111 session_t *s = session_create_bytes(0x0A010001, allotment, sec, 1); 101 session_t *s = session_create_bytes(0x0A010001, allotment);
112 ASSERT(s != NULL, "bytes session created"); 102 ASSERT(s != NULL, "bytes session created");
113 ASSERT_EQ_INT(1, session_active_count(), "1 active bytes session"); 103 ASSERT_EQ_INT(1, session_active_count(), "1 active bytes session");
114 104
@@ -133,8 +123,7 @@ void test_bytes_sessions(void)
133 session_manager_init(); 123 session_manager_init();
134 memset(&g_test_config, 0, sizeof(g_test_config)); 124 memset(&g_test_config, 0, sizeof(g_test_config));
135 strncpy(g_test_config.metric, "milliseconds", sizeof(g_test_config.metric) - 1); 125 strncpy(g_test_config.metric, "milliseconds", sizeof(g_test_config.metric) - 1);
136 const char *ms_sec[] = {"ms_secret"}; 126 session_t *ms = session_create(0x0A020001, 60000);
137 session_t *ms = session_create(0x0A020001, 60000, ms_sec, 1);
138 ASSERT(ms != NULL, "ms session created"); 127 ASSERT(ms != NULL, "ms session created");
139 ASSERT(!session_is_expired(ms), "ms session not expired immediately"); 128 ASSERT(!session_is_expired(ms), "ms session not expired immediately");
140 129