1
- from unittest .mock import AsyncMock , Mock , patch
1
+ from unittest .mock import AsyncMock , Mock
2
2
3
3
import pytest
4
4
from fastapi import Request
5
5
6
- from app .user . application . service . user import UserService
6
+ from app .container import Container
7
7
from core .fastapi .dependencies import (
8
- PermissionDependency ,
8
+ AllowAll ,
9
9
IsAdmin ,
10
10
IsAuthenticated ,
11
- AllowAll ,
11
+ PermissionDependency ,
12
12
)
13
- from core .fastapi .dependencies import permission
14
13
from core .fastapi .dependencies .permission import UnauthorizedException
15
14
15
+ container = Container ()
16
+
16
17
17
18
@pytest .mark .asyncio
18
19
async def test_permission_dependency_is_authenticated ():
@@ -27,31 +28,34 @@ async def test_permission_dependency_is_authenticated():
27
28
28
29
29
30
@pytest .mark .asyncio
30
- @patch .object (permission , "UserService" , spec = UserService )
31
- async def test_permission_dependency_is_admin_user_is_not_admin (user_service_mock ):
31
+ async def test_permission_dependency_is_admin_user_is_not_admin ():
32
32
# Given
33
33
dependency = PermissionDependency (permissions = [IsAdmin ])
34
34
request = AsyncMock (spec = Request )
35
35
user_id = 1
36
36
request .user = Mock (id = user_id )
37
+ user_service_mock = AsyncMock ()
37
38
user_service_mock .is_admin .return_value = False
38
39
39
40
# When, Then
40
- await dependency (request = request )
41
+ with container .user_service .override (user_service_mock ):
42
+ with pytest .raises (UnauthorizedException ):
43
+ await dependency (request = request )
41
44
42
45
43
46
@pytest .mark .asyncio
44
- @patch .object (permission , "UserService" , spec = UserService )
45
- async def test_permission_dependency_is_admin_user_id_is_none (user_service_mock ):
47
+ async def test_permission_dependency_is_admin_user_id_is_none ():
46
48
# Given
47
49
dependency = PermissionDependency (permissions = [IsAdmin ])
48
50
request = AsyncMock (spec = Request )
49
51
request .user = Mock (id = None )
52
+ user_service_mock = AsyncMock ()
50
53
user_service_mock .is_admin .return_value = False
51
54
52
55
# When, Then
53
- with pytest .raises (UnauthorizedException ):
54
- await dependency (request = request )
56
+ with container .user_service .override (user_service_mock ):
57
+ with pytest .raises (UnauthorizedException ):
58
+ await dependency (request = request )
55
59
56
60
57
61
@pytest .mark .asyncio
0 commit comments