@@ -295,6 +295,58 @@ TEST_F(SerializeTest, EnforcerTest) {
295
295
ASSERT_STREQ (err_msg, " token verification failed: 'scope' claim verification failed." );
296
296
ASSERT_TRUE (rv == -1 ) << err_msg;
297
297
298
+ }
299
+
300
+ TEST_F (SerializeTest, EnforcerScopeTest) {
301
+ char *err_msg = nullptr ;
302
+
303
+ auto rv = scitoken_set_claim_string (m_token.get (), " aud" ,
304
+ " https://demo.scitokens.org/" , &err_msg);
305
+ ASSERT_TRUE (rv == 0 );
306
+
307
+ std::vector<const char *> audiences_array;
308
+ audiences_array.push_back (" https://demo.scitokens.org/" );
309
+ audiences_array.push_back (nullptr );
310
+
311
+ auto enforcer = enforcer_create (" https://demo.scitokens.org/gtest" , &audiences_array[0 ], &err_msg);
312
+ ASSERT_TRUE (enforcer != nullptr );
313
+
314
+ scitoken_set_serialize_profile (m_token.get (), SciTokenProfile::WLCG_1_0);
315
+
316
+ rv = scitoken_set_claim_string (m_token.get (), " scope" ,
317
+ " storage.modify:/ storage.read:/ openid offline_access" , &err_msg);
318
+ ASSERT_TRUE (rv == 0 );
319
+
320
+ char *token_value = nullptr ;
321
+ rv = scitoken_serialize (m_token.get (), &token_value, &err_msg);
322
+ ASSERT_TRUE (rv == 0 );
323
+
324
+ rv = scitoken_deserialize_v2 (token_value, m_read_token.get (), nullptr , &err_msg);
325
+ ASSERT_TRUE (rv == 0 );
326
+
327
+ Acl *acls;
328
+ enforcer_generate_acls (enforcer, m_read_token.get (), &acls, &err_msg);
329
+ ASSERT_TRUE (acls != nullptr );
330
+ int idx = 0 ;
331
+ bool found_read = false ;
332
+ bool found_write = false ;
333
+ while (acls[idx].resource && acls[idx++].authz ) {
334
+ auto resource = acls[idx-1 ].resource ;
335
+ auto authz = acls[idx-1 ].authz ;
336
+ if (strcmp (authz, " read" ) == 0 ) {
337
+ found_read = true ;
338
+ ASSERT_STREQ (resource, " /" );
339
+ } else if (strcmp (authz, " write" ) == 0 ) {
340
+ found_write = true ;
341
+ ASSERT_STREQ (resource, " /" );
342
+ }
343
+ }
344
+ ASSERT_TRUE (found_read);
345
+ ASSERT_TRUE (found_write);
346
+
347
+
348
+
349
+
298
350
}
299
351
300
352
}
0 commit comments