diff --git a/tests/e2e/test_auth.py b/tests/e2e/test_auth.py new file mode 100644 index 0000000..597680d --- /dev/null +++ b/tests/e2e/test_auth.py @@ -0,0 +1,46 @@ +import allure +import pytest +import requests_async +from httpx import HTTPStatusError + + +class TestAuth: + + async def test_get_access_token_positive(self, target_url:str)->None: + + with allure.step("get_access_token"), pytest.raises(HTTPStatusError) as exc_info: + + response = await requests_async.post(f"{target_url}/protected/token") + response.raise_for_status() + assert exc_info.value.response.status_code != 403 + assert exc_info.value.response.status_code != 401 + + async def test_get_refresh_token_positive(self, target_url:str)->None: + + with allure.step("get_refresh_token"), pytest.raises(HTTPStatusError) as exc_info: + + response = await requests_async.post(f"{target_url}/protected/refresh") + response.raise_for_status() + assert exc_info.value.response.status_code != 403 + assert exc_info.value.response.status_code != 401 + + async def test_get_root_positive(self, target_url:str)->None: + + with allure.step("get_root"), pytest.raises(HTTPStatusError) as exc_info: + + response = await requests_async.get(f"{target_url}/protected") + response.raise_for_status() + assert exc_info.value.response.status_code != 403 + assert exc_info.value.response.status_code == 401 + + @pytest.mark.parametrize("test_user_fixture", [([], [])], indirect=True) + async def test_get_logout_positive(self,test_user_fixture, target_url:str)->None: + + session=test_user_fixture[0] + with allure.step("get_root"), pytest.raises(HTTPStatusError) as exc_info: + + response = await session.get(f"{target_url}/protected/logout") + response.raise_for_status() + assert exc_info.value.response.status_code != 403 + assert exc_info.value.response.status_code != 401 + \ No newline at end of file diff --git a/tests/e2e/test_users_crud.py b/tests/e2e/test_users_crud.py index 6491bab..2ea8b1b 100644 --- a/tests/e2e/test_users_crud.py +++ b/tests/e2e/test_users_crud.py @@ -258,3 +258,126 @@ class TestCrud: response.raise_for_status() assert exc_info.value.response.status_code == expected_status + + @pytest.mark.parametrize("test_user_fixture", [(["admin"], ["admin_group"])], indirect=True) + async def test_get_user_by_email_permissions_positive(self,test_user_fixture, target_url:str)->None: + + session=test_user_fixture[0] + + with allure.step("Get user by email"), pytest.raises(HTTPStatusError) as exc_info: + response = await session.get(f"{target_url}/user/get_by_email") + response.raise_for_status() + + assert exc_info.value.response.status_code != 403 + + + @pytest.mark.parametrize("test_user_fixture", [([], [])], indirect=True) + async def test_get_user_by_email_permissions_negative(self,test_user_fixture, target_url:str)->None: + + session=test_user_fixture[0] + + with allure.step("Get user by email"), pytest.raises(HTTPStatusError) as exc_info: + response = await session.get(f"{target_url}/user/get_by_email") + response.raise_for_status() + + assert exc_info.value.response.status_code == 403 + + @pytest.mark.parametrize("test_user_fixture", [(["admin"], ["admin_group"])], indirect=True) + async def test_create_user_permissions_positive(self,test_user_fixture, target_url:str)->None: + + session=test_user_fixture[0] + + with allure.step("Get user by email"), pytest.raises(HTTPStatusError) as exc_info: + response = await session.post(f"{target_url}/user/create_user") + response.raise_for_status() + + assert exc_info.value.response.status_code != 403 + + + @pytest.mark.parametrize("test_user_fixture", [([], [])], indirect=True) + async def test_create_user_permissions_negative(self,test_user_fixture, target_url:str)->None: + + session=test_user_fixture[0] + + with allure.step("Get user by email"), pytest.raises(HTTPStatusError) as exc_info: + response = await session.post(f"{target_url}/user/create_user") + response.raise_for_status() + + assert exc_info.value.response.status_code == 403 + + + @pytest.mark.parametrize("test_user_fixture", [(["admin"], ["admin_group"])], indirect=True) + async def test_patch_user_permissions_positive(self,test_user_fixture, target_url:str)->None: + + session=test_user_fixture[0] + + with allure.step("Get user by email"), pytest.raises(HTTPStatusError) as exc_info: + response = await session.patch(f"{target_url}/user/patch_user") + response.raise_for_status() + + assert exc_info.value.response.status_code != 403 + + + @pytest.mark.parametrize("test_user_fixture", [([], [])], indirect=True) + async def test_patch_user_permissions_negative(self,test_user_fixture, target_url:str)->None: + + session=test_user_fixture[0] + + with allure.step("Get user by email"), pytest.raises(HTTPStatusError) as exc_info: + response = await session.patch(f"{target_url}/user/patch_user") + response.raise_for_status() + + assert exc_info.value.response.status_code == 403 + + + @pytest.mark.parametrize("test_user_fixture", [(["admin"], ["admin_group"])], indirect=True) + async def test_delete_user_soft_permissions_positive(self,test_user_fixture, target_url:str)->None: + + session=test_user_fixture[0] + + with allure.step("Get user by email"), pytest.raises(HTTPStatusError) as exc_info: + response = await session.post(f"{target_url}/user/delete_user_soft") + response.raise_for_status() + + assert exc_info.value.response.status_code != 403 + + + @pytest.mark.parametrize("test_user_fixture", [([], [])], indirect=True) + async def test_delete_user_soft_permissions_negative(self,test_user_fixture, target_url:str)->None: + + session=test_user_fixture[0] + + with allure.step("Get user by email"), pytest.raises(HTTPStatusError) as exc_info: + response = await session.post(f"{target_url}/user/delete_user_soft") + response.raise_for_status() + + assert exc_info.value.response.status_code == 403 + + + @pytest.mark.parametrize("test_user_fixture", [(["admin"], ["admin_group"])], indirect=True) + async def test_delete_user_hard_permissions_positive(self,test_user_fixture, target_url:str)->None: + + session=test_user_fixture[0] + + with allure.step("Get user by email"), pytest.raises(HTTPStatusError) as exc_info: + response = await session.post(f"{target_url}/user/delete_user_hard") + response.raise_for_status() + + assert exc_info.value.response.status_code != 403 + + + @pytest.mark.parametrize("test_user_fixture", [([], [])], indirect=True) + async def test_delete_user_hard_permissions_negative(self,test_user_fixture, target_url:str)->None: + + session=test_user_fixture[0] + + with allure.step("Get user by email"), pytest.raises(HTTPStatusError) as exc_info: + response = await session.post(f"{target_url}/user/delete_user_hard") + response.raise_for_status() + + assert exc_info.value.response.status_code == 403 + + + + + \ No newline at end of file