44import pytest
55import requests
66
7- from test_helpers .sample_data import CPM_PRODUCT_TEAM_NO_ID_NO_KEYS
87from test_helpers .terraform import read_terraform_output
98
109from .utils import execute_smoke_test , get_app_key , get_base_url , get_headers
1110
1211
13- def create_and_read_product_team (base_url : str , headers : dict ):
14- product_team_body = json .dumps (CPM_PRODUCT_TEAM_NO_ID_NO_KEYS )
15- url = f"{ base_url } /ProductTeam"
16- response = requests .post (url = url , headers = headers , data = product_team_body )
17- response_body = response .json ()
18- url = f"{ base_url } /ProductTeam/{ response_body ["id" ]} "
19- return requests .get (url = url , headers = headers )
20-
12+ def _request (base_url : str , headers : dict , path : str , method : str ):
13+ url = f"{ base_url } { path } "
14+ if method == "POST" :
15+ body = json .dumps ({"foo" : "bar" })
16+ return requests .post (url = url , headers = headers , data = body )
2117
22- REQUEST_METHODS = [
23- create_and_read_product_team ,
24- ]
18+ return requests .get (url = url , headers = headers )
2519
2620
2721@pytest .mark .smoke
28- def test_smoke_tests ():
22+ @pytest .mark .parametrize (
23+ "request_details" ,
24+ [
25+ [
26+ "/ProductTeam" ,
27+ "POST" ,
28+ 400 ,
29+ ["MISSING_VALUE" , "VALIDATION_ERROR" ],
30+ [
31+ "CreateProductTeamIncomingParams.ods_code: field required" ,
32+ "CreateProductTeamIncomingParams.name: field required" ,
33+ "CreateProductTeamIncomingParams.foo: extra fields not permitted" ,
34+ ],
35+ ],
36+ [
37+ "/ProductTeam/123/Product" ,
38+ "POST" ,
39+ 400 ,
40+ ["MISSING_VALUE" , "VALIDATION_ERROR" ],
41+ [
42+ "CreateCpmProductIncomingParams.product_name: field required" ,
43+ "CreateCpmProductIncomingParams.foo: extra fields not permitted" ,
44+ ],
45+ ],
46+ [
47+ "/ProductTeam/123/Product/Epr" ,
48+ "POST" ,
49+ 400 ,
50+ ["MISSING_VALUE" , "VALIDATION_ERROR" ],
51+ [
52+ "CreateCpmProductIncomingParams.product_name: field required" ,
53+ "CreateCpmProductIncomingParams.foo: extra fields not permitted" ,
54+ ],
55+ ],
56+ [
57+ "/ProductTeam/123/Product/abc/DeviceReferenceData" ,
58+ "POST" ,
59+ 400 ,
60+ ["MISSING_VALUE" , "VALIDATION_ERROR" ],
61+ [
62+ "CreateDeviceReferenceDataParams.name: field required" ,
63+ "CreateDeviceReferenceDataParams.foo: extra fields not permitted" ,
64+ ],
65+ ],
66+ # ('/ProductTeam/123/Product/abc/Device', 'POST', 400, ['MISSING_VALUE', 'VALIDATION_ERROR']),
67+ [
68+ "/ProductTeam/123" ,
69+ "GET" ,
70+ 404 ,
71+ ["RESOURCE_NOT_FOUND" ],
72+ ["Could not find ProductTeam for key ('123')" ],
73+ ],
74+ [
75+ "/ProductTeam/123/Product" ,
76+ "GET" ,
77+ 404 ,
78+ ["RESOURCE_NOT_FOUND" ],
79+ ["Could not find ProductTeam for key ('123')" ],
80+ ],
81+ [
82+ "/ProductTeam/123/Product/abc" ,
83+ "GET" ,
84+ 404 ,
85+ ["RESOURCE_NOT_FOUND" ],
86+ ["Could not find ProductTeam for key ('123')" ],
87+ ],
88+ [
89+ "/ProductTeam/123/Product/abc/DeviceReferenceData/xyz" ,
90+ "GET" ,
91+ 404 ,
92+ ["RESOURCE_NOT_FOUND" ],
93+ ["Could not find ProductTeam for key ('123')" ],
94+ ],
95+ # ['/ProductTeam/123/Product/abc/Device/xyz', 404, ['RESOURCE_NOT_FOUND'], ["Could not find ProductTeam for key ('123')"]],
96+ [
97+ "/Questionnaire/987" ,
98+ "GET" ,
99+ 404 ,
100+ ["RESOURCE_NOT_FOUND" ],
101+ ["Could not find Questionnaire for key ('987')" ],
102+ ],
103+ [
104+ "/searchSdsDevice" ,
105+ "GET" ,
106+ 400 ,
107+ ["MISSING_VALUE" ],
108+ [
109+ "SearchSDSDeviceQueryParams.nhs_as_client: field required" ,
110+ "SearchSDSDeviceQueryParams.nhs_as_svc_ia: field required" ,
111+ ],
112+ ],
113+ [
114+ "/searchSdsEndpoint" ,
115+ "GET" ,
116+ 400 ,
117+ ["VALIDATION_ERROR" ],
118+ [
119+ "SearchSDSEndpointQueryParams.__root__: At least 2 query parameters should be provided of type, nhs_id_code, nhs_mhs_svc_ia and nhs_mhs_party_key"
120+ ],
121+ ],
122+ ],
123+ )
124+ def test_smoke_tests (request_details ):
29125 workspace = os .environ .get ("WORKSPACE" ) or read_terraform_output ("workspace.value" )
30126 environment = os .environ .get ("ACCOUNT" ) or read_terraform_output (
31127 "environment.value"
@@ -34,10 +130,12 @@ def test_smoke_tests():
34130 headers = get_headers (app_key = app_key )
35131 base_url = get_base_url (workspace = workspace , environment = environment )
36132 print ( # noqa: T201
37- f"π Running π smoke test ({ environment } .{ workspace } --> { base_url } ) - π€"
133+ f"π Running π smoke test ({ environment } .{ workspace } --> { base_url } { request_details [ 0 ] } ) - π€"
38134 )
39135
40- for request_method in REQUEST_METHODS :
41- execute_smoke_test (
42- request_method = request_method , base_url = base_url , headers = headers
43- )
136+ execute_smoke_test (
137+ request_method = _request ,
138+ base_url = base_url ,
139+ headers = headers ,
140+ request_details = request_details ,
141+ )
0 commit comments