from fpsweeper.model import fp_message from hypothesis import given import hypothesis.strategies as st import json import unittest class TestFpMessage(unittest.TestCase): def test_fp_message_invalid_track_source(self): """assert that passing in invalid track_source value raises a ValueError """ with self.assertRaises(ValueError): fp_message.FpMessage(filename='', tuid='', upc='', correlation_id='', track_source='invalid_track_source') @given(filename=st.text(), tuid=st.integers(), upc=st.integers(), correlation_id=st.text()) def test_fp_message_to_sqs_json(self, filename, tuid, upc, correlation_id): """assert that FpMessage returns correct sqs json format """ msg = fp_message.FpMessage(filename=filename, tuid=tuid, upc=upc, correlation_id=correlation_id, track_source=fp_message.BACKFILL) sqs_json = msg.to_sqs_json() self.assertIn(fp_message.SQS_MESSAGE_ID, sqs_json) self.assertIn(fp_message.SQS_MESSAGE_BODY, sqs_json) message_body_json = json.loads(sqs_json[fp_message.SQS_MESSAGE_BODY]) self.assertEqual(message_body_json[fp_message.FILENAME], filename) self.assertEqual(message_body_json[fp_message.TUID], tuid) self.assertEqual(message_body_json[fp_message.UPC], upc) self.assertIn(fp_message.FILE_UPLOAD_TIME, message_body_json) self.assertEqual(message_body_json[fp_message.CORRELATION_ID], correlation_id) self.assertEqual(message_body_json[fp_message.TRACK_SOURCE], fp_message.BACKFILL)