diff options
Diffstat (limited to 'tests/test_xboxone.py')
-rw-r--r-- | tests/test_xboxone.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/test_xboxone.py b/tests/test_xboxone.py new file mode 100644 index 0000000..d2aeb3c --- /dev/null +++ b/tests/test_xboxone.py @@ -0,0 +1,60 @@ +"""The tests for discovering Xbox gaming consoles via SmartGlass protocol.""" +import unittest +from binascii import unhexlify + +from netdisco.smartglass import XboxSmartGlass + + +class TestXboxOne(unittest.TestCase): + """Test the Xbox One Discoverable.""" + def setUp(self): + """ + Setup test class + """ + with open('tests/xboxone_files/discovery_response', 'rb') as content: + packet = content.read() + + if not packet: + raise Exception('Failed to read test data') + + self.discovery_response = packet + + def test_assemble_request(self): + """ + Test discovery request assembly + """ + packet = XboxSmartGlass.discovery_packet() + + self.assertEqual( + packet, + unhexlify(b'dd00000a000000000000000400000002') + ) + + def test_parse_response(self): + """ + Test discovery response parsing + """ + response = XboxSmartGlass.parse_discovery_response( + self.discovery_response) + + self.assertEqual(response['device_type'], 1) + self.assertEqual(response['flags'], 2) + self.assertEqual(response['name'], 'XboxOne') + self.assertEqual(response['uuid'], + 'DE305D54-75B4-431B-ADB2-EB6B9E546014') + self.assertEqual(response['last_error'], 0) + self.assertEqual(response['certificate'][:8], '30820203') + self.assertEqual(len(unhexlify(response['certificate'])), 519) + + def test_verify_response(self): + """ + Test discovery response verification + """ + valid_parse = XboxSmartGlass.verify_packet(self.discovery_response) + invalid_length = XboxSmartGlass.verify_packet(unhexlify(b'41')) + invalid_magic = XboxSmartGlass.verify_packet( + unhexlify(b'aabbccddeeff00')) + + self.assertIsNotNone(valid_parse) + self.assertIsNone(invalid_length) + self.assertIsNone(invalid_magic) |