@@ -264,6 +264,59 @@ def query():
264264 self .assertRaisesRegex (HTTPError , "value must be smaller that value2" , query )
265265
266266
267+ class TestPrivileges (testlib .SDKTestCase ):
268+ macro_name = "SDKTestMacro"
269+ username = "SDKTestMacroUser" .lower ()
270+ password = "SDKTestMacroUserPassword!"
271+
272+ def setUp (self ):
273+ logging .basicConfig (force = True , level = logging .DEBUG )
274+ testlib .SDKTestCase .setUp (self )
275+ self .cleanUsers ()
276+
277+ self .service .users .create (
278+ username = self .username , password = self .password , roles = ["user" ]
279+ )
280+
281+ self .service .logout ()
282+ kwargs = self .opts .kwargs .copy ()
283+ kwargs ["username" ] = self .username
284+ kwargs ["password" ] = self .password
285+ self .service = client .connect (** kwargs )
286+
287+ self .cleanMacros ()
288+
289+ def tearDown (self ):
290+ testlib .SDKTestCase .tearDown (self )
291+ self .cleanMacros ()
292+ self .service = client .connect (** self .opts .kwargs )
293+ self .cleanUsers ()
294+
295+ def cleanUsers (self ):
296+ for user in self .service .users :
297+ if user .name == self .username :
298+ self .service .users .delete (self .username )
299+
300+ def cleanMacros (self ):
301+ for macro in self .service .macros :
302+ if macro .name == self .macro_name :
303+ self .service .macros .delete (self .macro_name )
304+
305+ def test_create_macro_no_admin (self ):
306+ self .service .macros .create (self .macro_name , 'eval test="123"' )
307+
308+ stream = self .service .jobs .oneshot (
309+ f"| makeresults count=1 | `{ self .macro_name } `" ,
310+ output_mode = "json" ,
311+ )
312+
313+ result = results .JSONResultsReader (stream )
314+ out = list (result )
315+
316+ self .assertTrue (len (out ) == 1 )
317+ self .assertEqual (out [0 ]["test" ], "123" )
318+
319+
267320if __name__ == "__main__" :
268321 try :
269322 import unittest2 as unittest
0 commit comments