Skip to content

Commit

Permalink
add tests for user-routes
Browse files Browse the repository at this point in the history
  • Loading branch information
Eduard0803 committed Nov 29, 2023
1 parent df82778 commit c8ea5f0
Show file tree
Hide file tree
Showing 4 changed files with 331 additions and 11 deletions.
136 changes: 136 additions & 0 deletions gestao/tests/test_gestao.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,146 @@
from fastapi import FastAPI
from httpx import AsyncClient
from starlette import status
from uuid import uuid4

from gestao.tests.utils import generate_fake_user


@pytest.mark.anyio
async def test_health(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("health_check")
response = await client.get(url)
assert response.status_code == status.HTTP_200_OK


@pytest.mark.anyio
async def test_get_users(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("get_users")
response = await client.get(url)
assert response.status_code == 200


@pytest.mark.anyio
async def test_get_user_correct(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("create_user")
user = generate_fake_user()
await client.post(url, json=user)

url = fastapi_app.url_path_for("get_users")
response = await client.get(url)
user_data = response.json()[0]
user_id = user_data['id']

url = fastapi_app.url_path_for("get_user", user_id=user_id)
response = await client.get(url)
assert response.status_code == 200


@pytest.mark.anyio
async def test_get_user_incorrect(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("get_user", user_id=str(uuid4()))
response = await client.get(url)
assert response.status_code == 404


@pytest.mark.anyio
async def test_create_user_correct(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("create_user")
user = generate_fake_user()
response = await client.post(url, json=user)
assert response.status_code == 200


@pytest.mark.anyio
async def test_create_user_incorrect(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("create_user")
user = generate_fake_user()
user.pop('name')
response = await client.post(url, json=user)
assert response.status_code == 422


@pytest.mark.anyio
async def test_update_user_correct(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("create_user")
user = generate_fake_user()
await client.post(url, json=user)

url = fastapi_app.url_path_for("get_users")
response = await client.get(url)
user_data = response.json()[0]
user_id = user_data['id']
user_data['name'] = 'joao'

url = fastapi_app.url_path_for("update_user", user_id=user_id)
response = await client.put(url, json=user_data)
assert response.status_code == 200


@pytest.mark.anyio
async def test_update_user_incorrect(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("update_user", user_id=str(uuid4()))
response = await client.put(url, json={})
assert response.status_code == 404


@pytest.mark.anyio
async def test_delete_user_correct(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("create_user")
user = generate_fake_user()
await client.post(url, json=user)

url = fastapi_app.url_path_for("get_users")
response = await client.get(url)
user_data = response.json()[0]
user_id = user_data['id']

url = fastapi_app.url_path_for("delete_user", user_id=user_id)
response = await client.delete(url)
assert response.status_code == 200


@pytest.mark.anyio
async def test_disable_user_correct(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("create_user")
user = generate_fake_user()
await client.post(url, json=user)

url = fastapi_app.url_path_for("get_users")
response = await client.get(url)
user_data = response.json()[0]
user_id = user_data['id']

url = fastapi_app.url_path_for("disable_user", user_id=user_id)
response = await client.patch(url)
assert response.status_code == 200


@pytest.mark.anyio
async def test_disable_user_incorrect(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("disable_user", user_id=str(uuid4()))
response = await client.patch(url)
assert response.status_code == 404


@pytest.mark.anyio
async def test_enable_user_correct(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("create_user")
user = generate_fake_user()
await client.post(url, json=user)

url = fastapi_app.url_path_for("get_users")
response = await client.get(url)
user_data = response.json()[0]
user_id = user_data['id']

url = fastapi_app.url_path_for("enable_user", user_id=user_id)
response = await client.patch(url)
assert response.status_code == 200


@pytest.mark.anyio
async def test_enable_user_incorrect(client: AsyncClient, fastapi_app: FastAPI) -> None:
url = fastapi_app.url_path_for("enable_user", user_id=str(uuid4()))
response = await client.patch(url)
assert response.status_code == 404
42 changes: 42 additions & 0 deletions gestao/tests/utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
def generate_fake_user():
from faker import Faker

f = Faker('pt-br')
user = {
'name': f'{f.name()}',
'address': f'{f.address()}',
'neighborhood': 'Gama',
'city': f'{f.city()}',
'state': f'{f.state()}',
'zipcode': f'{f.postcode()}',
'cpf': f'{f.random_number(digits=11)}',
'rg': f'{f.random_number(digits=7)}',
'birth_date': f'{f.date_of_birth()}',
'place_of_birth': f'{f.city()}',
'blood_type': 'A+',
'gender': 'M',
'father_name': f'{f.name()}',
'mother_date': f'{f.name()}',
'position': 'null',
'occupancy': 'null',
'admission_date': f'{f.date_of_birth()}',
'situation': 'active',
'phone': f'{f.phone_number()}',
'email': f'{f.email(domain="sindpol.org.br")}',
'marital_status': 'alone',
'education': 'Bachelor Degree',
'registration': f'{f.random_number(digits=10)}',
'role': 'cop',
'category': 'null',
'pattern': 'null',
'dispatcher': 'null',
'dispatched_date': f'{f.date_of_birth()}',
'war_name': f'{f.name()}',
'password': 'admin',
'rg_consignor': 'SSP',
'rg_date': f'{f.date_of_birth()}',
'situation_obs': 'null'
}

return user

Loading

0 comments on commit c8ea5f0

Please sign in to comment.