@@ -233,5 +233,95 @@ async def test_admin_delete_rule(self):
233233 self .assertEqual (200 , response .status )
234234
235235
236+ class TestApiGatewayAdminAutzRules (AioHTTPTestCase ):
237+ CONFIG_FILE_PATH = BASE_PATH / "config.yml"
238+
239+ @mock .patch .dict (os .environ , {"API_GATEWAY_REST_CORS_ENABLED" : "true" })
240+ def setUp (self ) -> None :
241+ self .config = ApiGatewayConfig (self .CONFIG_FILE_PATH )
242+ super ().setUp ()
243+
244+ def tearDown (self ) -> None :
245+ super ().tearDown ()
246+
247+ async def get_application (self ):
248+ """
249+ Override the get_app method to return your application.
250+ """
251+ rest_service = ApiGatewayRestService (
252+ address = self .config .rest .host , port = self .config .rest .port , config = self .config
253+ )
254+
255+ return await rest_service .create_application ()
256+
257+ @unittest_run_loop
258+ async def test_admin_get_rules (self ):
259+ url = "/admin/autz-rules"
260+
261+ response = await self .client .request ("GET" , url )
262+
263+ self .assertEqual (200 , response .status )
264+
265+ @unittest_run_loop
266+ async def test_admin_create_rule (self ):
267+ url = "/admin/autz-rules"
268+
269+ response = await self .client .request (
270+ "POST" ,
271+ url ,
272+ data = json .dumps ({"service" : "abc" , "roles" : ["*" ], "rule" : "*://*/abc/*" , "methods" : ["GET" , "POST" ]}),
273+ )
274+
275+ self .assertEqual (200 , response .status )
276+
277+ @unittest_run_loop
278+ async def test_admin_update_rule (self ):
279+ url = "/admin/autz-rules"
280+
281+ res = await self .client .request (
282+ "POST" ,
283+ url ,
284+ data = json .dumps (
285+ {"service" : "abcd" , "roles" : ["*" ], "rule" : "test_rule_update" , "methods" : ["GET" , "POST" ]}
286+ ),
287+ )
288+
289+ data = json .loads (await res .text ())
290+
291+ self .assertEqual (200 , res .status )
292+
293+ url = f"/admin/autz-rules/{ data ['id' ]} "
294+
295+ response = await self .client .request (
296+ "PATCH" ,
297+ url ,
298+ data = json .dumps ({"service" : "abcde_modified" , "rule" : "*://*/abcde/*" , "methods" : ["GET" , "POST" ]}),
299+ )
300+
301+ self .assertEqual (200 , response .status )
302+
303+ @unittest_run_loop
304+ async def test_admin_delete_rule (self ):
305+ url = "/admin/autz-rules"
306+
307+ res = await self .client .request (
308+ "POST" ,
309+ url ,
310+ data = json .dumps (
311+ {"service" : "efg" , "roles" : ["*" ], "rule" : "efg_test_rule_delete" , "methods" : ["GET" , "POST" ]}
312+ ),
313+ )
314+
315+ data = json .loads (await res .text ())
316+
317+ self .assertEqual (200 , res .status )
318+
319+ url = f"/admin/autz-rules/{ data ['id' ]} "
320+
321+ response = await self .client .request ("DELETE" , url )
322+
323+ self .assertEqual (200 , response .status )
324+
325+
236326if __name__ == "__main__" :
237327 unittest .main ()
0 commit comments