Merge pull request 'feature/testing' (#6) from feature/testing into dev
Reviewed-on: MH.Dmitrii/The_Great_Excel_Project#6
This commit was merged in pull request #6.
This commit is contained in:
+11
-9
@@ -28,22 +28,20 @@ class MySession(requests_async.AsyncSession):
|
|||||||
return await super().request(method, url, **kwargs)
|
return await super().request(method, url, **kwargs)
|
||||||
|
|
||||||
@pytest_asyncio.fixture(scope="function")
|
@pytest_asyncio.fixture(scope="function")
|
||||||
async def auth_fixture():
|
async def auth_fixture(target_url:str):
|
||||||
|
|
||||||
payload = {"username": e2e_settings.TEST_USERNAME, "password": e2e_settings.TEST_PASSWORD}
|
payload = {"username": e2e_settings.TEST_USERNAME, "password": e2e_settings.TEST_PASSWORD}
|
||||||
url = f'http://{e2e_settings.HOST}:{e2e_settings.PORT}'
|
|
||||||
|
|
||||||
async with MySession() as session:
|
async with MySession() as session:
|
||||||
response = await session.post(url + "/protected/token", data=payload)
|
response = await session.post(target_url + "/protected/token", data=payload)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
session.token = response.json()["access_token"]
|
session.token = response.json()["access_token"]
|
||||||
yield session
|
yield session
|
||||||
|
|
||||||
|
|
||||||
@pytest_asyncio.fixture(scope="function")
|
@pytest_asyncio.fixture(scope="function")
|
||||||
async def test_user_fixture(request, auth_fixture: MySession):
|
async def test_user_fixture(request, auth_fixture: MySession, target_url:str):
|
||||||
|
|
||||||
url=f"http://{e2e_settings.HOST}:{e2e_settings.PORT}"
|
|
||||||
test_id=uuid4()
|
test_id=uuid4()
|
||||||
|
|
||||||
direct_permission_param, group_param = request.param
|
direct_permission_param, group_param = request.param
|
||||||
@@ -57,7 +55,7 @@ async def test_user_fixture(request, auth_fixture: MySession):
|
|||||||
"direct_permissions":direct_permission_param,
|
"direct_permissions":direct_permission_param,
|
||||||
"group":group_param
|
"group":group_param
|
||||||
}
|
}
|
||||||
response=await auth_fixture.post(f"{url}/user/create_user", json=new_user_record)
|
response=await auth_fixture.post(f"{target_url}/user/create_user", json=new_user_record)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
|
|
||||||
|
|
||||||
@@ -65,11 +63,15 @@ async def test_user_fixture(request, auth_fixture: MySession):
|
|||||||
|
|
||||||
payload={"username": new_user_record.get("email"), "password": new_user_record.get("plain_password")}
|
payload={"username": new_user_record.get("email"), "password": new_user_record.get("plain_password")}
|
||||||
|
|
||||||
response = await session.post(url + "/protected/token", data=payload)
|
response = await session.post(target_url + "/protected/token", data=payload)
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
session.token = response.json()["access_token"]
|
session.token = response.json()["access_token"]
|
||||||
|
|
||||||
yield (session, new_user_record)
|
yield (session, new_user_record)
|
||||||
|
|
||||||
response=await auth_fixture.post(f"{url}/user/delete_user_hard", params={"email":new_user_record.get("email")})
|
response=await auth_fixture.post(f"{target_url}/user/delete_user_hard", params={"email":new_user_record.get("email")})
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
|
|
||||||
|
@pytest_asyncio.fixture()
|
||||||
|
async def target_url()->str:
|
||||||
|
return f"http://{e2e_settings.HOST}:{e2e_settings.PORT}"
|
||||||
@@ -4,14 +4,14 @@ import allure
|
|||||||
import pytest
|
import pytest
|
||||||
from httpx import HTTPStatusError
|
from httpx import HTTPStatusError
|
||||||
|
|
||||||
from tests.e2e.conftest import MySession, e2e_settings
|
from tests.e2e.conftest import MySession
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.integra
|
@pytest.mark.integra
|
||||||
class TestCrud:
|
class TestCrud:
|
||||||
|
|
||||||
@pytest.mark.parametrize("test_user_fixture", [(["admin"], ["admin_group"])], indirect=True)
|
@pytest.mark.parametrize("test_user_fixture", [(["admin"], ["admin_group"])], indirect=True)
|
||||||
async def test_get_user_by_email_positive(self,test_user_fixture)->None:
|
async def test_get_user_by_email_positive(self,test_user_fixture, target_url:str)->None:
|
||||||
|
|
||||||
session, new_user_record=test_user_fixture
|
session, new_user_record=test_user_fixture
|
||||||
|
|
||||||
@@ -19,7 +19,6 @@ class TestCrud:
|
|||||||
|
|
||||||
email = new_user_record.get("email") #get email from the fixture in yield sector
|
email = new_user_record.get("email") #get email from the fixture in yield sector
|
||||||
|
|
||||||
target_url=f"http://{e2e_settings.HOST}:{e2e_settings.PORT}"
|
|
||||||
response = await session.get(f"{target_url}/user/get_by_email",params={"email":email})
|
response = await session.get(f"{target_url}/user/get_by_email",params={"email":email})
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
response=response.json()
|
response=response.json()
|
||||||
@@ -40,10 +39,9 @@ class TestCrud:
|
|||||||
pytest.param("test",404, id="wrong_email"),
|
pytest.param("test",404, id="wrong_email"),
|
||||||
pytest.param("@d", 404, id="wrong_email")
|
pytest.param("@d", 404, id="wrong_email")
|
||||||
])
|
])
|
||||||
async def test_get_user_by_email_negative(self, email:str, expected_status:int, auth_fixture:MySession)->None:
|
async def test_get_user_by_email_negative(self, email:str, expected_status:int, auth_fixture:MySession,target_url:str)->None:
|
||||||
|
|
||||||
with allure.step("Get user by email"):
|
with allure.step("Get user by email"):
|
||||||
target_url = f"http://{e2e_settings.HOST}:{e2e_settings.PORT}"
|
|
||||||
|
|
||||||
with pytest.raises(HTTPStatusError) as exc_info:
|
with pytest.raises(HTTPStatusError) as exc_info:
|
||||||
response = await auth_fixture.get(f"{target_url}/user/get_by_email", params={"email": email})
|
response = await auth_fixture.get(f"{target_url}/user/get_by_email", params={"email": email})
|
||||||
@@ -69,12 +67,8 @@ class TestCrud:
|
|||||||
"direct_permissions":["WRONG_PERMISSIONS"],
|
"direct_permissions":["WRONG_PERMISSIONS"],
|
||||||
"group":["WRONG_GROUP"]},id="Positive_wrong_permissions"),
|
"group":["WRONG_GROUP"]},id="Positive_wrong_permissions"),
|
||||||
])
|
])
|
||||||
async def test_create_delete_user_hard_positive(self, new_user_record:dict,auth_fixture:MySession)->None:
|
async def test_create_delete_user_hard_positive(self, new_user_record:dict,auth_fixture:MySession, target_url:str)->None:
|
||||||
|
|
||||||
with allure.step("Setting target_url"):
|
|
||||||
|
|
||||||
target_url=f"http://{e2e_settings.HOST}:{e2e_settings.PORT}"
|
|
||||||
|
|
||||||
with allure.step("Create new test user and check for the new user"):
|
with allure.step("Create new test user and check for the new user"):
|
||||||
|
|
||||||
response=await auth_fixture.post(f"{target_url}/user/create_user", json=new_user_record)
|
response=await auth_fixture.post(f"{target_url}/user/create_user", json=new_user_record)
|
||||||
@@ -123,12 +117,11 @@ class TestCrud:
|
|||||||
"plain_password":"Test1234!",
|
"plain_password":"Test1234!",
|
||||||
},422,id="Not_all_the_fields"),
|
},422,id="Not_all_the_fields"),
|
||||||
])
|
])
|
||||||
async def test_create_user_negative(self, new_user_record:dict, auth_fixture:MySession, expected_status:int):
|
async def test_create_user_negative(self, new_user_record:dict, auth_fixture:MySession, expected_status:int, target_url:str):
|
||||||
|
|
||||||
with allure.step("Preparing data to create new user negative"):
|
with allure.step("Preparing data to create new user negative"):
|
||||||
|
|
||||||
user_created=False
|
user_created=False
|
||||||
target_url=f"http://{e2e_settings.HOST}:{e2e_settings.PORT}"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with allure.step("Create new test user and check for the new user"):
|
with allure.step("Create new test user and check for the new user"):
|
||||||
@@ -162,10 +155,7 @@ class TestCrud:
|
|||||||
"direct_permissions":[],
|
"direct_permissions":[],
|
||||||
"group":[]}, id="Positive_user_delete_soft"),
|
"group":[]}, id="Positive_user_delete_soft"),
|
||||||
])
|
])
|
||||||
async def test_user_create_delete_soft_positive(self, new_user_record:dict, auth_fixture:MySession)->None:
|
async def test_user_create_delete_soft_positive(self, new_user_record:dict, auth_fixture:MySession, target_url:str)->None:
|
||||||
with allure.step("Setting target_url"):
|
|
||||||
|
|
||||||
target_url=f"http://{e2e_settings.HOST}:{e2e_settings.PORT}"
|
|
||||||
|
|
||||||
with allure.step("Create new test user and check for the new user"):
|
with allure.step("Create new test user and check for the new user"):
|
||||||
|
|
||||||
@@ -190,12 +180,10 @@ class TestCrud:
|
|||||||
@pytest.mark.parametrize("email, expected_status, ",[
|
@pytest.mark.parametrize("email, expected_status, ",[
|
||||||
pytest.param("Test", 404,id="Wrong_email")
|
pytest.param("Test", 404,id="Wrong_email")
|
||||||
])
|
])
|
||||||
async def test_user_delete_soft_negative(self, email:str,expected_status:int, auth_fixture:MySession)->None:
|
async def test_user_delete_soft_negative(self, email:str,expected_status:int, auth_fixture:MySession, target_url:str)->None:
|
||||||
|
|
||||||
with allure.step("Delete user soft"):
|
with allure.step("Delete user soft"):
|
||||||
|
|
||||||
target_url=f"http://{e2e_settings.HOST}:{e2e_settings.PORT}"
|
|
||||||
|
|
||||||
with pytest.raises(HTTPStatusError) as exc_info:
|
with pytest.raises(HTTPStatusError) as exc_info:
|
||||||
|
|
||||||
response=await auth_fixture.post(f"{target_url}/user/delete_user_soft", params={"email":email})
|
response=await auth_fixture.post(f"{target_url}/user/delete_user_soft", params={"email":email})
|
||||||
@@ -207,12 +195,10 @@ class TestCrud:
|
|||||||
@pytest.mark.parametrize("email, expected_status, ",[
|
@pytest.mark.parametrize("email, expected_status, ",[
|
||||||
pytest.param("Test", 404,id="Wrong_email")
|
pytest.param("Test", 404,id="Wrong_email")
|
||||||
])
|
])
|
||||||
async def test_user_delete_hard_negative(self, email:str,expected_status:int, auth_fixture:MySession)->None:
|
async def test_user_delete_hard_negative(self, email:str,expected_status:int, auth_fixture:MySession, target_url:str)->None:
|
||||||
|
|
||||||
with allure.step("Delete user hard"):
|
with allure.step("Delete user hard"):
|
||||||
|
|
||||||
target_url=f"http://{e2e_settings.HOST}:{e2e_settings.PORT}"
|
|
||||||
|
|
||||||
with pytest.raises(HTTPStatusError) as exc_info:
|
with pytest.raises(HTTPStatusError) as exc_info:
|
||||||
|
|
||||||
response=await auth_fixture.post(f"{target_url}/user/delete_user_soft", params={"email":email})
|
response=await auth_fixture.post(f"{target_url}/user/delete_user_soft", params={"email":email})
|
||||||
@@ -221,21 +207,16 @@ class TestCrud:
|
|||||||
assert exc_info.value.response.status_code == expected_status
|
assert exc_info.value.response.status_code == expected_status
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("test_user_fixture", [
|
@pytest.mark.parametrize("test_user_fixture", [
|
||||||
(["admin"], ["admin_group"])
|
(["admin"], ["admin_group"])
|
||||||
], indirect=True)
|
], indirect=True)
|
||||||
@pytest.mark.parametrize("user_record_to_update",[
|
@pytest.mark.parametrize("user_record_to_update",[
|
||||||
pytest.param({"first_name": "Test_New"},id="Positive_user_update_partially")
|
pytest.param({"first_name": "Test_New"},id="Positive_user_update_partially")
|
||||||
])
|
])
|
||||||
async def test_user_update_partially_positive(self, test_user_fixture, user_record_to_update:dict)->None:
|
async def test_user_update_partially_positive(self, test_user_fixture, user_record_to_update:dict, target_url:str)->None:
|
||||||
|
|
||||||
session, new_user_record=test_user_fixture
|
session, new_user_record=test_user_fixture
|
||||||
|
|
||||||
with allure.step("Setting target_url"):
|
|
||||||
|
|
||||||
target_url=f"http://{e2e_settings.HOST}:{e2e_settings.PORT}"
|
|
||||||
|
|
||||||
with allure.step("Update user"):
|
with allure.step("Update user"):
|
||||||
response= await session.patch(f"{target_url}/user/patch_user", json=user_record_to_update, params={"email":new_user_record["email"]})
|
response= await session.patch(f"{target_url}/user/patch_user", json=user_record_to_update, params={"email":new_user_record["email"]})
|
||||||
response.raise_for_status()
|
response.raise_for_status()
|
||||||
@@ -267,14 +248,10 @@ class TestCrud:
|
|||||||
pytest.param({"email": "Wrong_email"},HTTPStatusError,422,id="Wrong_email"),
|
pytest.param({"email": "Wrong_email"},HTTPStatusError,422,id="Wrong_email"),
|
||||||
pytest.param({},HTTPStatusError, 400,id="Negative_user_update_nothing")
|
pytest.param({},HTTPStatusError, 400,id="Negative_user_update_nothing")
|
||||||
])
|
])
|
||||||
async def test_user_update_partially_negative(self, test_user_fixture, user_record_to_update:dict, expected_exception, expected_status:int)->None:
|
async def test_user_update_partially_negative(self, test_user_fixture, user_record_to_update:dict, expected_exception, expected_status:int, target_url:str)->None:
|
||||||
|
|
||||||
session, new_user_record=test_user_fixture
|
session, new_user_record=test_user_fixture
|
||||||
|
|
||||||
with allure.step("Setting target_url"):
|
|
||||||
|
|
||||||
target_url=f"http://{e2e_settings.HOST}:{e2e_settings.PORT}"
|
|
||||||
|
|
||||||
with allure.step("Update user"), pytest.raises(expected_exception) as exc_info:
|
with allure.step("Update user"), pytest.raises(expected_exception) as exc_info:
|
||||||
|
|
||||||
response= await session.patch(f"{target_url}/user/patch_user", json=user_record_to_update, params={"email":new_user_record["email"]})
|
response= await session.patch(f"{target_url}/user/patch_user", json=user_record_to_update, params={"email":new_user_record["email"]})
|
||||||
|
|||||||
Reference in New Issue
Block a user