|
19 | 19 | import logging |
20 | 20 |
|
21 | 21 | import splunklib.client as client |
| 22 | +from splunklib import results |
22 | 23 |
|
23 | 24 | import pytest |
24 | 25 |
|
@@ -153,6 +154,58 @@ def test_acl_fails_without_owner(self): |
153 | 154 | ) |
154 | 155 |
|
155 | 156 |
|
| 157 | +class TestPrivileges(testlib.SDKTestCase): |
| 158 | + macro_name = "SDKTestMacro" |
| 159 | + username = "SDKTestMacroUser".lower() |
| 160 | + password = "SDKTestMacroUserPassword!" |
| 161 | + |
| 162 | + def setUp(self): |
| 163 | + testlib.SDKTestCase.setUp(self) |
| 164 | + self.cleanUsers() |
| 165 | + |
| 166 | + self.service.users.create( |
| 167 | + username=self.username, password=self.password, roles=["user"] |
| 168 | + ) |
| 169 | + |
| 170 | + self.service.logout() |
| 171 | + kwargs = self.opts.kwargs.copy() |
| 172 | + kwargs["username"] = self.username |
| 173 | + kwargs["password"] = self.password |
| 174 | + self.service = client.connect(**kwargs) |
| 175 | + |
| 176 | + self.cleanMacros() |
| 177 | + |
| 178 | + def tearDown(self): |
| 179 | + testlib.SDKTestCase.setUp(self) |
| 180 | + self.cleanMacros() |
| 181 | + self.service = client.connect(**self.opts.kwargs) |
| 182 | + self.cleanUsers() |
| 183 | + |
| 184 | + def cleanUsers(self): |
| 185 | + for user in self.service.users: |
| 186 | + if user.name == self.username: |
| 187 | + self.service.users.delete(self.username) |
| 188 | + |
| 189 | + def cleanMacros(self): |
| 190 | + for macro in self.service.macros: |
| 191 | + if macro.name == self.macro_name: |
| 192 | + self.service.macros.delete(self.macro_name) |
| 193 | + |
| 194 | + def test_create_macro_no_admin(self): |
| 195 | + self.service.macros.create(self.macro_name, 'eval test="123"') |
| 196 | + |
| 197 | + stream = self.service.jobs.oneshot( |
| 198 | + f"| makeresults count=1 | `{self.macro_name}`", |
| 199 | + output_mode="json", |
| 200 | + ) |
| 201 | + |
| 202 | + result = results.JSONResultsReader(stream) |
| 203 | + out = list(result) |
| 204 | + |
| 205 | + self.assertTrue(len(out) == 1) |
| 206 | + self.assertEqual(out[0]["test"], "123") |
| 207 | + |
| 208 | + |
156 | 209 | if __name__ == "__main__": |
157 | 210 | try: |
158 | 211 | import unittest2 as unittest |
|
0 commit comments