@@ -264,6 +264,60 @@ def query():
264
264
self .assertRaisesRegex (HTTPError , "value must be smaller that value2" , query )
265
265
266
266
267
+ # This test makes sure that the endpoint we use for macros (configs/conf-macros)
268
+ # does not require admin privileges and can be used by normal users.
269
+ class TestPrivileges (testlib .SDKTestCase ):
270
+ macro_name = "SDKTestMacro"
271
+ username = "SDKTestMacroUser" .lower ()
272
+ password = "SDKTestMacroUserPassword!"
273
+
274
+ def setUp (self ):
275
+ testlib .SDKTestCase .setUp (self )
276
+ self .cleanUsers ()
277
+
278
+ self .service .users .create (
279
+ username = self .username , password = self .password , roles = ["user" ]
280
+ )
281
+
282
+ self .service .logout ()
283
+ kwargs = self .opts .kwargs .copy ()
284
+ kwargs ["username" ] = self .username
285
+ kwargs ["password" ] = self .password
286
+ self .service = client .connect (** kwargs )
287
+
288
+ self .cleanMacros ()
289
+
290
+ def tearDown (self ):
291
+ testlib .SDKTestCase .tearDown (self )
292
+ self .cleanMacros ()
293
+ self .service = client .connect (** self .opts .kwargs )
294
+ self .cleanUsers ()
295
+
296
+ def cleanUsers (self ):
297
+ for user in self .service .users :
298
+ if user .name == self .username :
299
+ self .service .users .delete (self .username )
300
+
301
+ def cleanMacros (self ):
302
+ for macro in self .service .macros :
303
+ if macro .name == self .macro_name :
304
+ self .service .macros .delete (self .macro_name )
305
+
306
+ def test_create_macro_no_admin (self ):
307
+ self .service .macros .create (self .macro_name , 'eval test="123"' )
308
+
309
+ stream = self .service .jobs .oneshot (
310
+ f"| makeresults count=1 | `{ self .macro_name } `" ,
311
+ output_mode = "json" ,
312
+ )
313
+
314
+ result = results .JSONResultsReader (stream )
315
+ out = list (result )
316
+
317
+ self .assertTrue (len (out ) == 1 )
318
+ self .assertEqual (out [0 ]["test" ], "123" )
319
+
320
+
267
321
if __name__ == "__main__" :
268
322
try :
269
323
import unittest2 as unittest
0 commit comments