@@ -264,6 +264,60 @@ def query():
264264 self .assertRaisesRegex (HTTPError , "value must be smaller that value2" , query )
265265
266266
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+
267321if __name__ == "__main__" :
268322 try :
269323 import unittest2 as unittest
0 commit comments