diff --git a/backend/src/contracts/contracts.py b/backend/src/contracts/contracts.py index d30911d..ace9d32 100644 --- a/backend/src/contracts/contracts.py +++ b/backend/src/contracts/contracts.py @@ -203,7 +203,7 @@ def get_contract_files( user: models.User = Depends(get_current_user) ): """Get all contract files for a given form""" - if not form_service.is_allowed(session, user, form_id): + if not service.is_allowed(session, user, form_id): raise HTTPException( status_code=403, detail=messages.Messages.not_allowed('contracts', 'get') diff --git a/backend/src/contracts/generate_contract.py b/backend/src/contracts/generate_contract.py index af5f6ec..6da025d 100644 --- a/backend/src/contracts/generate_contract.py +++ b/backend/src/contracts/generate_contract.py @@ -113,7 +113,7 @@ def create_row_style_height(size: str) -> odfdo.Style: ) -def create_currency_style(name:str = 'currency-euro'): +def create_currency_style(name: str = 'currency-euro'): """Create a table currency style. Paramenters: name(str): name of the style (default to `currency-euro`). @@ -129,6 +129,7 @@ def create_currency_style(name:str = 'currency-euro'): """ ) + def create_cell_style( name: str = "centered-cell", font_size: str = '10pt', @@ -384,12 +385,12 @@ def transform_formula_cells(sheet: odfdo.Spreadsheet): def merge_shipment_cells( - sheet: odfdo.Spreadsheet, - prefix_header: list[str], - recurrents: list[str], - occasionnals: list[str], - shipments: list[models.Shipment] - ): + sheet: odfdo.Spreadsheet, + prefix_header: list[str], + recurrents: list[str], + occasionnals: list[str], + shipments: list[models.Shipment] +): """Merge cells for shipment header. """ index = len(prefix_header) + len(recurrents) + 1 @@ -399,6 +400,7 @@ def merge_shipment_cells( sheet.set_span((startcol, 0, endcol, 0), merge=True) index += len(occasionnals) + def generate_recap( contracts: list[models.Contract], form: models.Form, @@ -411,14 +413,14 @@ def generate_recap( '3': 'Piece' } recurrents = [ - f'{pr.name}{f' - {pr.quantity}{pr.quantity_unit}' + f'{pr.name}{f' - {pr.quantity}{pr.quantity_unit}' if pr.quantity else ''} ({product_unit_map[pr.unit]})' for pr in form.productor.products if pr.type == models.ProductType.RECCURENT ] recurrents.sort() occasionnals = [ - f'{pr.name}{f' - {pr.quantity}{pr.quantity_unit}' + f'{pr.name}{f' - {pr.quantity}{pr.quantity_unit}' if pr.quantity else ''} ({product_unit_map[pr.unit]})' for pr in form.productor.products if pr.type == models.ProductType.OCCASIONAL @@ -468,7 +470,7 @@ def generate_recap( len(info_header)+len(payment_formula_letters)+len(recurrents) + 1 ] occasionnals_formula_letters = letters[ - len(info_header)+len(payment_formula_letters)+ + len(info_header)+len(payment_formula_letters) + len(recurent_formula_letters): len(info_header)+len(payment_formula_letters) + len(recurent_formula_letters)+len(occasionnals_header) + 1 @@ -489,14 +491,14 @@ def generate_recap( prices = compute_contract_prices(contract) occasionnal_sorted = sorted( [ - product for product in contract.products + product for product in contract.products if product.product.type == models.ProductType.OCCASIONAL ], key=lambda x: (x.shipment.name, x.product.name) ) recurrent_sorted = sorted( [ - product for product in contract.products + product for product in contract.products if product.product.type == models.ProductType.RECCURENT ], key=lambda x: x.product.name diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py index fd09e33..5096dc8 100644 --- a/backend/tests/conftest.py +++ b/backend/tests/conftest.py @@ -7,6 +7,8 @@ from src.auth.auth import get_current_user from src.database import get_session from src.main import app +from .fixtures import * + @pytest.fixture def mock_session(mocker): diff --git a/backend/tests/fixtures.py b/backend/tests/fixtures.py index 639f47b..ed0b5e9 100644 --- a/backend/tests/fixtures.py +++ b/backend/tests/fixtures.py @@ -17,19 +17,19 @@ from src import models @pytest.fixture def productor(session: Session) -> models.ProductorPublic: - productor = productors_service.create_one( + result = productors_service.create_one( session, productors_factory.productor_create_factory( name='test productor', type='Légumineuses', ) ) - return productor + return result @pytest.fixture def productors(session: Session) -> models.ProductorPublic: - productors = [ + result = [ productors_service.create_one( session, productors_factory.productor_create_factory( @@ -45,13 +45,15 @@ def productors(session: Session) -> models.ProductorPublic: ) ) ] - return productors + return result @pytest.fixture -def products(session: Session, - productor: models.ProductorPublic) -> list[models.ProductPublic]: - products = [ +def products( + session: Session, + productor: models.ProductorPublic +) -> list[models.ProductPublic]: + result = [ products_service.create_one( session, products_factory.product_create_factory( @@ -69,7 +71,7 @@ def products(session: Session, ) ), ] - return products + return result @pytest.fixture @@ -87,7 +89,7 @@ def user(session: Session) -> models.UserPublic: @pytest.fixture def users(session: Session) -> list[models.UserPublic]: - users = [ + result = [ users_service.create_one( session, users_factory.user_create_factory( @@ -112,12 +114,12 @@ def users(session: Session) -> list[models.UserPublic]: name='test user 3', email='test3@test.com', role_names=['Porc-Agneau']))] - return users + return result @pytest.fixture def referer(session: Session) -> models.UserPublic: - referer = users_service.create_one( + result = users_service.create_one( session, users_factory.user_create_factory( name='test referer', @@ -125,14 +127,16 @@ def referer(session: Session) -> models.UserPublic: role_names=['Légumineuses'], ) ) - return referer + return result @pytest.fixture -def shipments(session: Session, - forms: list[models.FormPublic], - products: list[models.ProductPublic]): - shipments = [ +def shipments( + session: Session, + forms: list[models.FormPublic], + products: list[models.ProductPublic] +): + result = [ shipments_service.create_one( session, shipments_factory.shipment_create_factory( @@ -152,7 +156,7 @@ def shipments(session: Session, ) ), ] - return shipments + return result @pytest.fixture @@ -161,7 +165,7 @@ def forms( productor: models.ProductorPublic, referer: models.UserPublic ) -> list[models.FormPublic]: - forms = [ + result = [ forms_service.create_one( session, forms_factory.form_create_factory( @@ -181,4 +185,4 @@ def forms( ) ) ] - return forms + return result diff --git a/backend/tests/routers/test_contracts.py b/backend/tests/routers/test_contracts.py index dd7726e..5951209 100644 --- a/backend/tests/routers/test_contracts.py +++ b/backend/tests/routers/test_contracts.py @@ -7,10 +7,10 @@ from src.main import app class TestContracts: def test_get_all( - self, - client, - mocker, - mock_session, + self, + client, + mocker, + mock_session, mock_user ): mock_results = [ @@ -36,10 +36,10 @@ class TestContracts: ) def test_get_all_filters( - self, - client, - mocker, - mock_session, + self, + client, + mocker, + mock_session, mock_user ): mock_results = [ @@ -81,10 +81,11 @@ class TestContracts: app.dependency_overrides.clear() def test_get_one( - self, - client, - mocker, - mock_session, + self, + client, + mocker, + mock_session, + mock_user, ): mock_result = contract_factory.contract_public_factory(id=2) @@ -93,7 +94,7 @@ class TestContracts: 'get_one', return_value=mock_result ) - mocker.patch.object( + mock_is_allowed = mocker.patch.object( service, 'is_allowed', return_value=True @@ -107,12 +108,18 @@ class TestContracts: mock_session, 2 ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + 2 + ) def test_get_one_notfound( - self, - client, - mocker, - mock_session, + self, + client, + mocker, + mock_session, + mock_user, ): mock_result = None mock = mocker.patch.object( @@ -120,18 +127,23 @@ class TestContracts: 'get_one', return_value=mock_result ) - - mocker.patch.object( + mock_is_allowed = mocker.patch.object( service, 'is_allowed', return_value=True ) + response = client.get('/api/contracts/2') assert response.status_code == 404 mock.assert_called_once_with( mock_session, 2 ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + 2 + ) def test_get_one_unauthorized( self, @@ -152,10 +164,11 @@ class TestContracts: app.dependency_overrides.clear() def test_delete_one( - self, - client, - mocker, + self, + client, + mocker, mock_session, + mock_user, ): contract_result = contract_factory.contract_public_factory() @@ -164,8 +177,7 @@ class TestContracts: 'delete_one', return_value=contract_result ) - - mocker.patch.object( + mock_is_allowed = mocker.patch.object( service, 'is_allowed', return_value=True @@ -178,12 +190,18 @@ class TestContracts: mock_session, 2, ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + 2 + ) def test_delete_one_notfound( self, client, mocker, mock_session, + mock_user, ): contract_result = None @@ -192,8 +210,7 @@ class TestContracts: 'delete_one', return_value=contract_result ) - - mocker.patch.object( + mock_is_allowed = mocker.patch.object( service, 'is_allowed', return_value=True @@ -206,6 +223,11 @@ class TestContracts: mock_session, 2, ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + 2 + ) def test_delete_one_unauthorized( self, diff --git a/backend/tests/routers/test_forms.py b/backend/tests/routers/test_forms.py index fb29793..319245e 100644 --- a/backend/tests/routers/test_forms.py +++ b/backend/tests/routers/test_forms.py @@ -92,6 +92,7 @@ class TestForms: client, mocker, mock_session, + mock_user, ): mock_result = form_factory.form_public_factory(name="test 2", id=2) @@ -100,7 +101,6 @@ class TestForms: 'get_one', return_value=mock_result ) - response = client.get('/api/forms/2') response_data = response.json() @@ -110,6 +110,7 @@ class TestForms: mock_session, 2 ) + assert mock_user def test_get_one_notfound( self, @@ -135,6 +136,7 @@ class TestForms: client, mocker, mock_session, + mock_user, ): form_body = form_factory.form_body_factory(name='test form create') form_create = form_factory.form_create_factory(name='test form create') @@ -145,6 +147,11 @@ class TestForms: 'create_one', return_value=form_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.post('/api/forms', json=form_body) response_data = response.json() @@ -155,43 +162,76 @@ class TestForms: mock_session, form_create ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + form=form_create + ) def test_create_one_referer_notfound( self, client, mocker, mock_session, + mock_user, ): form_body = form_factory.form_body_factory( - name='test form create', referer_id=12312) + name='test form create', referer_id=12312 + ) form_create = form_factory.form_create_factory( - name='test form create', referer_id=12312) + name='test form create', referer_id=12312 + ) mock = mocker.patch.object( - service, 'create_one', side_effect=forms_exceptions.UserNotFoundError( - messages.Messages.not_found('referer'))) - + service, + 'create_one', + side_effect=forms_exceptions.UserNotFoundError( + messages.Messages.not_found('referer') + ) + ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.post('/api/forms', json=form_body) assert response.status_code == 404 mock.assert_called_once_with( mock_session, form_create ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + form=form_create + ) def test_create_one_productor_notfound( self, client, mocker, mock_session, + mock_user, ): form_body = form_factory.form_body_factory( - name='test form create', productor_id=1231) + name='test form create', productor_id=1231 + ) form_create = form_factory.form_create_factory( - name='test form create', productor_id=1231) + name='test form create', productor_id=1231 + ) mock = mocker.patch.object( - service, 'create_one', side_effect=forms_exceptions.ProductorNotFoundError( - messages.Messages.not_found('productor'))) + service, + 'create_one', + side_effect=forms_exceptions.ProductorNotFoundError( + messages.Messages.not_found('productor') + ) + ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.post('/api/forms', json=form_body) @@ -200,6 +240,11 @@ class TestForms: mock_session, form_create ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + form=form_create + ) def test_create_one_unauthorized( self, @@ -225,6 +270,7 @@ class TestForms: client, mocker, mock_session, + mock_user, ): form_body = form_factory.form_body_factory(name='test form update') form_update = form_factory.form_update_factory(name='test form update') @@ -235,6 +281,11 @@ class TestForms: 'update_one', return_value=form_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.put('/api/forms/2', json=form_body) response_data = response.json() @@ -246,19 +297,34 @@ class TestForms: 2, form_update ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_update_one_notfound( self, client, mocker, mock_session, + mock_user, ): form_body = form_factory.form_body_factory(name='test form update') form_update = form_factory.form_update_factory(name='test form update') mock = mocker.patch.object( - service, 'update_one', side_effect=forms_exceptions.FormNotFoundError( - messages.Messages.not_found('form'))) + service, + 'update_one', + side_effect=forms_exceptions.FormNotFoundError( + messages.Messages.not_found('form') + ) + ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.put('/api/forms/2', json=form_body) @@ -268,19 +334,32 @@ class TestForms: 2, form_update ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_update_one_referer_notfound( self, client, mocker, mock_session, + mock_user, ): form_body = form_factory.form_body_factory(name='test form update') form_update = form_factory.form_update_factory(name='test form update') mock = mocker.patch.object( service, 'update_one', side_effect=forms_exceptions.UserNotFoundError( - messages.Messages.not_found('referer'))) + messages.Messages.not_found('referer') + ) + ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.put('/api/forms/2', json=form_body) @@ -290,19 +369,34 @@ class TestForms: 2, form_update ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_update_one_productor_notfound( self, client, mocker, mock_session, + mock_user, ): form_body = form_factory.form_body_factory(name='test form update') form_update = form_factory.form_update_factory(name='test form update') mock = mocker.patch.object( - service, 'update_one', side_effect=forms_exceptions.ProductorNotFoundError( - messages.Messages.not_found('productor'))) + service, + 'update_one', + side_effect=forms_exceptions.ProductorNotFoundError( + messages.Messages.not_found('productor') + ) + ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.put('/api/forms/2', json=form_body) @@ -312,6 +406,11 @@ class TestForms: 2, form_update ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_update_one_unauthorized( self, @@ -337,6 +436,7 @@ class TestForms: client, mocker, mock_session, + mock_user, ): form_result = form_factory.form_public_factory(name='test form delete') @@ -345,6 +445,11 @@ class TestForms: 'delete_one', return_value=form_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.delete('/api/forms/2') response_data = response.json() @@ -355,19 +460,30 @@ class TestForms: mock_session, 2, ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_delete_one_notfound( self, client, mocker, mock_session, + mock_user, ): mock = mocker.patch.object( service, - 'delete_one', + 'delete_one', side_effect=forms_exceptions.FormNotFoundError( messages.Messages.not_found('form')) ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.delete('/api/forms/2') @@ -376,6 +492,11 @@ class TestForms: mock_session, 2, ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_delete_one_unauthorized( self, diff --git a/backend/tests/routers/test_productors.py b/backend/tests/routers/test_productors.py index 0065f19..292440f 100644 --- a/backend/tests/routers/test_productors.py +++ b/backend/tests/routers/test_productors.py @@ -94,7 +94,7 @@ class TestProductors: mock_result = productor_factory.productor_public_factory( name="test 2", id=2) - mocker.patch.object( + mock_is_allowed = mocker.patch.object( service, 'is_allowed', return_value=True @@ -116,6 +116,12 @@ class TestProductors: 2 ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) + def test_get_one_notfound( self, client, @@ -123,12 +129,14 @@ class TestProductors: mock_session, mock_user, ): - mocker.patch.object( + mock_is_allowed = mocker.patch.object( service, 'is_allowed', return_value=True ) + mock_result = None + mock = mocker.patch.object( service, 'get_one', @@ -140,6 +148,11 @@ class TestProductors: mock_session, 2 ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_get_one_unauthorized( self, @@ -173,7 +186,7 @@ class TestProductors: productor_result = productor_factory.productor_public_factory( name='test productor create') - mocker.patch.object( + mock_is_allowed = mocker.patch.object( service, 'is_allowed', return_value=True @@ -194,6 +207,11 @@ class TestProductors: mock_session, productor_create ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + productor=productor_create + ) def test_create_one_unauthorized( self, @@ -229,7 +247,7 @@ class TestProductors: productor_result = productor_factory.productor_public_factory( name='test productor update') - mocker.patch.object( + mock_is_allowed = mocker.patch.object( service, 'is_allowed', return_value=True @@ -252,6 +270,12 @@ class TestProductors: productor_update ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) + def test_update_one_notfound( self, client, @@ -266,15 +290,15 @@ class TestProductors: name='test productor update', ) - mocker.patch.object( + mock_is_allowed = mocker.patch.object( service, 'is_allowed', return_value=True ) mock = mocker.patch.object( - service, - 'update_one', + service, + 'update_one', side_effect=exceptions.ProductorNotFoundError( messages.Messages.not_found('productor') ) @@ -289,6 +313,11 @@ class TestProductors: productor_update ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_update_one_unauthorized( self, @@ -310,7 +339,6 @@ class TestProductors: app.dependency_overrides.clear() - def test_delete_one( self, client, @@ -321,7 +349,7 @@ class TestProductors: productor_result = productor_factory.productor_public_factory( name='test productor delete') - mocker.patch.object( + mock_is_allowed = mocker.patch.object( service, 'is_allowed', return_value=True @@ -342,6 +370,11 @@ class TestProductors: mock_session, 2, ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_delete_one_notfound( self, @@ -350,11 +383,12 @@ class TestProductors: mock_session, mock_user, ): - mocker.patch.object( + mock_is_allowed = mocker.patch.object( service, 'is_allowed', return_value=True ) + mock = mocker.patch.object( service, 'delete_one', @@ -371,6 +405,12 @@ class TestProductors: 2, ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) + def test_delete_one_unauthorized( self, client, diff --git a/backend/tests/routers/test_products.py b/backend/tests/routers/test_products.py index 6c7b493..6027c65 100644 --- a/backend/tests/routers/test_products.py +++ b/backend/tests/routers/test_products.py @@ -68,10 +68,10 @@ class TestProducts: ) def test_get_all_unauthorized( - self, - client, - mocker, - ): + self, + client, + mocker, + ): def unauthorized(): raise HTTPException(status_code=401) @@ -90,10 +90,17 @@ class TestProducts: client, mocker, mock_session, + mock_user, ): mock_result = product_factory.product_public_factory( name="test 2", id=2) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) + mock = mocker.patch.object( service, 'get_one', @@ -109,14 +116,25 @@ class TestProducts: mock_session, 2 ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_get_one_notfound( self, client, mocker, mock_session, + mock_user, ): mock_result = None + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) mock = mocker.patch.object( service, 'get_one', @@ -128,6 +146,11 @@ class TestProducts: mock_session, 2 ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_get_one_unauthorized( self, @@ -152,6 +175,7 @@ class TestProducts: client, mocker, mock_session, + mock_user, ): product_body = product_factory.product_body_factory( name='test product create') @@ -160,6 +184,11 @@ class TestProducts: product_result = product_factory.product_public_factory( name='test product create') + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) mock = mocker.patch.object( service, 'create_one', @@ -175,6 +204,11 @@ class TestProducts: mock_session, product_create ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + product=product_create + ) def test_create_one_unauthorized( self, @@ -201,6 +235,7 @@ class TestProducts: client, mocker, mock_session, + mock_user, ): product_body = product_factory.product_body_factory( name='test product update' @@ -212,6 +247,11 @@ class TestProducts: name='test product update' ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) mock = mocker.patch.object( service, 'update_one', @@ -229,11 +269,18 @@ class TestProducts: product_update ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) + def test_update_one_notfound( self, client, mocker, mock_session, + mock_user, ): product_body = product_factory.product_body_factory( name='test product update' @@ -242,6 +289,11 @@ class TestProducts: name='test product update' ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) mock = mocker.patch.object( service, 'update_one', @@ -256,6 +308,11 @@ class TestProducts: 2, product_update ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_update_one_unauthorized( self, @@ -282,6 +339,7 @@ class TestProducts: client, mocker, mock_session, + mock_user, ): product_result = product_factory.product_public_factory( name='test product delete') @@ -292,6 +350,11 @@ class TestProducts: return_value=product_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.delete('/api/products/2') response_data = response.json() @@ -301,12 +364,18 @@ class TestProducts: mock_session, 2, ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_delete_one_notfound( self, client, mocker, mock_session, + mock_user, ): mock = mocker.patch.object( service, @@ -314,6 +383,11 @@ class TestProducts: side_effect=exceptions.ProductNotFoundError('Product not found') ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.delete('/api/products/2') assert response.status_code == 404 @@ -322,11 +396,17 @@ class TestProducts: 2, ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) + def test_delete_one_unauthorized( - self, - client, - mocker, - ): + self, + client, + mocker, + ): def unauthorized(): raise HTTPException(status_code=401) app.dependency_overrides[get_current_user] = unauthorized diff --git a/backend/tests/routers/test_shipments.py b/backend/tests/routers/test_shipments.py index 2fe1e16..230ce24 100644 --- a/backend/tests/routers/test_shipments.py +++ b/backend/tests/routers/test_shipments.py @@ -92,6 +92,7 @@ class TestShipments: client, mocker, mock_session, + mock_user, ): mock_result = shipment_factory.shipment_public_factory( name="test 2", id=2) @@ -101,6 +102,11 @@ class TestShipments: 'get_one', return_value=mock_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.get('/api/shipments/2') response_data = response.json() @@ -111,12 +117,18 @@ class TestShipments: mock_session, 2 ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_get_one_notfound( self, client, mocker, mock_session, + mock_user, ): mock_result = None mock = mocker.patch.object( @@ -124,12 +136,22 @@ class TestShipments: 'get_one', return_value=mock_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.get('/api/shipments/2') assert response.status_code == 404 mock.assert_called_once_with( mock_session, 2 ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_get_one_unauthorized( self, @@ -154,7 +176,8 @@ class TestShipments: client, mocker, mock_session, -): + mock_user, + ): shipment_body = shipment_factory.shipment_body_factory( name='test shipment create' ) @@ -170,6 +193,11 @@ class TestShipments: 'create_one', return_value=shipment_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.post('/api/shipments', json=shipment_body) response_data = response.json() @@ -180,6 +208,11 @@ class TestShipments: mock_session, shipment_create ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + shipment=shipment_create + ) def test_create_one_unauthorized( self, @@ -207,6 +240,7 @@ class TestShipments: client, mocker, mock_session, + mock_user, ): shipment_body = shipment_factory.shipment_body_factory( name='test shipment update' @@ -223,6 +257,11 @@ class TestShipments: 'update_one', return_value=shipment_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.put('/api/shipments/2', json=shipment_body) response_data = response.json() @@ -234,12 +273,18 @@ class TestShipments: 2, shipment_update ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_update_one_notfound( self, client, mocker, mock_session, + mock_user, ): shipment_body = shipment_factory.shipment_body_factory( name='test shipment update' @@ -249,8 +294,17 @@ class TestShipments: ) mock = mocker.patch.object( - service, 'update_one', side_effect=exceptions.ShipmentNotFoundError( - messages.Messages.not_found('shipment'))) + service, + 'update_one', + side_effect=exceptions.ShipmentNotFoundError( + messages.Messages.not_found('shipment') + ) + ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.put('/api/shipments/2', json=shipment_body) @@ -260,6 +314,11 @@ class TestShipments: 2, shipment_update ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_update_one_unauthorized( self, @@ -287,6 +346,7 @@ class TestShipments: client, mocker, mock_session, + mock_user, ): shipment_result = shipment_factory.shipment_public_factory( name='test shipment delete' @@ -297,6 +357,11 @@ class TestShipments: 'delete_one', return_value=shipment_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.delete('/api/shipments/2') response_data = response.json() @@ -307,12 +372,18 @@ class TestShipments: mock_session, 2, ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_delete_one_notfound( self, client, mocker, mock_session, + mock_user, ): mock = mocker.patch.object( service, @@ -321,6 +392,11 @@ class TestShipments: messages.Messages.not_found('shipment') ) ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.delete('/api/shipments/2') @@ -329,6 +405,11 @@ class TestShipments: mock_session, 2, ) + mock_is_allowed.assert_called_once_with( + mock_session, + mock_user, + _id=2 + ) def test_delete_one_unauthorized( self, diff --git a/backend/tests/routers/test_users.py b/backend/tests/routers/test_users.py index 55618a8..4e1b13a 100644 --- a/backend/tests/routers/test_users.py +++ b/backend/tests/routers/test_users.py @@ -2,13 +2,18 @@ import src.users.exceptions as exceptions import src.users.service as service import tests.factories.users as user_factory from fastapi.exceptions import HTTPException -from src import models from src.auth.auth import get_current_user from src.main import app class TestUsers: - def test_get_all(self, client, mocker, mock_session, mock_user): + def test_get_all( + self, + client, + mocker, + mock_session, + mock_user, + ): mock_results = [ user_factory.user_public_factory(name="test 1", id=1), user_factory.user_public_factory(name="test 2", id=2), @@ -30,8 +35,15 @@ class TestUsers: [], [], ) + assert mock_user - def test_get_all_filters(self, client, mocker, mock_session, mock_user): + def test_get_all_filters( + self, + client, + mocker, + mock_session, + mock_user, + ): mock_results = [ user_factory.user_public_factory(name="test 2", id=2), ] @@ -40,7 +52,6 @@ class TestUsers: 'get_all', return_value=mock_results ) - response = client.get('/api/users?emails=test@test.test&names=test 2') response_data = response.json() assert response.status_code == 200 @@ -51,13 +62,13 @@ class TestUsers: ['test 2'], ['test@test.test'], ) + assert mock_user def test_get_all_unauthorized( - self, - client, - mocker, - mock_session, - mock_user): + self, + client, + mocker, + ): def unauthorized(): raise HTTPException(status_code=401) @@ -71,7 +82,13 @@ class TestUsers: app.dependency_overrides.clear() - def test_get_one(self, client, mocker, mock_session, mock_user): + def test_get_one( + self, + client, + mocker, + mock_session, + mock_user, + ): mock_result = user_factory.user_public_factory(name="test 2", id=2) mock = mocker.patch.object( @@ -79,6 +96,11 @@ class TestUsers: 'get_one', return_value=mock_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.get('/api/users/2') response_data = response.json() @@ -89,28 +111,43 @@ class TestUsers: mock_session, 2 ) + mock_is_allowed.assert_called_once_with( + mock_user + ) - def test_get_one_notfound(self, client, mocker, mock_session, mock_user): + def test_get_one_notfound( + self, + client, + mocker, + mock_session, + mock_user, + ): mock_result = None mock = mocker.patch.object( service, 'get_one', return_value=mock_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.get('/api/users/2') - response_data = response.json() assert response.status_code == 404 mock.assert_called_once_with( mock_session, 2 ) + mock_is_allowed.assert_called_once_with( + mock_user + ) def test_get_one_unauthorized( - self, - client, - mocker, - mock_session, - mock_user): + self, + client, + mocker, + ): def unauthorized(): raise HTTPException(status_code=401) @@ -124,7 +161,13 @@ class TestUsers: app.dependency_overrides.clear() - def test_create_one(self, client, mocker, mock_session, mock_user): + def test_create_one( + self, + client, + mocker, + mock_session, + mock_user, + ): user_body = user_factory.user_body_factory(name='test user create') user_create = user_factory.user_create_factory(name='test user create') user_result = user_factory.user_public_factory(name='test user create') @@ -134,6 +177,11 @@ class TestUsers: 'create_one', return_value=user_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.post('/api/users', json=user_body) response_data = response.json() @@ -144,13 +192,15 @@ class TestUsers: mock_session, user_create ) + mock_is_allowed.assert_called_once_with( + mock_user + ) def test_create_one_unauthorized( - self, - client, - mocker, - mock_session, - mock_user): + self, + client, + mocker, + ): def unauthorized(): raise HTTPException(status_code=401) user_body = user_factory.user_body_factory(name='test user create') @@ -165,7 +215,13 @@ class TestUsers: app.dependency_overrides.clear() - def test_update_one(self, client, mocker, mock_session, mock_user): + def test_update_one( + self, + client, + mocker, + mock_session, + mock_user, + ): user_body = user_factory.user_body_factory(name='test user update') user_update = user_factory.user_update_factory(name='test user update') user_result = user_factory.user_public_factory(name='test user update') @@ -175,6 +231,11 @@ class TestUsers: 'update_one', return_value=user_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.put('/api/users/2', json=user_body) response_data = response.json() @@ -186,25 +247,32 @@ class TestUsers: 2, user_update ) + mock_is_allowed.assert_called_once_with( + mock_user + ) def test_update_one_notfound( - self, - client, - mocker, - mock_session, - mock_user): + self, + client, + mocker, + mock_session, + mock_user, + ): user_body = user_factory.user_body_factory(name='test user update') user_update = user_factory.user_update_factory(name='test user update') - user_result = None mock = mocker.patch.object( service, 'update_one', side_effect=exceptions.UserNotFoundError('User 2 not found') ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.put('/api/users/2', json=user_body) - response_data = response.json() assert response.status_code == 404 mock.assert_called_once_with( @@ -212,13 +280,15 @@ class TestUsers: 2, user_update ) + mock_is_allowed.assert_called_once_with( + mock_user + ) def test_update_one_unauthorized( - self, - client, - mocker, - mock_session, - mock_user): + self, + client, + mocker, + ): def unauthorized(): raise HTTPException(status_code=401) user_body = user_factory.user_body_factory(name='test user update') @@ -233,7 +303,13 @@ class TestUsers: app.dependency_overrides.clear() - def test_delete_one(self, client, mocker, mock_session, mock_user): + def test_delete_one( + self, + client, + mocker, + mock_session, + mock_user, + ): user_result = user_factory.user_public_factory(name='test user delete') mock = mocker.patch.object( @@ -241,6 +317,11 @@ class TestUsers: 'delete_one', return_value=user_result ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.delete('/api/users/2') response_data = response.json() @@ -251,40 +332,46 @@ class TestUsers: mock_session, 2, ) + mock_is_allowed.assert_called_once_with( + mock_user + ) def test_delete_one_notfound( - self, - client, - mocker, - mock_session, - mock_user): - user_result = None - + self, + client, + mocker, + mock_session, + mock_user, + ): mock = mocker.patch.object( service, 'delete_one', side_effect=exceptions.UserNotFoundError('User 2 not found') ) + mock_is_allowed = mocker.patch.object( + service, + 'is_allowed', + return_value=True + ) response = client.delete('/api/users/2') - response_data = response.json() assert response.status_code == 404 mock.assert_called_once_with( mock_session, 2, ) + mock_is_allowed.assert_called_once_with( + mock_user + ) def test_delete_one_unauthorized( - self, - client, - mocker, - mock_session, - mock_user): + self, + client, + mocker, + ): def unauthorized(): raise HTTPException(status_code=401) - user_body = user_factory.user_body_factory(name='test user delete') - app.dependency_overrides[get_current_user] = unauthorized mock = mocker.patch('src.users.service.delete_one')