from unittest import TestCase from gcsa.conference import EntryPoint, ConferenceSolution, ConferenceSolutionCreateRequest, SolutionType, \ _BaseConferenceSolution from gcsa.serializers.conference_serializer import EntryPointSerializer, ConferenceSolutionSerializer, \ ConferenceSolutionCreateRequestSerializer class TestBaseConferenceSolution(TestCase): def test_init(self): conference_solution = _BaseConferenceSolution( conference_id='hello', signature='signature', notes='important notes' ) self.assertEqual(conference_solution.conference_id, 'hello') self.assertEqual(conference_solution.signature, 'signature') self.assertEqual(conference_solution.notes, 'important notes') def test_notes_length(self): with self.assertRaises(ValueError): _BaseConferenceSolution(notes='*' * 2049) def test_eq(self): conference_solution = _BaseConferenceSolution( conference_id='hello', signature='signature', notes='important notes' ) self.assertFalse(conference_solution == 5) self.assertTrue(conference_solution == conference_solution) class TestEntryPoint(TestCase): def test_init(self): entry_point = EntryPoint( EntryPoint.VIDEO, uri='https://video-conf.com/123123', label='label', pin='rU9xzGHz', access_code='sUhk4QPn', meeting_code='sUhk4QPn', passcode='YKa7m4D6', password='JW7t7f35' ) self.assertEqual(entry_point.entry_point_type, EntryPoint.VIDEO) self.assertEqual(entry_point.uri, 'https://video-conf.com/123123') self.assertEqual(entry_point.label, 'label') self.assertEqual(entry_point.pin, 'rU9xzGHz') self.assertEqual(entry_point.access_code, 'sUhk4QPn') self.assertEqual(entry_point.meeting_code, 'sUhk4QPn') self.assertEqual(entry_point.passcode, 'YKa7m4D6') self.assertEqual(entry_point.password, 'JW7t7f35') def test_checks(self): with self.assertRaises(ValueError): EntryPoint('Offline') with self.assertRaises(ValueError): EntryPoint(EntryPoint.PHONE, label='a' * 513) with self.assertRaises(ValueError): EntryPoint(EntryPoint.PHONE, pin='a' * 129) with self.assertRaises(ValueError): EntryPoint(EntryPoint.PHONE, access_code='a' * 129) with self.assertRaises(ValueError): EntryPoint(EntryPoint.PHONE, meeting_code='a' * 129) with self.assertRaises(ValueError): EntryPoint(EntryPoint.PHONE, passcode='a' * 129) with self.assertRaises(ValueError): EntryPoint(EntryPoint.PHONE, password='a' * 129) def test_eq(self): entry_point = EntryPoint( EntryPoint.VIDEO, uri='https://video-conf.com/123123', label='label', pin='rU9xzGHz', access_code='sUhk4QPn', meeting_code='sUhk4QPn', passcode='YKa7m4D6', password='JW7t7f35' ) self.assertFalse(entry_point == 5) self.assertTrue(entry_point == entry_point) def test_repr_str(self): entry_point = EntryPoint( EntryPoint.VIDEO, uri='https://video-conf.com/123123', label='label', pin='rU9xzGHz', access_code='sUhk4QPn', meeting_code='sUhk4QPn', passcode='YKa7m4D6', password='JW7t7f35' ) self.assertEqual(entry_point.__repr__(), "") self.assertEqual(entry_point.__str__(), "video - 'https://video-conf.com/123123'") class TestEntryPointSerializer(TestCase): def test_to_json(self): entry_point = EntryPoint( EntryPoint.SIP, uri='sip:123123', label='label', pin='rU9xzGHz', access_code='sUhk4QPn', meeting_code='sUhk4QPn', passcode='YKa7m4D6', password='JW7t7f35' ) expected = { 'entryPointType': 'sip', 'uri': 'sip:123123', 'label': 'label', 'pin': 'rU9xzGHz', 'accessCode': 'sUhk4QPn', 'meetingCode': 'sUhk4QPn', 'passcode': 'YKa7m4D6', 'password': 'JW7t7f35' } serializer = EntryPointSerializer(entry_point) self.assertDictEqual(serializer.get_json(), expected) entry_point = EntryPoint( EntryPoint.MORE, uri='https://less.com', pin='rU9xzGHz', meeting_code='sUhk4QPn', password='JW7t7f35' ) expected = { 'entryPointType': 'more', 'uri': 'https://less.com', 'pin': 'rU9xzGHz', 'meetingCode': 'sUhk4QPn', 'password': 'JW7t7f35' } self.assertDictEqual(EntryPointSerializer.to_json(entry_point), expected) def test_to_object(self): entry_point_json = { 'entryPointType': 'sip', 'uri': 'sip:123123', 'label': 'label', 'pin': 'rU9xzGHz', 'accessCode': 'sUhk4QPn', 'meetingCode': 'sUhk4QPn', 'passcode': 'YKa7m4D6', 'password': 'JW7t7f35' } entry_point = EntryPointSerializer.to_object(entry_point_json) self.assertEqual(entry_point.entry_point_type, EntryPoint.SIP) self.assertEqual(entry_point.uri, 'sip:123123') self.assertEqual(entry_point.label, 'label') self.assertEqual(entry_point.pin, 'rU9xzGHz') self.assertEqual(entry_point.access_code, 'sUhk4QPn') self.assertEqual(entry_point.meeting_code, 'sUhk4QPn') self.assertEqual(entry_point.passcode, 'YKa7m4D6') self.assertEqual(entry_point.password, 'JW7t7f35') entry_point_json = { 'entryPointType': 'more', 'uri': 'https://less.com', 'password': 'JW7t7f35' } entry_point = EntryPointSerializer.to_object(entry_point_json) self.assertEqual(entry_point.entry_point_type, EntryPoint.MORE) self.assertEqual(entry_point.uri, 'https://less.com') self.assertIsNone(entry_point.label) self.assertIsNone(entry_point.pin) self.assertIsNone(entry_point.access_code) self.assertIsNone(entry_point.meeting_code) self.assertIsNone(entry_point.passcode) self.assertEqual(entry_point.password, 'JW7t7f35') class TestConferenceSolution(TestCase): def test_init(self): conference_solution = ConferenceSolution( entry_points=EntryPoint(EntryPoint.VIDEO), solution_type=SolutionType.HANGOUTS_MEET, name='Hangout', icon_uri='https://icon.com', conference_id='aaa-bbbb-ccc', signature='abc4efg12345', notes='important notes' ) self.assertListEqual(conference_solution.entry_points, [EntryPoint(EntryPoint.VIDEO)]) self.assertEqual(conference_solution.solution_type, SolutionType.HANGOUTS_MEET) self.assertEqual(conference_solution.name, 'Hangout') self.assertEqual(conference_solution.icon_uri, 'https://icon.com') self.assertEqual(conference_solution.conference_id, 'aaa-bbbb-ccc') self.assertEqual(conference_solution.signature, 'abc4efg12345') self.assertEqual(conference_solution.notes, 'important notes') conference_solution = ConferenceSolution( entry_points=[EntryPoint(EntryPoint.VIDEO)], ) self.assertEqual(conference_solution.entry_points, [EntryPoint(EntryPoint.VIDEO)]) conference_solution = ConferenceSolution( entry_points=[EntryPoint(EntryPoint.VIDEO), EntryPoint(EntryPoint.PHONE)], ) self.assertEqual(conference_solution.entry_points, [EntryPoint(EntryPoint.VIDEO), EntryPoint(EntryPoint.PHONE)]) def test_entry_point_types(self): with self.assertRaises(ValueError): ConferenceSolution( entry_points=[] ) with self.assertRaises(ValueError): ConferenceSolution( entry_points=[ EntryPoint(EntryPoint.VIDEO), EntryPoint(EntryPoint.VIDEO) ] ) with self.assertRaises(ValueError): ConferenceSolution( entry_points=[ EntryPoint(EntryPoint.SIP), EntryPoint(EntryPoint.SIP) ] ) with self.assertRaises(ValueError): ConferenceSolution( entry_points=[ EntryPoint(EntryPoint.SIP), EntryPoint(EntryPoint.MORE), EntryPoint(EntryPoint.MORE) ] ) with self.assertRaises(ValueError): # can't have only MORE entry point(s) ConferenceSolution( entry_points=[ EntryPoint(EntryPoint.MORE) ] ) def test_eq(self): conference_solution = ConferenceSolution( entry_points=EntryPoint(EntryPoint.VIDEO), solution_type=SolutionType.HANGOUTS_MEET, name='Hangout', icon_uri='https://icon.com', conference_id='aaa-bbbb-ccc', signature='abc4efg12345', notes='important notes' ) self.assertFalse(conference_solution == 5) self.assertTrue(conference_solution == conference_solution) def test_repr_str(self): conference_solution = ConferenceSolution( entry_points=EntryPoint(EntryPoint.VIDEO), solution_type=SolutionType.HANGOUTS_MEET, name='Hangout', icon_uri='https://icon.com', conference_id='aaa-bbbb-ccc', signature='abc4efg12345', notes='important notes' ) self.assertEqual(conference_solution.__repr__(), "]>") self.assertEqual(conference_solution.__str__(), "hangoutsMeet - []") conference_solution = ConferenceSolution( entry_points=[EntryPoint(EntryPoint.VIDEO), EntryPoint(EntryPoint.SIP)], solution_type=SolutionType.HANGOUTS_MEET, name='Hangout', icon_uri='https://icon.com', conference_id='aaa-bbbb-ccc', signature='abc4efg12345', notes='important notes' ) self.assertEqual(conference_solution.__repr__(), ", ]>") self.assertEqual(conference_solution.__str__(), "hangoutsMeet - [, ]") class TestConferenceSolutionSerializer(TestCase): def test_to_json(self): conference_solution = ConferenceSolution( entry_points=EntryPoint(EntryPoint.VIDEO, uri='https://video.com'), solution_type=SolutionType.HANGOUTS_MEET, name='Hangout', icon_uri='https://icon.com', conference_id='aaa-bbbb-ccc', signature='abc4efg12345', notes='important notes' ) expected = { 'entryPoints': [ { 'entryPointType': 'video', 'uri': 'https://video.com', } ], 'conferenceSolution': { 'key': { 'type': 'hangoutsMeet' }, 'name': 'Hangout', 'iconUri': 'https://icon.com' }, 'conferenceId': 'aaa-bbbb-ccc', 'signature': 'abc4efg12345', 'notes': 'important notes' } serializer = ConferenceSolutionSerializer(conference_solution) self.assertDictEqual(serializer.get_json(), expected) conference_solution = ConferenceSolution( entry_points=[ EntryPoint(EntryPoint.VIDEO, uri='https://video.com'), EntryPoint(EntryPoint.PHONE, uri='+420000000000') ], solution_type=SolutionType.NAMED_HANGOUT, ) expected = { 'entryPoints': [ { 'entryPointType': 'video', 'uri': 'https://video.com', }, { 'entryPointType': 'phone', 'uri': '+420000000000', } ], 'conferenceSolution': { 'key': { 'type': 'eventNamedHangout' } } } self.assertDictEqual(ConferenceSolutionSerializer.to_json(conference_solution), expected) def test_to_object(self): conference_solution_json = { 'entryPoints': [ { 'entryPointType': 'video', 'uri': 'https://video.com', } ], 'conferenceSolution': { 'key': { 'type': 'hangoutsMeet' }, 'name': 'Hangout', 'iconUri': 'https://icon.com' }, 'conferenceId': 'aaa-bbbb-ccc', 'signature': 'abc4efg12345', 'notes': 'important notes' } expected_conference_solution = ConferenceSolution( entry_points=EntryPoint(EntryPoint.VIDEO, uri='https://video.com'), solution_type=SolutionType.HANGOUTS_MEET, name='Hangout', icon_uri='https://icon.com', conference_id='aaa-bbbb-ccc', signature='abc4efg12345', notes='important notes' ) self.assertEqual(ConferenceSolutionSerializer.to_object(conference_solution_json), expected_conference_solution) conference_solution_json = { 'entryPoints': [ { 'entryPointType': 'video', 'uri': 'https://video.com', }, { 'entryPointType': 'phone', 'uri': '+420000000000', } ], 'conferenceSolution': { 'key': { 'type': 'eventNamedHangout' } } } expected_conference_solution = ConferenceSolution( entry_points=[ EntryPoint(EntryPoint.VIDEO, uri='https://video.com'), EntryPoint(EntryPoint.PHONE, uri='+420000000000') ], solution_type=SolutionType.NAMED_HANGOUT, ) self.assertEqual(ConferenceSolutionSerializer.to_object(conference_solution_json), expected_conference_solution) def test_eq(self): conference_solution = ConferenceSolution( entry_points=EntryPoint(EntryPoint.VIDEO, uri='https://video.com'), solution_type=SolutionType.HANGOUTS_MEET, name='Hangout', icon_uri='https://icon.com', conference_id='aaa-bbbb-ccc', signature='abc4efg12345', notes='important notes' ) self.assertFalse(conference_solution == 5) class TestConferenceSolutionCreateRequest(TestCase): def test_init(self): cscr = ConferenceSolutionCreateRequest( solution_type=SolutionType.HANGOUTS_MEET, request_id='hello1234', conference_id='conference-id', signature='signature', notes='important notes' ) self.assertEqual(cscr.solution_type, 'hangoutsMeet') self.assertEqual(cscr.request_id, 'hello1234') self.assertEqual(cscr.conference_id, 'conference-id') self.assertEqual(cscr.signature, 'signature') self.assertEqual(cscr.notes, 'important notes') cscr = ConferenceSolutionCreateRequest( solution_type=SolutionType.HANGOUTS_MEET, ) self.assertEqual(cscr.solution_type, 'hangoutsMeet') self.assertIsNotNone(cscr.request_id) def test_eq(self): cscr = ConferenceSolutionCreateRequest( solution_type=SolutionType.HANGOUTS_MEET, request_id='hello1234', conference_id='conference-id', signature='signature', notes='important notes' ) self.assertFalse(cscr == 5) self.assertTrue(cscr == cscr) def test_repr_str(self): cscr = ConferenceSolutionCreateRequest( solution_type=SolutionType.HANGOUTS_MEET, request_id='hello1234', conference_id='conference-id', signature='signature', notes='important notes' ) self.assertEqual(cscr.__repr__(), "") self.assertEqual(cscr.__str__(), "hangoutsMeet - status:'None'") class TestConferenceSolutionCreateRequestSerializer(TestCase): def test_to_json(self): cscr = ConferenceSolutionCreateRequest( solution_type=SolutionType.HANGOUTS_MEET, request_id='hello1234', conference_id='conference-id', signature='signature', notes='important notes', _status='pending' ) expected = { 'createRequest': { 'requestId': 'hello1234', 'conferenceSolutionKey': { 'type': 'hangoutsMeet' }, 'status': { 'statusCode': 'pending' } }, 'conferenceId': 'conference-id', 'signature': 'signature', 'notes': 'important notes' } serializer = ConferenceSolutionCreateRequestSerializer(cscr) self.assertDictEqual(serializer.get_json(), expected) cscr = ConferenceSolutionCreateRequest( solution_type=SolutionType.HANGOUTS_MEET, notes='important notes' ) expected = { 'createRequest': { 'requestId': cscr.request_id, 'conferenceSolutionKey': { 'type': 'hangoutsMeet' } }, 'notes': 'important notes' } self.assertDictEqual(ConferenceSolutionCreateRequestSerializer.to_json(cscr), expected) def test_to_object(self): cscr_json = { 'createRequest': { 'requestId': 'hello1234', 'conferenceSolutionKey': { 'type': 'hangoutsMeet' } }, 'conferenceId': 'conference-id', 'signature': 'signature', 'notes': 'important notes' } expected_cscr = ConferenceSolutionCreateRequest( solution_type=SolutionType.HANGOUTS_MEET, request_id='hello1234', conference_id='conference-id', signature='signature', notes='important notes' ) self.assertEqual(ConferenceSolutionCreateRequestSerializer.to_object(cscr_json), expected_cscr) cscr_json = { 'createRequest': { 'requestId': 'hello1234', 'conferenceSolutionKey': { 'type': 'hangoutsMeet' } }, 'signature': 'signature' } expected_cscr = ConferenceSolutionCreateRequest( solution_type=SolutionType.HANGOUTS_MEET, request_id='hello1234', signature='signature' ) self.assertEqual(ConferenceSolutionCreateRequestSerializer.to_object(cscr_json), expected_cscr)