diff options
Diffstat (limited to 'tests/unit/test_session.c')
| -rw-r--r-- | tests/unit/test_session.c | 37 |
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 | ||