4646#include "cfg/cfg_int.h"
4747#include "cfg/dir.h"
4848#include "cfg/provider.h"
49+ #include "helper.h"
4950#include "jose.h"
5051#include "session.h"
5152#include "util/util.h"
@@ -273,74 +274,12 @@ int key2jwk(int argc, char **argv, apr_pool_t *pool) {
273274 return 0 ;
274275}
275276
276- static request_rec * request_setup (apr_pool_t * pool ) {
277- const unsigned int kIdx = 0 ;
278- const unsigned int kEls = kIdx + 1 ;
279- request_rec * request = (request_rec * )apr_pcalloc (pool , sizeof (request_rec ));
280-
281- request -> pool = pool ;
282-
283- request -> headers_in = apr_table_make (request -> pool , 0 );
284- request -> headers_out = apr_table_make (request -> pool , 0 );
285- request -> err_headers_out = apr_table_make (request -> pool , 0 );
286-
287- apr_table_set (request -> headers_in , "Host" , "www.example.com" );
288- apr_table_set (request -> headers_in , "OIDC_foo" , "some-value" );
289- apr_table_set (request -> headers_in , "Cookie" ,
290- "foo=bar; "
291- "mod_auth_openidc_session"
292- "=0123456789abcdef; baz=zot" );
293-
294- request -> server = apr_pcalloc (request -> pool , sizeof (struct server_rec ));
295- request -> server -> process = apr_pcalloc (request -> pool , sizeof (struct process_rec ));
296- apr_pool_create (& request -> server -> process -> pool , pool );
297- apr_pool_create (& request -> server -> process -> pconf , pool );
298- request -> connection = apr_pcalloc (request -> pool , sizeof (struct conn_rec ));
299- request -> connection -> local_addr = apr_pcalloc (request -> pool , sizeof (apr_sockaddr_t ));
300-
301- apr_pool_userdata_set ("https" , "scheme" , NULL , request -> pool );
302- request -> server -> server_hostname = "www.example.com" ;
303- request -> connection -> local_addr -> port = 443 ;
304- request -> unparsed_uri = "/bla?foo=bar¶m1=value1" ;
305- request -> args = "foo=bar¶m1=value1" ;
306- apr_uri_parse (request -> pool , "https://www.example.com/bla?foo=bar¶m1=value1" , & request -> parsed_uri );
307-
308- auth_openidc_module .module_index = kIdx ;
309- oidc_cfg_t * cfg = oidc_cfg_server_create (request -> server -> process -> pconf , request -> server );
310-
311- oidc_cfg_provider_issuer_set (request -> server -> process -> pconf , oidc_cfg_provider_get (cfg ),
312- "https://idp.example.com" );
313- oidc_cfg_provider_authorization_endpoint_url_set (request -> server -> process -> pconf , oidc_cfg_provider_get (cfg ),
314- "https://idp.example.com/authorize" );
315- oidc_cfg_provider_scope_set (request -> server -> process -> pconf , oidc_cfg_provider_get (cfg ), "openid" );
316- oidc_cfg_provider_client_id_set (request -> server -> process -> pconf , oidc_cfg_provider_get (cfg ), "client_id" );
317- cfg -> redirect_uri = "https://www.example.com/protected/" ;
318-
319- oidc_dir_cfg_t * d_cfg = oidc_cfg_dir_config_create (request -> server -> process -> pconf , NULL );
320-
321- request -> server -> module_config = apr_pcalloc (request -> server -> process -> pconf , sizeof (void ) * kEls );
322- request -> per_dir_config = apr_pcalloc (request -> server -> process -> pconf , sizeof (void ) * kEls );
323- ap_set_module_config (request -> server -> module_config , & auth_openidc_module , cfg );
324- ap_set_module_config (request -> per_dir_config , & auth_openidc_module , d_cfg );
325-
326- cfg -> cache .impl = & oidc_cache_shm ;
327- cfg -> cache .cfg = NULL ;
328- cfg -> cache .shm_size_max = 500 ;
329- cfg -> cache .shm_entry_size_max = 16384 + 255 + 17 ;
330- if (oidc_cfg_post_config (request -> server -> process -> pconf , cfg , request -> server ) != OK ) {
331- printf ("cfg->cache->post_config failed!\n" );
332- exit (-1 );
333- }
334-
335- return request ;
336- }
337-
338277int enckey (int argc , char * * argv , apr_pool_t * pool ) {
339278
340279 if (argc <= 2 )
341280 return usage (argc , argv , "enckey <secret> [hash] [key-length]" );
342281
343- request_rec * r = request_setup ( pool );
282+ request_rec * r = oidc_test_request_get ( );
344283
345284 oidc_jwk_t * jwk = NULL ;
346285 if (oidc_util_key_symmetric_create (r , argv [2 ], argc > 4 ? _oidc_str_to_int (argv [4 ], 0 ) : 0 ,
@@ -375,7 +314,7 @@ int hash_base64url(int argc, char **argv, apr_pool_t *pool) {
375314 int base64url_decode_first = argc > 4 ? (_oidc_strcmp (argv [4 ], "yes" ) == 0 ) : 0 ;
376315 char * output = NULL ;
377316
378- request_rec * r = request_setup ( pool );
317+ request_rec * r = oidc_test_request_get ( );
379318
380319 if (base64url_decode_first ) {
381320
@@ -435,7 +374,7 @@ int uuid(int argc, char **argv, apr_pool_t *pool) {
435374 n = 25000000 ;
436375 }
437376
438- request_rec * r = request_setup ( pool );
377+ request_rec * r = oidc_test_request_get ( );
439378
440379 apr_hash_t * entries = apr_hash_make (pool );
441380 while (i < n ) {
@@ -457,45 +396,43 @@ int uuid(int argc, char **argv, apr_pool_t *pool) {
457396}
458397int main (int argc , char * * argv , char * * env ) {
459398
399+ int rc = 0 ;
400+
460401 if (argc <= 1 )
461402 return usage (argc , argv , NULL );
462403
463- if (apr_app_initialize (& argc , (const char * const * * )argv , (const char * const * * )env ) != APR_SUCCESS ) {
464- printf ("apr_app_initialize failed\n" );
465- return -1 ;
466- }
404+ oidc_test_setup ();
467405
468- oidc_pre_config_init ();
469-
470- apr_pool_t * pool = NULL ;
471- apr_pool_create (& pool , NULL );
406+ apr_pool_t * pool = oidc_test_pool_get ();
472407
473408 if (_oidc_strcmp (argv [1 ], "sign" ) == 0 )
474- return sign (argc , argv , pool );
409+ rc = sign (argc , argv , pool );
410+
411+ else if (_oidc_strcmp (argv [1 ], "verify" ) == 0 )
412+ rc = verify (argc , argv , pool );
475413
476- if (_oidc_strcmp (argv [1 ], "verify " ) == 0 )
477- return verify (argc , argv , pool );
414+ else if (_oidc_strcmp (argv [1 ], "decrypt " ) == 0 )
415+ rc = decrypt (argc , argv , pool );
478416
479- if (_oidc_strcmp (argv [1 ], "decrypt " ) == 0 )
480- return decrypt (argc , argv , pool );
417+ else if (_oidc_strcmp (argv [1 ], "key2jwk " ) == 0 )
418+ rc = key2jwk (argc , argv , pool );
481419
482- if (_oidc_strcmp (argv [1 ], "key2jwk " ) == 0 )
483- return key2jwk (argc , argv , pool );
420+ else if (_oidc_strcmp (argv [1 ], "enckey " ) == 0 )
421+ rc = enckey (argc , argv , pool );
484422
485- if (_oidc_strcmp (argv [1 ], "enckey " ) == 0 )
486- return enckey (argc , argv , pool );
423+ else if (_oidc_strcmp (argv [1 ], "hash_base64url " ) == 0 )
424+ rc = hash_base64url (argc , argv , pool );
487425
488- if (_oidc_strcmp (argv [1 ], "hash_base64url " ) == 0 )
489- return hash_base64url (argc , argv , pool );
426+ else if (_oidc_strcmp (argv [1 ], "timestamp " ) == 0 )
427+ rc = timestamp (argc , argv , pool );
490428
491- if (_oidc_strcmp (argv [1 ], "timestamp " ) == 0 )
492- return timestamp (argc , argv , pool );
429+ else if (_oidc_strcmp (argv [1 ], "uuid " ) == 0 )
430+ rc = uuid (argc , argv , pool );
493431
494- if ( _oidc_strcmp ( argv [ 1 ], "uuid" ) == 0 )
495- return uuid (argc , argv , pool );
432+ else
433+ rc = usage (argc , argv , NULL );
496434
497- EVP_cleanup ();
498- apr_terminate ();
435+ oidc_test_teardown ();
499436
500- return usage ( argc , argv , NULL ) ;
437+ return rc ;
501438}
0 commit comments