def test_no_hash_match(self): with app.test_request_context(): g.trace_id = 'test' self.assertEqual( self.cypto.validate_signature(test_payload, test_sig, "sha-256:MADEUP"), (False, "Supplied hash does not match calculated hash."))
def test_match(self): with app.test_request_context(): g.trace_id = 'test' self.assertEqual( self.cypto.validate_signature(test_payload, test_sig, test_hash), (True, "Signature and payload match."))
def test_invalid_hash(self): with app.test_request_context(): g.trace_id = 'test' self.assertEqual( self.cypto.validate_signature(test_payload, test_sig, "NOTAHASH"), (False, "Invalid hash string 'NOTAHASH'."))
def test_invalid_sig(self): with app.test_request_context(): g.trace_id = 'test' self.assertEqual( self.cypto.validate_signature(test_payload, "NOTASIG", test_hash), (False, "Invalid signature string 'NOTASIG'."))
def test_valid_register_fail(self, session, mock_charge_id_service, validate): with app.test_request_context(): expected_register_result = { "error": "Bad times", "details": [] } g.session = mock.MagicMock() response = mock.MagicMock() response.status_code = 400 response.json.return_value = expected_register_result response.text.return_value = b'Bad times' session.return_value.post.return_value = response mock_charge_id_service.generate_charge_id.return_value = MOCK_CHARGE_ID res = self.app.post('/v1.0/records', data='{"local-land-charge": "w00t"}', content_type="application/json", headers={'Authorization': 'Fake JWT'}) actual_result = res.get_data().decode('utf-8') self.assertEqual(res.status_code, 400) self.assertEqual(True, 'error' in actual_result) self.assertEqual(True, 'details' in actual_result) self.assertEqual(True, 'Bad times' in actual_result)
def test_no_match(self): with app.test_request_context(): g.trace_id = 'test' self.assertEqual( self.cypto.validate_signature(test_payload, test_sig.replace('0', '2'), test_hash), (False, 'Signature and payload do not match.'))
def test_health_cascade(self, requests, pg): with app.test_request_context(): response = MagicMock() response.status_code = 200 response.headers = {'content-type': 'application/unit+test'} response.json.return_value = {} requests.return_value.get.return_value = response pg.connect.return_value.cursor.return_value.fetchone.return_value = [datetime.now()] resp = self.app.get('/health/cascade/4') self.assertEqual(resp.status_code, 200)
def test_valid_update(self, session, mock_charge_id_service, validate): with app.test_request_context(): g.session = mock.MagicMock() response = mock.MagicMock() response.status_code = 202 response.json.return_value = EXPECTED_REGISTER_RESPONSE session.return_value.post.return_value = response res = self.app.post('/v1.0/records', data='{"local-land-charge": 1}', content_type="application/json", headers={'Authorization': 'Fake JWT'}) actual_result = json.loads(res.get_data().decode('utf-8')) self.assertEqual((res.status_code, actual_result), (202, EXPECTED_MINT_RESPONSE)) mock_charge_id_service.assert_not_called()
def test_valid_add(self, session, mock_charge_id_service, validate): with app.test_request_context(): g.session = mock.MagicMock() response = mock.MagicMock() response.status_code = 202 response.json.return_value = EXPECTED_REGISTER_RESPONSE session.return_value.post.return_value = response mock_charge_id_service.generate_charge_id.return_value = MOCK_CHARGE_ID res = self.app.post('/v1.0/records', data='{"test_field": "w00t"}', content_type="application/json", headers={'Authorization': 'Fake JWT'}) actual_result = json.loads(res.get_data().decode('utf-8')) self.assertEqual((res.status_code, actual_result), (202, EXPECTED_MINT_RESPONSE)) mock_charge_id_service.generate_charge_id.assert_called_once()
def test_minified_json_to_sign_payload(self, session, mock_cryptography, mock_charge_id_service, validate): with app.test_request_context(): g.session = mock.MagicMock() response = mock.MagicMock() response.status_code = 202 response.json.return_value = EXPECTED_REGISTER_RESPONSE session.return_value.post.return_value = response mock_cryptography.return_value = "rs256:test_sig", "sha-256:test_hash" mock_charge_id_service.generate_charge_id.return_value = MOCK_CHARGE_ID res = self.app.post('/v1.0/records', data='{"my-key": "my-value"}', content_type="application/json", headers={'Authorization': 'Fake JWT'}) actual_result = json.loads(res.get_data().decode('utf-8')) mock_cryptography.assert_called_with( '{{"{}":{},"my-key":"my-value"}}'.format('local-land-charge', MOCK_CHARGE_ID)) self.assertEqual((res.status_code, actual_result), (202, EXPECTED_MINT_RESPONSE))
def test_sign_valid(self): with app.test_request_context(): g.trace_id = 'test' self.assertEqual(self.cypto.sign_payload(test_payload), (test_sig, test_hash))
def test_no_token(self): with app.test_request_context(): res = self.app.post('/v1.0/records', data='{"local-land-charge": 1}', content_type="application/json") self.assertEqual(res.status_code, 401)