"""Verification reports must preserve failure and omit device identifiers.""" import json from pathlib import Path import sys import unittest sys.path.insert(0, str(Path(__file__).resolve().parents[1])) from verify import safe_watch_info, watch_success class VerificationTests(unittest.TestCase): def test_nested_info_keeps_versions_and_omits_identifiers(self): result = {'code': 200, 'values': json.dumps({ 'model': 'S2', 'runtimeVersion': '0.7', 'deviceCode': 'private-device-id', 'mac': 'private-mac', 'license': 'private-license', 'firmwareVersion': {'serial': 'private-serial'}})} self.assertEqual(safe_watch_info(result), {'model': 'S2', 'runtimeVersion': '0.7'}) def test_empty_callback_does_not_invent_a_model(self): self.assertEqual(safe_watch_info({'code': 200, 'values': ''}), {}) def test_oww265_msg_envelope_is_redacted(self): result = {'code': 200, 'values': '', 'msg': json.dumps({ 'brand': 'OPPO', 'model': 'OWW265', 'masVersion': 2006005, 'runtimeVersion': '0.8.0-5', 'nucleusVersion': '0.8.0-229', 'mac': 'private-mac', 'uuid': 'private-uuid', 'vendorId': 1})} self.assertEqual(safe_watch_info(result), { 'brand': 'OPPO', 'model': 'OWW265', 'masVersion': 2006005, 'runtimeVersion': '0.8.0-5', 'nucleusVersion': '0.8.0-229'}) def test_watch_error_is_not_success_even_with_success_state(self): self.assertFalse(watch_success({'state': 'success', 'result': {'code': 4008}})) self.assertFalse(watch_success({'state': 'timeout', 'result': {'code': 200}})) self.assertTrue(watch_success({'state': 'success', 'result': {'code': 200}})) if __name__ == '__main__': unittest.main()