Skip to content

Commit b659908

Browse files
committed
fix: tests and lambda errors fixed
1 parent 39ac95d commit b659908

4 files changed

Lines changed: 179 additions & 133 deletions

File tree

Lines changed: 40 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,43 @@
1-
from src.modules.get_member.app.get_member_controller import GetMemberController
2-
from src.modules.get_member.app.get_member_usecase import GetMemberUsecase
1+
from src.modules.get_member_info.app.get_member_info_controller import GetMemberInfoController
2+
from src.modules.get_member_info.app.get_member_info_usecase import GetMemberInfoUsecase
33
from src.shared.infra.repositories.member_repository_mock import MemberRepositoryMock
44
from src.shared.infra.repositories.action_repository_mock import ActionRepositoryMock
55
from src.shared.helpers.external_interfaces.http_models import HttpRequest
6-
from src.shared.infra.repositories.strike_repository_mock import StrikeRepositoryMock
76
from pprint import pprint
87

98

10-
class Test_GetMemberController:
9+
class Test_GetMemberInfoController:
1110
member_repo = MemberRepositoryMock()
1211
action_repo = ActionRepositoryMock()
13-
strike_repo = StrikeRepositoryMock()
1412
first_member = member_repo.members[0] # Vitor Guirão
15-
usecase = GetMemberUsecase(member_repo=member_repo, action_repo=action_repo, strike_repo=strike_repo)
16-
controller = GetMemberController(usecase)
13+
usecase = GetMemberInfoUsecase(member_repo=member_repo, action_repo=action_repo)
14+
controller = GetMemberInfoController(usecase)
1715

18-
def test_get_member_controller(self):
16+
def test_get_member_info_controller(self):
1917
request = HttpRequest(
2018
body={
2119
'requester_user': {
2220
"sub": self.first_member.user_id,
2321
"name": self.first_member.name,
2422
"email": self.first_member.email,
2523
"custom:isMaua": True
26-
},
27-
'start_date': 1624576165000, # 25/06/2021
28-
'end_date': 1690046000000 # 22/07/2023
24+
}
2925
}
3026
)
3127

