def setUpClass(cls): """ Only create device records once per TestCase """ super(AppManagerTest, cls).setUpClass() ipad7_5 = {'UDID': 'aabbccddeeff0011223344556677889900000001', 'ECID': '0x00000000000001', 'deviceType': 'iPad7,5'} ipad7_3 = {'UDID': 'aabbccddeeff0011223344556677889900000002', 'ECID': '0x00000000000002', 'deviceType': 'iPad7,3'} ipad8_1 = {'UDID': 'aabbccddeeff0011223344556677889900000003', 'ECID': '0x00000000000003', 'deviceType': 'iPad8,1'} ipadf_n = {'UDID': 'aabbccddeeff0011223344556677889900000004', 'ECID':'0x00000000000004', 'deviceType': 'iPad99,9'} cls.ipad = device.Device(ipad7_5['ECID'], ipad7_5, path=cls.resources.devices) cls.ipadpro = device.Device(ipad7_3['ECID'], ipad7_3, path=cls.resources.devices) cls.ipadpro2 = device.Device(ipad8_1['ECID'], ipad8_1, path=cls.resources.devices) cls.newipad = device.Device(ipadf_n['ECID'], ipadf_n, path=cls.resources.devices) cls.manager = apps.AppManager()
def setUp(self): self.dir = os.path.join(TMPDIR, 'threaded') self.data = { 'locationID': '0x00000001', 'UDID': 'a0111222333444555666777888999abcdefabcde', 'ECID': '0x123456789ABCD0', "deviceType": "iPad7,5" } self.ecid = self.data['ECID'] self.device = device.Device(self.ecid, info=self.data, path=self.dir) self.device2 = device.Device(self.ecid, path=self.dir) self.device3 = device.Device(self.ecid, path=self.dir)
def test_minimal_init_succeeds(self): data = { 'UDID': self.udid, 'ECID': self.ecid, 'deviceType': self.devicetype } d = device.Device(self.ecid, info=data, path=self.dir)
def test_device_record_created(self): data = { 'UDID': self.udid, 'ECID': self.ecid, 'deviceType': self.devicetype } d = device.Device(self.ecid, info=data, path=self.dir) self.assertTrue(os.path.exists(d.file))
def test_device_record_has_keys(self): data = { 'UDID': self.udid, 'ECID': self.ecid, 'deviceType': self.devicetype } d = device.Device(self.ecid, info=data, path=self.dir) for key, value in plistlib.readPlist(d.file).items(): expected = self.data.get(key) self.assertEquals(expected, value)
def setUp(self): cls = self.__class__ self.dir = os.path.join(TMPDIR, 'locking') self.data = { 'ECID': '0x123456789ABCD0', 'UDID': 'a0111222333444555666777888999abcdefabcde', 'deviceType': 'iPad7,5' } self.ecid = self.data['ECID'] self.device = device.Device(self.ecid, info=self.data, path=self.dir) self.lock = config.FileLock(self.device.config.lockfile, timeout=1)
def test_existing_record_updated2(self): new = { 'deviceName': 'iPad', 'firmwareVersion': '12.0', 'locationID': '0x14100001', 'buildVersion': '15E303' } d = device.Device(self.ecid, info=new, path=self.dir) result = plistlib.readPlist(d.file) for k in new.keys(): self.assertNotEqual(result[k], self.orig[k])
def test_existing_record_updated(self): new = { 'deviceName': 'iPad', 'firmwareVersion': '12.0', 'locationID': '0x14100001', 'buildVersion': '15E303' } d = device.Device(self.ecid, info=new, path=self.dir) result = plistlib.readPlist(d.file) for key, value in result.items(): old = self.orig.get(key) expected = new.get(key, old) self.assertEquals(expected, value)
def setUp(self): self.dir = os.path.join(TMPDIR, 'checkin') self.data = { 'ECID': '0x123456789ABCD0', 'UDID': 'a0111222333444555666777888999abcdefabcde', 'bootedState': 'Booted', 'buildVersion': '15E302', 'deviceName': 'checkout-ipad-1', 'deviceType': 'iPad7,5', 'firmwareVersion': '11.3.1', 'locationID': '0x00000001' } self.ecid = '0x123456789ABCD0' self.device = device.Device(self.ecid, info=self.data, path=self.dir) self.__class__.file = self.file = self.device.file
def setUp(self): self.dir = os.path.join(TMPDIR, 'existing') self.orig = { 'ECID': '0x1D481C2E300026', 'UDID': 'fbe61f791f298c66ebb00a282f5b070c6cb9dc47', 'bootedState': 'Booted', 'buildVersion': '15E302', 'deviceName': 'test-student-checkout-ipad-2', 'deviceType': 'iPad7,5', 'firmwareVersion': '11.3.1', 'locationID': '0x14100000' } self.ecid = self.orig.get('ECID') self.device = device.Device(self.ecid, info=self.orig, path=self.dir) self.__class__.file = self.file = self.device.file
def setUp(self): self.dir = os.path.join(TMPDIR, 'state') now = datetime.now() self.orig = { 'ECID': '0x123456789ABCD0', 'UDID': 'a0111222333444555666777888999abcdefabcde', 'bootedState': 'Booted', 'buildVersion': '15E302', 'apps': ['app1', 'app2', 'app3'], 'background': 'background.png', 'erased': now - timedelta(seconds=3), 'enrolled': now - timedelta(seconds=2), 'checkout': now - timedelta(seconds=1), 'checkin': now, 'deviceName': 'checkout-ipad-1', 'name': 'checkout-ipad-1', 'deviceType': 'iPad7,5', 'firmwareVersion': '11.3.1', 'locationID': '0x00000001' } self.ecid = self.orig.get('ECID') self.device = device.Device(self.ecid, info=self.orig, path=self.dir) self.__class__.file = self.file = self.device.file
def setUp(self): self.dir = os.path.join(TMPDIR, 'list') self.data = [{ 'ECID': '0x123456789ABCD0', 'UDID': 'a0111222333444555666777888999abcdefabcde', 'bootedState': 'Booted', 'buildVersion': '15G77', 'deviceName': 'test-ipad-1', 'deviceType': 'iPad7,5', 'firmwareVersion': '11.4.1', 'locationID': '0x00000001' }, { 'ECID': '0x123456789ABCD1', 'UDID': 'a1111222333444555666777888999abcdefabcde', 'bootedState': 'Booted', 'buildVersion': '15G77', 'deviceName': 'test-ipad-2', 'deviceType': 'iPad7,5', 'firmwareVersion': '11.4.1', 'locationID': '0x00000002' }, { 'ECID': '0x123456789ABCD2', 'UDID': 'a2111222333444555666777888999abcdefabcde', 'bootedState': 'Booted', 'buildVersion': '15G77', 'deviceName': 'test-ipad-3', 'deviceType': 'iPad7,5', 'firmwareVersion': '11.4.1', 'locationID': '0x00000003' }] self.devices = [] for info in self.data: d = device.Device(info['ECID'], info, path=self.dir) self.devices.append(d) self.devicelist = device.DeviceList(self.devices)
def test_minimal_init_fails_missing_deviceType(self): data = {'ECID': self.ecid} with self.assertRaises(device.DeviceError): d = device.Device(self.ecid, info=data, path=self.dir)
def test_init_fails_missing_info(self): with self.assertRaises(device.DeviceError): d = device.Device(self.ecid, path=self.dir)
def test_contains_identical(self): data = self.data[0] identical = device.Device(data['ECID'], data, path=self.dir) self.assertIsNot(identical, self.devices[0]) self.assertTrue(identical in self.devicelist)
def test_alternative_minimal_init_fails_missing_ecid(self): data = {'UDID': self.udid, 'deviceType': self.devicetype} with self.assertRaises(device.DeviceError): device.Device(None, info=data, path=self.dir)
def test_device_record_has_all_keys(self): d = device.Device(self.ecid, info=self.data, path=self.dir) result = plistlib.readPlist(d.file) self.assertEquals(result, self.data)
def test_device_locked(self): with self.lock.acquire(): with self.assertRaises(device.DeviceError): d = device.Device(self.ecid, path=self.dir, timeout=0)
def test_device_record_no_extra_keys(self): d = device.Device(self.ecid, info=self.data, path=self.dir) result = plistlib.readPlist(d.file) for k in result.keys(): self.assertIsNotNone(self.data.get(k))
def test_existing_record_initialized(self): device.Device(self.ecid, path=self.dir)
def test_existing_record_no_info(self): d = device.Device(self.ecid, path=self.dir) for key, value in plistlib.readPlist(d.file).items(): self.assertEquals(self.orig[key], value)
def test_new_device_name_does_not_affect_name(self): name = self.device.name _info = {'deviceName': 'iPad'} d = device.Device(self.ecid, info=_info, path=self.dir) result = self.device.record self.assertNotEqual(result['name'], result['deviceName'])
def test_verify_mismatching_ECID(self): mismatch = {'ECID': 'mismatch'} with self.assertRaises(device.DeviceError): device.Device(self.ecid, info=mismatch, path=self.dir)