summaryrefslogtreecommitdiff
path: root/tests/test_xboxone.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_xboxone.py')
-rw-r--r--tests/test_xboxone.py60
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)