@@ -87,6 +87,72 @@ START_TEST(test_util_base64url_decode) {
8787}
8888END_TEST
8989
90+ START_TEST (test_util_appinfo_set ) {
91+ apr_byte_t rc = FALSE;
92+ json_t * claims = NULL ;
93+ request_rec * r = oidc_test_request_get ();
94+
95+ rc = oidc_util_json_decode_object (r ,
96+ "{"
97+ "\"simple\":\"hans\","
98+ "\"name\": \"GÜnther\","
99+ "\"dagger\": \"D†gÿger\","
100+ "\"anarr\" : [ false, \"hans\", \"piet\", true, {} ],"
101+ "\"names\" : [ \"hans\", \"piet\" ],"
102+ "\"abool\": true,"
103+ "\"anint\": 5,"
104+ "\"lint\": 111111111111111,"
105+ "\"areal\": 1.5,"
106+ "\"anobj\" : { \"hans\": \"piet\", \"abool\": false },"
107+ "\"anull\": null"
108+ "}" ,
109+ & claims );
110+ ck_assert_int_eq (rc , TRUE);
111+
112+ oidc_util_appinfo_set_all (r , NULL , "OIDC_CLAIM_" , "," , OIDC_APPINFO_PASS_HEADERS , OIDC_APPINFO_ENCODING_NONE );
113+
114+ oidc_util_appinfo_set_all (r , claims , "OIDC_CLAIM_" , "," , OIDC_APPINFO_PASS_HEADERS , OIDC_APPINFO_ENCODING_NONE );
115+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_simple" ), "hans" );
116+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_name" ), "G\u00DCnther" );
117+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_dagger" ), "D\u2020gÿger" );
118+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_anarr" ), "0,hans,piet,1" );
119+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_names" ), "hans,piet" );
120+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_abool" ), "1" );
121+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_anint" ), "5" );
122+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_lint" ), "111111111111111" );
123+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_areal" ), "1.5" );
124+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_anobj" ), "{\"hans\":\"piet\",\"abool\":false}" );
125+
126+ ck_assert_ptr_null (apr_table_get (r -> headers_in , "OIDC_CLAIM_anull" ));
127+ ck_assert_ptr_null (apr_table_get (r -> subprocess_env , "OIDC_CLAIM_names" ));
128+
129+ oidc_util_appinfo_set_all (r , claims , "MYPREFIX_" , "#" , OIDC_APPINFO_PASS_HEADERS | OIDC_APPINFO_PASS_ENVVARS ,
130+ OIDC_APPINFO_ENCODING_NONE );
131+ ck_assert_str_eq (apr_table_get (r -> headers_in , "MYPREFIX_simple" ), "hans" );
132+ ck_assert_str_eq (apr_table_get (r -> headers_in , "MYPREFIX_name" ), "G\u00DCnther" );
133+ ck_assert_str_eq (apr_table_get (r -> headers_in , "MYPREFIX_dagger" ), "D\u2020gÿger" );
134+ ck_assert_str_eq (apr_table_get (r -> headers_in , "MYPREFIX_anarr" ), "0#hans#piet#1" );
135+
136+ ck_assert_ptr_null (apr_table_get (r -> subprocess_env , "OIDC_CLAIM_names" ));
137+ ck_assert_str_eq (apr_table_get (r -> subprocess_env , "MYPREFIX_anarr" ), "0#hans#piet#1" );
138+
139+ oidc_util_appinfo_set_all (r , claims , "OIDC_CLAIM_" , "," , OIDC_APPINFO_PASS_HEADERS ,
140+ OIDC_APPINFO_ENCODING_BASE64URL );
141+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_simple" ), "aGFucw" );
142+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_name" ), "R8OcbnRoZXI" );
143+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_dagger" ), "ROKAoGfDv2dlcg" );
144+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_anarr" ), "MCxoYW5zLHBpZXQsMQ" );
145+
146+ oidc_util_appinfo_set_all (r , claims , "OIDC_CLAIM_" , "," , OIDC_APPINFO_PASS_HEADERS ,
147+ OIDC_APPINFO_ENCODING_LATIN1 );
148+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_simple" ), "hans" );
149+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_name" ), "G\xDCnther" );
150+ ck_assert_str_eq (apr_table_get (r -> headers_in , "OIDC_CLAIM_dagger" ), "D?g\xFFger" );
151+
152+ json_decref (claims );
153+ }
154+ END_TEST
155+
90156int main (void ) {
91157 TCase * core = tcase_create ("base64" );
92158 tcase_add_checked_fixture (core , oidc_test_setup , oidc_test_teardown );
@@ -95,7 +161,9 @@ int main(void) {
95161 tcase_add_test (core , test_util_base64_decode );
96162 tcase_add_test (core , test_util_base64url_decode );
97163
98- Suite * s = suite_create ("metadata" );
164+ tcase_add_test (core , test_util_appinfo_set );
165+
166+ Suite * s = suite_create ("util" );
99167 suite_add_tcase (s , core );
100168
101169 return oidc_test_suite_run (s );
0 commit comments