@@ -3,25 +3,22 @@ package diamond.policy.tiled_test
33import data .diamond.policy.tiled
44import rego.v1
55
6- test_default_no_scopes if {
7- tiled.scopes == set ()
8- }
9-
10- test_wrong_azp_read_scopes if {
11- tiled.scopes == tiled.read_scopes with data .diamond.policy.token.claims as {}
12- tiled.scopes == tiled.read_scopes with data .diamond.policy.token.claims as {" sub" : " foo" }
13- tiled.scopes == tiled.read_scopes with data .diamond.policy.token.claims as {" azp" : " foo" }
6+ test_read_scopes if {
7+ tiled.scopes == {
8+ " read:metadata" ,
9+ " read:data" ,
10+ } with data .diamond.policy.token.claims as {}
1411}
1512
16- test_blueapi_given_write_scopes if {
13+ test_tiled_writer_given_write_scopes if {
1714 tiled.scopes == {
1815 " read:metadata" ,
1916 " read:data" ,
2017 " write:metadata" ,
2118 " write:data" ,
2219 " create:node" ,
2320 " register" ,
24- } with data .diamond.policy.token.claims as {" azp " : " foo-blueapi " }
21+ } with data .diamond.policy.token.claims as {" aud " : [ " tiled-writer " ] }
2522}
2623
2724diamond_data := {
@@ -96,33 +93,110 @@ diamond_data := {
9693test_user_session_tags if {
9794 tiled.user_sessions == set () with data .diamond.data as diamond_data
9895 with data .diamond.policy.token.claims as {" fedid" : " oscar" }
99- tiled.user_sessions == {
100- ` {"proposal": 1, "visit": 2, "beamline": "b07"}` ,
101- ` {"proposal": 1, "visit": 1, "beamline": "i03"}` ,
102- } with data .diamond.data as diamond_data
96+ tiled.user_sessions == {11 , 12 } with data .diamond.data as diamond_data
10397 with data .diamond.policy.token.claims as {" fedid" : " alice" }
104- tiled.user_sessions == {
105- ` {"proposal": 1, "visit": 2, "beamline": "b07"}` ,
106- ` {"proposal": 1, "visit": 1, "beamline": "i03"}` ,
107- ` {"proposal": 2, "visit": 1, "beamline": "b07"}` ,
108- ` {"proposal": 2, "visit": 2, "beamline": "b07"}` ,
109- } with data .diamond.data as diamond_data
98+ tiled.user_sessions == {11 , 12 , 13 , 14 } with data .diamond.data as diamond_data
11099 with data .diamond.policy.token.claims as {" fedid" : " bob" }
111- tiled.user_sessions == {
112- ` {"proposal": 1, "visit": 2, "beamline": "b07"}` ,
113- ` {"proposal": 1, "visit": 1, "beamline": "i03"}` ,
114- ` {"proposal": 2, "visit": 1, "beamline": "b07"}` ,
115- ` {"proposal": 2, "visit": 2, "beamline": "b07"}` ,
116- } with data .diamond.data as diamond_data
100+ tiled.user_sessions == {" *" } with data .diamond.data as diamond_data
117101 with data .diamond.policy.token.claims as {" fedid" : " carol" }
118- tiled.user_sessions == {
119- ` {"proposal": 2, "visit": 1, "beamline": "b07"}` ,
120- ` {"proposal": 2, "visit": 2, "beamline": "b07"}` ,
121- } with data .diamond.data as diamond_data
102+ tiled.user_sessions == {13 , 14 } with data .diamond.data as diamond_data
122103 with data .diamond.policy.token.claims as {" fedid" : " desmond" }
123- tiled.user_sessions == {
124- ` {"proposal": 2, "visit": 1, "beamline": "b07"}` ,
125- ` {"proposal": 2, "visit": 2, "beamline": "b07"}` ,
126- } with data .diamond.data as diamond_data
104+ tiled.user_sessions == {13 , 14 } with data .diamond.data as diamond_data
127105 with data .diamond.policy.token.claims as {" fedid" : " edna" }
128106}
107+
108+ test_user_session_allow if {
109+ tiled.user_session == 11 with data .diamond.data as diamond_data
110+ with input as {" beamline" : " i03" , " proposal" : 1 , " visit" : 1 }
111+ with data .diamond.policy.token.claims as {" fedid" : " carol" }
112+ }
113+
114+ test_user_session_not_allowed if {
115+ not tiled.user_session with data .diamond.data as diamond_data
116+ with input as {" beamline" : " i03" , " proposal" : 1 , " visit" : 1 }
117+ with data .diamond.policy.token.claims as {" fedid" : " oscar" }
118+ }
119+
120+ test_not_modify_session if {
121+ not tiled.modify_session with data .diamond.data as diamond_data
122+ with input as {" session" : " 13" }
123+ with data .diamond.policy.token.claims as {" fedid" : " alice" }
124+ }
125+
126+ test_modify_session if {
127+ tiled.modify_session with data .diamond.data as diamond_data
128+ with input as {" session" : " 11" }
129+ with data .diamond.policy.token.claims as {" fedid" : " alice" }
130+ }
131+
132+ # Service account tests
133+
134+ test_user_session_allow_service_account_on_proposal if {
135+ tiled.user_session == 11 with data .diamond.data as diamond_data
136+ with input as {" beamline" : " i03" , " proposal" : 1 , " visit" : 1 }
137+ with data .diamond.policy.token.claims as {" subject" : {" proposals" : [1 ], " sessions" : [], " permissions" : []}}
138+ }
139+
140+ test_user_session_allow_service_account_on_session if {
141+ tiled.user_session == 11 with data .diamond.data as diamond_data
142+ with input as {" beamline" : " i03" , " proposal" : 1 , " visit" : 1 }
143+ with data .diamond.policy.token.claims as {" subject" : {" proposals" : [], " sessions" : [11 ], " permissions" : []}}
144+ }
145+
146+ test_user_session_not_allow_service_account_wrong_beamline if {
147+ not tiled.user_session with data .diamond.data as diamond_data
148+ with input as {" beamline" : " i03" , " proposal" : 1 , " visit" : 2 }
149+ with data .diamond.policy.token.claims as {" subject" : {" proposals" : [], " sessions" : [], " permissions" : [" b07_admin" ]}}
150+ }
151+
152+ test_user_session_allow_service_account_with_beamline if {
153+ tiled.user_session with data .diamond.data as diamond_data
154+ with input as {" beamline" : " b07" , " proposal" : 1 , " visit" : 2 }
155+ with data .diamond.policy.token.claims as {
156+ " subject" : {" proposals" : [], " sessions" : [], " permissions" : [" b07_admin" ]},
157+ " fedid" : " " ,
158+ }
159+ }
160+
161+ test_modify_session_on_proposal if {
162+ tiled.modify_session with data .diamond.data as diamond_data
163+ with input as {" session" : " 11" }
164+ with data .diamond.policy.token.claims as {" subject" : {" proposals" : [1 ], " sessions" : [], " permissions" : []}}
165+ }
166+
167+ test_modify_session_on_session if {
168+ tiled.modify_session with data .diamond.data as diamond_data
169+ with input as {" session" : " 11" }
170+ with data .diamond.policy.token.claims as {" subject" : {" proposals" : [], " sessions" : [11 ], " permissions" : []}}
171+ }
172+
173+ test_modify_session_on_permission if {
174+ tiled.modify_session with data .diamond.data as diamond_data
175+ with input as {" session" : " 12" }
176+ with data .diamond.policy.token.claims as {" subject" : {
177+ " proposals" : [],
178+ " sessions" : [],
179+ " permissions" : [" b07_admin" ],
180+ }}
181+ }
182+
183+ test_user_session_tags_service_account if {
184+ tiled.user_sessions == {11 } with data .diamond.data as diamond_data
185+ with data .diamond.policy.token.claims as {" subject" : {
186+ " proposals" : [],
187+ " sessions" : [11 ],
188+ " permissions" : [],
189+ }}
190+ tiled.user_sessions == {11 , 12 } with data .diamond.data as diamond_data
191+ with data .diamond.policy.token.claims as {" subject" : {
192+ " proposals" : [1 ],
193+ " sessions" : [],
194+ " permissions" : [],
195+ }}
196+ tiled.user_sessions == {12 , 13 , 14 } with data .diamond.data as diamond_data
197+ with data .diamond.policy.token.claims as {" subject" : {
198+ " proposals" : [],
199+ " sessions" : [],
200+ " permissions" : [" b07_admin" ],
201+ }}
202+ }
0 commit comments