Skip to content

Commit ec94679

Browse files
committed
test: add test_cmd_oauth_verify_shared_keys to test_cfg
Signed-off-by: Hans Zandbelt <[email protected]>
1 parent bb31729 commit ec94679

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

src/cfg/oauth.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,6 @@ const char *oidc_cmd_oauth_verify_shared_keys_set(cmd_parms *cmd, void *struct_p
299299
char *use = NULL;
300300

301301
oidc_cfg_t *cfg = (oidc_cfg_t *)ap_get_module_config(cmd->server->module_config, &auth_openidc_module);
302-
apr_hash_t **shared_keys = &cfg->oauth->verify_shared_keys;
303302

304303
char *kid = NULL, *secret = NULL;
305304
int key_len = 0;
@@ -313,11 +312,11 @@ const char *oidc_cmd_oauth_verify_shared_keys_set(cmd_parms *cmd, void *struct_p
313312
secret, oidc_jose_e2s(cmd->pool, err));
314313
}
315314

316-
if (*shared_keys == NULL)
317-
*shared_keys = apr_hash_make(cmd->pool);
315+
if (cfg->oauth->verify_shared_keys == NULL)
316+
cfg->oauth->verify_shared_keys = apr_hash_make(cmd->pool);
318317
if (use)
319318
jwk->use = apr_pstrdup(cmd->pool, use);
320-
apr_hash_set(*shared_keys, jwk->kid, APR_HASH_KEY_STRING, jwk);
319+
apr_hash_set(cfg->oauth->verify_shared_keys, jwk->kid, APR_HASH_KEY_STRING, jwk);
321320

322321
return NULL;
323322
}

test/test_cfg.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
#include "cfg/cfg_int.h"
4646
#include "cfg/provider.h"
4747
#include "check_util.h"
48+
#include "jose.h"
4849
#include "util.h"
4950

5051
// provider
@@ -177,6 +178,40 @@ START_TEST(test_cmd_cookie_same_site) {
177178
}
178179
END_TEST
179180

181+
START_TEST(test_cmd_oauth_verify_shared_keys) {
182+
cmd_parms *cmd = oidc_test_cmd_get(OIDCOAuthVerifySharedKeys);
183+
oidc_cfg_t *cfg = oidc_test_cfg_get();
184+
apr_hash_t *keys = NULL;
185+
oidc_jwk_t *jwk = NULL;
186+
apr_hash_index_t *hi = NULL;
187+
188+
keys = oidc_cfg_oauth_verify_shared_keys_get(cfg);
189+
ck_assert_ptr_null(keys);
190+
191+
ck_assert_ptr_null(oidc_cmd_oauth_verify_shared_keys_set(cmd, NULL, "mysecret"));
192+
keys = oidc_cfg_oauth_verify_shared_keys_get(cfg);
193+
ck_assert_ptr_nonnull(keys);
194+
ck_assert_int_eq(apr_hash_count(keys), 1);
195+
hi = apr_hash_first(cmd->pool, keys);
196+
apr_hash_this(hi, NULL, NULL, (void **)&jwk);
197+
ck_assert_ptr_nonnull(jwk);
198+
ck_assert_int_eq(jwk->kty, CJOSE_JWK_KTY_OCT);
199+
ck_assert_ptr_null(jwk->use);
200+
201+
ck_assert_ptr_null(oidc_cmd_oauth_verify_shared_keys_set(cmd, NULL, "enc:mykid#mysecret2"));
202+
keys = oidc_cfg_oauth_verify_shared_keys_get(cfg);
203+
ck_assert_ptr_nonnull(keys);
204+
ck_assert_int_eq(apr_hash_count(keys), 2);
205+
jwk = apr_hash_get(keys, "mykid", APR_HASH_KEY_STRING);
206+
ck_assert_ptr_nonnull(jwk);
207+
ck_assert_int_eq(jwk->kty, CJOSE_JWK_KTY_OCT);
208+
ck_assert_str_eq(jwk->use, "enc");
209+
ck_assert_str_eq(jwk->kid, "mykid");
210+
211+
oidc_jwk_list_destroy_hash(keys);
212+
}
213+
END_TEST
214+
180215
int main(void) {
181216
TCase *core = tcase_create("core");
182217
tcase_add_checked_fixture(core, oidc_test_setup, oidc_test_teardown);
@@ -186,6 +221,7 @@ int main(void) {
186221
tcase_add_test(core, test_cfg_cache_connections_ttl);
187222
#endif
188223
tcase_add_test(core, test_cmd_cookie_same_site);
224+
tcase_add_test(core, test_cmd_oauth_verify_shared_keys);
189225

190226
Suite *s = suite_create("cfg");
191227
suite_add_tcase(s, core);

0 commit comments

Comments
 (0)