@@ -99,7 +99,7 @@ def test_exception_handling(self, mock_logger, mock_firehose_logger):
9999 self .assertEqual (logged_info ['local_id' ], '12345^http://test' )
100100 self .assertEqual (logged_info ['vaccine_type' ], 'FLU' )
101101
102- def test_invalid_body (self , mock_logger , mock_firehose_logger ):
102+ def test_body_missing (self , mock_logger , mock_firehose_logger ):
103103 # Arrange
104104 wrapped_function = function_info (self .mock_success_function )
105105 event = {
@@ -109,8 +109,7 @@ def test_invalid_body(self, mock_logger, mock_firehose_logger):
109109 'SupplierSystem' : 'test_supplier'
110110 },
111111 'path' : '/test' ,
112- 'requestContext' : {'resourcePath' : '/test' },
113- 'body' : "{\" identifier\" : [{\" system\" : \" http://test\" , \" value\" : \" 12345\" }], \" protocolApplied\" : []}"
112+ 'requestContext' : {'resourcePath' : '/test' }
114113 }
115114
116115 # Act
@@ -128,31 +127,95 @@ def test_invalid_body(self, mock_logger, mock_firehose_logger):
128127 self .assertNotIn ('local_id' , logged_info )
129128 self .assertNotIn ('vaccine_type' , logged_info )
130129
131- def test_nonexistent_body (self , mock_logger , mock_firehose_logger ):
132- # Arrange
133- wrapped_function = function_info (self .mock_success_function )
134- event = {
135- 'headers' : {
136- 'X-Correlation-ID' : 'test_correlation' ,
137- 'X-Request-ID' : 'test_request' ,
138- 'SupplierSystem' : 'test_supplier'
130+ def test_body_not_json (self , mock_logger , mock_firehose_logger ):
131+ # Act
132+ decorated_function_raises = function_info (self .mock_function_raises )
133+
134+ with self .assertRaises (ValueError ):
135+ #Assert
136+ event = {'headers' : {
137+ 'X-Correlation-ID' : 'failed_test_correlation' ,
138+ 'X-Request-ID' : 'failed_test_request' ,
139+ 'SupplierSystem' : 'failed_test_supplier'
139140 },
140- 'path' : '/test' ,
141- 'requestContext' : {'resourcePath' : '/test' }
142- }
141+ 'path' : '/failed_test' , 'requestContext' : {'resourcePath' : '/failed_test' },
142+ 'body' : "invalid" }
143143
144- # Act
145- result = wrapped_function (event , {} )
144+ context = {}
145+ decorated_function_raises (event , context )
146146
147- # Assert
148- args , kwargs = mock_logger .info .call_args
147+ #Assert
148+ args , kwargs = mock_logger .exception .call_args
149149 logged_info = json .loads (args [0 ])
150150
151- self .assertEqual (logged_info ['X-Correlation-ID' ], 'test_correlation ' )
152- self .assertEqual (logged_info ['X-Request-ID' ], 'test_request ' )
153- self .assertEqual (logged_info ['supplier' ], 'test_supplier ' )
154- self .assertEqual (logged_info ['actual_path' ], '/test ' )
155- self .assertEqual (logged_info ['resource_path' ], '/test ' )
151+ self .assertEqual (logged_info ['X-Correlation-ID' ], 'failed_test_correlation ' )
152+ self .assertEqual (logged_info ['X-Request-ID' ], 'failed_test_request ' )
153+ self .assertEqual (logged_info ['supplier' ], 'failed_test_supplier ' )
154+ self .assertEqual (logged_info ['actual_path' ], '/failed_test ' )
155+ self .assertEqual (logged_info ['resource_path' ], '/failed_test ' )
156156 self .assertNotIn ('local_id' , logged_info )
157157 self .assertNotIn ('vaccine_type' , logged_info )
158158
159+ def test_body_invalid_identifier (self , mock_logger , mock_firehose_logger ):
160+ # Arrange
161+ self .mock_redis_client .hget .return_value = "FLU"
162+
163+ # Act
164+ decorated_function_raises = function_info (self .mock_function_raises )
165+
166+ with self .assertRaises (ValueError ):
167+ #Assert
168+ event = {'headers' : {
169+ 'X-Correlation-ID' : 'failed_test_correlation' ,
170+ 'X-Request-ID' : 'failed_test_request' ,
171+ 'SupplierSystem' : 'failed_test_supplier'
172+ },
173+ 'path' : '/failed_test' , 'requestContext' : {'resourcePath' : '/failed_test' },
174+ 'body' : "{\" identifier\" : [], \" protocolApplied\" : [{\" targetDisease\" : [{\" coding\" : [{\" system\" : \" http://snomed.info/sct\" , \" code\" : \" 840539006\" , \" display\" : \" Disease caused by severe acute respiratory syndrome coronavirus 2\" }]}]}]}" }
175+
176+ context = {}
177+ decorated_function_raises (event , context )
178+
179+ #Assert
180+ args , kwargs = mock_logger .exception .call_args
181+ logged_info = json .loads (args [0 ])
182+
183+ self .assertEqual (logged_info ['X-Correlation-ID' ], 'failed_test_correlation' )
184+ self .assertEqual (logged_info ['X-Request-ID' ], 'failed_test_request' )
185+ self .assertEqual (logged_info ['supplier' ], 'failed_test_supplier' )
186+ self .assertEqual (logged_info ['actual_path' ], '/failed_test' )
187+ self .assertEqual (logged_info ['resource_path' ], '/failed_test' )
188+ self .assertNotIn ('local_id' , logged_info )
189+ self .assertEqual (logged_info ['vaccine_type' ], 'FLU' )
190+
191+ def test_body_invalid_protocol_applied (self , mock_logger , mock_firehose_logger ):
192+ # Arrange
193+ self .mock_redis_client .hget .return_value = "FLU"
194+
195+ # Act
196+ decorated_function_raises = function_info (self .mock_function_raises )
197+
198+ with self .assertRaises (ValueError ):
199+ #Assert
200+ event = {'headers' : {
201+ 'X-Correlation-ID' : 'failed_test_correlation' ,
202+ 'X-Request-ID' : 'failed_test_request' ,
203+ 'SupplierSystem' : 'failed_test_supplier'
204+ },
205+ 'path' : '/failed_test' , 'requestContext' : {'resourcePath' : '/failed_test' },
206+ 'body' : "{\" identifier\" : [{\" system\" : \" http://test\" , \" value\" : \" 12345\" }], \" protocolApplied\" : []}" }
207+
208+ context = {}
209+ decorated_function_raises (event , context )
210+
211+ #Assert
212+ args , kwargs = mock_logger .exception .call_args
213+ logged_info = json .loads (args [0 ])
214+
215+ self .assertEqual (logged_info ['X-Correlation-ID' ], 'failed_test_correlation' )
216+ self .assertEqual (logged_info ['X-Request-ID' ], 'failed_test_request' )
217+ self .assertEqual (logged_info ['supplier' ], 'failed_test_supplier' )
218+ self .assertEqual (logged_info ['actual_path' ], '/failed_test' )
219+ self .assertEqual (logged_info ['resource_path' ], '/failed_test' )
220+ self .assertEqual (logged_info ['local_id' ], '12345^http://test' )
221+ self .assertNotIn ('vaccine_type' , logged_info )
0 commit comments