Skip to content

Commit b3879db

Browse files
committed
Add unit tests for testing membership/admin function
1 parent 533f72f commit b3879db

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
import unittest
2+
from unittest.mock import patch
3+
from mlflow_oidc_auth.token_utils import token_get_user_groups, token_get_user_is_admin
4+
from mlflow_oidc_auth.config import config
5+
6+
7+
@patch("mlflow_oidc_auth.token_utils.config.OIDC_GROUP_FILTER_PATTERNS", new=["mlflow-*"])
8+
@patch("mlflow_oidc_auth.token_utils.config.OIDC_ADMIN_GROUP_NAME", new="admin-mlflow")
9+
class TestGroupMemberships(unittest.TestCase):
10+
11+
def test_user_in_all_groups_and_admin_group(self):
12+
13+
token = {
14+
"userinfo": {
15+
config.OIDC_GROUPS_ATTRIBUTE: [
16+
"mlflow-user-team1",
17+
"mlflow-user-team2",
18+
config.OIDC_ADMIN_GROUP_NAME,
19+
]
20+
}
21+
}
22+
23+
user_groups = token_get_user_groups(token)
24+
is_admin = token_get_user_is_admin(user_groups)
25+
26+
self.assertEqual(len(user_groups), len(token["userinfo"][config.OIDC_GROUPS_ATTRIBUTE]))
27+
self.assertTrue(is_admin)
28+
29+
def test_user_in_no_groups_but_in_admin_group(self):
30+
31+
token = {
32+
"userinfo": {
33+
config.OIDC_GROUPS_ATTRIBUTE: [
34+
"otherapp-team1",
35+
"otherapp-team2",
36+
config.OIDC_ADMIN_GROUP_NAME,
37+
]
38+
}
39+
}
40+
41+
user_groups = token_get_user_groups(token)
42+
is_admin = token_get_user_is_admin(user_groups)
43+
44+
self.assertEqual(len(user_groups), 1)
45+
self.assertTrue(is_admin)
46+
47+
def test_user_in_no_groups_not_in_admin_group(self):
48+
49+
token = {
50+
"userinfo": {
51+
config.OIDC_GROUPS_ATTRIBUTE: [
52+
"otherapp-team1",
53+
"otherapp-team2",
54+
]
55+
}
56+
}
57+
58+
user_groups = token_get_user_groups(token)
59+
is_admin = token_get_user_is_admin(user_groups)
60+
61+
self.assertEqual(len(user_groups), 0)
62+
self.assertFalse(is_admin)
63+
64+
def test_user_in_groups_not_in_admin_group(self):
65+
66+
token = {
67+
"userinfo": {
68+
config.OIDC_GROUPS_ATTRIBUTE: [
69+
"otherapp-team1",
70+
"otherapp-team2",
71+
"mlflow-user-team1",
72+
"mlflow-user-team2",
73+
]
74+
}
75+
}
76+
77+
user_groups = token_get_user_groups(token)
78+
is_admin = token_get_user_is_admin(user_groups)
79+
80+
self.assertEqual(len(user_groups), 2)
81+
self.assertFalse(is_admin)

0 commit comments

Comments
 (0)