Skip to content

Commit 2ac5569

Browse files
committed
Adding enforcer test
1 parent 58d1eb9 commit 2ac5569

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

test/main.cpp

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,58 @@ TEST_F(SerializeTest, EnforcerTest) {
295295
ASSERT_STREQ(err_msg, "token verification failed: 'scope' claim verification failed.");
296296
ASSERT_TRUE(rv == -1) << err_msg;
297297

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+
298350
}
299351

300352
}

0 commit comments

Comments
 (0)