3228
expected_dict = {
33-
'member': {
34-
'active': 'ACTIVE',
35-
'cellphone': '11991758098',
36-
'course': 'ECA',
37-
'deactivated_date': None,
38-
'email': 'vsoller@airubio.com',
39-
'email_dev': 'vsoller.devmaua@gmail.com',
40-
'hired_date': 1634576165000,
41-
'hours_worked': 134460000000,
29+
'member_info': {
4230
'name': 'Vitor Guirão MPNTM',
43-
'photo': None,
44-
'project': ['Maua Food', 'Portfólio', 'Selfie Mauá'],
4531
'ra': '21017310',
4632
'role': 'DIRECTOR',
4733
'stack': 'INFRA',
48-
'strikes': 0, # Nenhum strike nesse período (2021-2023)
49-
'strikes_id': [],
50-
'strikes_allowed': 4, # 3 projetos = 4 strikes permitidos
51-
'user_id': '93bc6ada-c0d1-7054-66ab-e17414c48ae3',
52-
'year': 1
34+
'year': 1,
35+
'course': 'ECA',
36+
'project': ['Maua Food', 'Portfólio', 'Selfie Mauá'],
37+
'hired_date': 1634576165000,
38+
'photo': None
5339
},
54-
'message': 'the member was retrieved'
40+
'message': 'the member info was retrieved successfully'
5541
}
5642

5743
response = self.controller(request)
@@ -61,7 +47,7 @@ def test_get_member_controller(self):
6147
assert response.status_code == 200
6248
assert response.body == expected_dict
6349

64-
def test_get_controller_with_invalid_id(self):
50+
def test_get_member_info_controller_with_invalid_id(self):
6551
request = HttpRequest(
6652
body={
6753
'requester_user': {
@@ -77,7 +63,7 @@ def test_get_controller_with_invalid_id(self):
7763

7864
assert response.status_code == 400
7965

80-
def test_get_controller_without_id(self):
66+
def test_get_member_info_controller_without_id(self):
8167
request = HttpRequest(
8268
body={
8369
'requester_user': {
@@ -93,7 +79,7 @@ def test_get_controller_without_id(self):
9379

9480
assert response.status_code == 400
9581

96-
def test_get_controller_with_nonexistentid(self):
82+
def test_get_member_info_controller_with_nonexistent_id(self):
9783
request = HttpRequest(
9884
body={
9985
'requester_user': {
@@ -110,7 +96,7 @@ def test_get_controller_with_nonexistentid(self):
11096
assert response.status_code == 403
11197
assert response.body == "That user is not registered"
11298

113-
def test_get_controller_with_no_request_user(self):
99+
def test_get_member_info_controller_with_no_requester_user(self):
114100
request = HttpRequest(
115101
body={}
116102
)
@@ -120,46 +106,36 @@ def test_get_controller_with_no_request_user(self):
120106
assert response.status_code == 400
121107
assert response.body == "Field requester_user is missing"
122108

123-
def test_get_member_contoller_no_start_date_and_end_date(self):
109+
def test_get_member_info_controller_freeze_user(self):
110+
# Luigi Televisão - FREEZE
124111
request = HttpRequest(
125112
body={
126113
'requester_user': {
127-
"sub": self.first_member.user_id,
128-
"name": self.first_member.name,
129-
"email": self.first_member.email,
114+
"sub": "76h35dg4-h76v-1875-987hn-h67gfv45Gt4",
115+
"name": "Luigi Televisão",
116+
"email": "lgtv@gmail.com",
130117
"custom:isMaua": True
131118
}
132119
}
133120
)
134121

135-
expected_dict = {
136-
'member': {
137-
'active': 'ACTIVE',
138-
'cellphone': '11991758098',
139-
'course': 'ECA',
140-
'deactivated_date': None,
141-
'email': 'vsoller@airubio.com',
142-
'email_dev': 'vsoller.devmaua@gmail.com',
143-
'hired_date': 1634576165000,
144-
'hours_worked': 0,
145-
'name': 'Vitor Guirão MPNTM',
146-
'photo': None,
147-
'project': ['Maua Food', 'Portfólio', 'Selfie Mauá'],
148-
'ra': '21017310',
149-
'role': 'DIRECTOR',
150-
'stack': 'INFRA',
151-
'strikes': 1,
152-
'strikes_id': ['t0u1v2w3-x4y5-6789-0123-456789tuvwxy'],
153-
'strikes_allowed': 4,
154-
'user_id': '93bc6ada-c0d1-7054-66ab-e17414c48ae3',
155-
'year': 1
156-
},
157-
'message': 'the member was retrieved'
158-
}
159-
160122
response = self.controller(request)
161123

162-
pprint(response.body)
124+
assert response.status_code == 403
163125

164-
assert response.status_code == 200
165-
assert response.body == expected_dict
126+
def test_get_member_info_controller_disconnected_user(self):
127+
# Marcos Pereira Neto - DISCONNECTED
128+
request = HttpRequest(
129+
body={
130+
'requester_user': {
131+
"sub": "6574hgyt-785n-9134-18gn4-7gh5uvn36cG",
132+
"name": "Marcos Pereira Neto",
133+
"email": "mneto@gmail.com",
134+
"custom:isMaua": True
135+
}
136+
}
137+
)
138+
139+
response = self.controller(request)
140+
141+
assert response.status_code == 403

tests/modules/get_member_info/app/test_get_member_info_presenter.py

Lines changed: 78 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import json
2-
from src.modules.get_member.app.get_member_presenter import lambda_handler
2+
from src.modules.get_member_info.app.get_member_info_presenter import lambda_handler
33
from src.shared.infra.repositories.member_repository_mock import MemberRepositoryMock
44

55

66
repo_mock = MemberRepositoryMock()
7-
first_member = repo_mock.members[0]
8-
third_member = repo_mock.members[2]
7+
first_member = repo_mock.members[0] # Vitor Guirão
8+
third_member = repo_mock.members[2] # Luigi Televisão (FREEZE)
99

1010

11-
class Test_GetMemberPresenter:
11+
class Test_GetMemberInfoPresenter:
1212

13-
def test_get_member_presenter(self):
13+
def test_get_member_info_presenter(self):
1414
event = {
1515
"version": "2.0",
1616
"routeKey": "$default",
@@ -58,9 +58,13 @@ def test_get_member_presenter(self):
5858
}
5959

6060
response = lambda_handler(event, None)
61+
6162
assert response["statusCode"] == 200
63+
body = json.loads(response["body"])
64+
assert "member_info" in body
65+
assert body["member_info"]["name"] == "Vitor Guirão MPNTM"
6266

63-
def test_get_enrollment_presenter_invalid_id(self):
67+
def test_get_member_info_presenter_invalid_id(self):
6468
event = {
6569
"version": "2.0",
6670
"routeKey": "$default",
@@ -110,7 +114,7 @@ def test_get_enrollment_presenter_invalid_id(self):
110114
response = lambda_handler(event, None)
111115
assert response["statusCode"] == 400
112116

113-
def test_get_enrollment_presenter_nonexistent_id(self):
117+
def test_get_member_info_presenter_nonexistent_id(self):
114118
event = {
115119
"version": "2.0",
116120
"routeKey": "$default",
@@ -158,4 +162,70 @@ def test_get_enrollment_presenter_nonexistent_id(self):
158162
}
159163

160164
response = lambda_handler(event, None)
161-
assert response["statusCode"] == 403
165+
assert response["statusCode"] == 403
166+
167+
def test_get_member_info_presenter_freeze_user(self):
168+
# third_member é Luigi Televisão (FREEZE)
169+
event = {
170+
"version": "2.0",
171+
"routeKey": "$default",
172+
"rawPath": "/my/path",
173+
"rawQueryString": "",
174+
"headers": {},
175+
"requestContext": {
176+
"accountId": "123456789012",
177+
"apiId": "<urlid>",
178+
"authentication": None,
179+
"authorizer": {
180+
"claims": {
181+
"sub": third_member.user_id,
182+
"name": third_member.name,
183+
"email": third_member.email,
184+
"custom:isMaua": True
185+
}
186+
},
187+
"domainName": "<url-id>.lambda-url.us-west-2.on.aws",
188+
"requestId": "id",
189+
"routeKey": "$default",
190+
"stage": "$default",
191+
"time": "12/Mar/2020:19:03:58 +0000",
192+
"timeEpoch": 1583348638390
193+
},
194+
"body": None,
195+
"pathParameters": None,
196+
"isBase64Encoded": None,
197+
"stageVariables": None
198+
}
199+
200+
response = lambda_handler(event, None)
201+
assert response["statusCode"] == 403
202+
203+
def test_get_member_info_presenter_missing_claims(self):
204+
event = {
205+
"version": "2.0",
206+
"routeKey": "$default",
207+
"rawPath": "/my/path",
208+
"rawQueryString": "",
209+
"headers": {},
210+
"requestContext": {
211+
"accountId": "123456789012",
212+
"apiId": "<urlid>",
213+
"authentication": None,
214+
"authorizer": {
215+
"claims": None # Sem claims
216+
},
217+
"domainName": "<url-id>.lambda-url.us-west-2.on.aws",
218+
"requestId": "id",
219+
"routeKey": "$default",
220+
"stage": "$default",
221+
"time": "12/Mar/2020:19:03:58 +0000",
222+
"timeEpoch": 1583348638390
223+
},
224+
"body": None,
225+
"pathParameters": None,
226+
"isBase64Encoded": None,
227+
"stageVariables": None
228+
}
229+
230+
response = lambda_handler(event, None)
231+
assert response["statusCode"] == 400

tests/modules/get_member_info/app/test_get_member_info_usecase.py

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,62 @@
1-
from src.modules.get_member.app.get_member_usecase import GetMemberUsecase
1+
from src.modules.get_member_info.app.get_member_info_usecase import GetMemberInfoUsecase
22
from src.shared.domain.entities.member import Member
33
from src.shared.infra.repositories.member_repository_mock import MemberRepositoryMock
4-
from src.shared.helpers.errors.usecase_errors import UnregisteredUser, UserNotAllowed
54
from src.shared.infra.repositories.action_repository_mock import ActionRepositoryMock
6-
from src.shared.infra.repositories.strike_repository_mock import StrikeRepositoryMock
5+
from src.shared.helpers.errors.usecase_errors import UnregisteredUser, UserNotAllowed
76
import pytest
87

98

10-
class Test_GetMemberUsecase:
11-
def test_get_member_usecase(self):
9+
class Test_GetMemberInfoUsecase:
10+
def test_get_member_info_usecase(self):
1211
member_repo = MemberRepositoryMock()
1312
action_repo = ActionRepositoryMock()
14-
strike_repo = StrikeRepositoryMock()
15-
usecase = GetMemberUsecase(member_repo=member_repo, action_repo=action_repo, strike_repo=strike_repo)
13+
usecase = GetMemberInfoUsecase(member_repo=member_repo, action_repo=action_repo)
1614

17-
# Joao Branco - members[1]
15+
# Usando o segundo membro ativo do mock - Joao Branco
1816
member = usecase(user_id='51ah5jaj-c9jm-1345-666ab-e12341c14a3')
1917

20-
assert member.user_id == '51ah5jaj-c9jm-1345-666ab-e12341c14a3'
2118
assert type(member) == Member
19+
assert member.user_id == '51ah5jaj-c9jm-1345-666ab-e12341c14a3'
2220
assert member.name == 'Joao Branco'
23-
24-
def test_get_member_usecase_not_found_user_id(self):
21+
assert member.ra == '21010757'
22+
assert member.role.value == 'HEAD'
23+
assert member.stack.value == 'BACKEND'
24+
assert member.year == 3
25+
assert member.course.value == 'ECM'
26+
assert member.hired_date == 1634921765000
27+
assert hasattr(member, 'project')
28+
assert isinstance(member.project, list)
29+
30+
def test_get_member_info_usecase_not_found_user_id(self):
2531
member_repo = MemberRepositoryMock()
2632
action_repo = ActionRepositoryMock()
27-
strike_repo = StrikeRepositoryMock()
28-
usecase = GetMemberUsecase(member_repo=member_repo, action_repo=action_repo, strike_repo=strike_repo)
33+
usecase = GetMemberInfoUsecase(member_repo=member_repo, action_repo=action_repo)
2934

3035
with pytest.raises(UnregisteredUser):
3136
usecase(user_id='xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
3237

33-
def test_get_member_usecase_freeze_user(self):
38+
def test_get_member_info_usecase_freeze_user(self):
3439
member_repo = MemberRepositoryMock()
3540
action_repo = ActionRepositoryMock()
36-
strike_repo = StrikeRepositoryMock()
37-
usecase = GetMemberUsecase(member_repo=member_repo, action_repo=action_repo, strike_repo=strike_repo)
41+
usecase = GetMemberInfoUsecase(member_repo=member_repo, action_repo=action_repo)
3842

3943
# Luigi Televisão - FREEZE
4044
with pytest.raises(UserNotAllowed):
4145
usecase(user_id='76h35dg4-h76v-1875-987hn-h67gfv45Gt4')
4246

43-
def test_get_member_usecase_onhold_user(self):
47+
def test_get_member_info_usecase_disconnected_user(self):
48+
member_repo = MemberRepositoryMock()
49+
action_repo = ActionRepositoryMock()
50+
usecase = GetMemberInfoUsecase(member_repo=member_repo, action_repo=action_repo)
51+
52+
# Marcos Pereira Neto - DISCONNECTED
53+
with pytest.raises(UserNotAllowed):
54+
usecase(user_id='6574hgyt-785n-9134-18gn4-7gh5uvn36cG')
55+
56+
def test_get_member_info_usecase_onhold_user(self):
4457
member_repo = MemberRepositoryMock()
4558
action_repo = ActionRepositoryMock()
46-
strike_repo = StrikeRepositoryMock()
47-
usecase = GetMemberUsecase(member_repo=member_repo, action_repo=action_repo, strike_repo=strike_repo)
59+
usecase = GetMemberInfoUsecase(member_repo=member_repo, action_repo=action_repo)
4860

4961
# Carlinhos Miau - ON_HOLD
5062
with pytest.raises(UserNotAllowed):

0 commit comments

Comments
 (0)