def test_update_doorbell_image_from_activity_missing_image_at_start(self): doorbell = DoorbellDetail( json.loads(load_fixture("get_doorbell_missing_image.json"))) self.assertEqual("K98GiDT45GUL", doorbell.device_id) self.assertEqual( None, doorbell.image_created_at_datetime, ) self.assertEqual(None, doorbell.image_url) doorbell_motion_activity_no_image = DoorbellMotionActivity( SOURCE_LOG, json.loads(load_fixture("doorbell_motion_activity_no_image.json")), ) self.assertFalse( update_doorbell_image_from_activity( doorbell, doorbell_motion_activity_no_image)) doorbell_motion_activity = DoorbellMotionActivity( SOURCE_LOG, json.loads(load_fixture("doorbell_motion_activity.json"))) self.assertTrue( update_doorbell_image_from_activity(doorbell, doorbell_motion_activity)) self.assertEqual( dateutil.parser.parse("2020-02-20T17:44:45Z"), doorbell.image_created_at_datetime, ) self.assertEqual("https://my.updated.image/image.jpg", doorbell.image_url)
def test_update_doorbell_image_from_activity(self): doorbell = DoorbellDetail(json.loads( load_fixture("get_doorbell.json"))) self.assertEqual("K98GiDT45GUL", doorbell.device_id) self.assertEqual( dateutil.parser.parse("2017-12-10T08:01:35Z"), doorbell.image_created_at_datetime, ) self.assertEqual("https://image.com/vmk16naaaa7ibuey7sar.jpg", doorbell.image_url) doorbell_motion_activity_no_image = DoorbellMotionActivity( SOURCE_LOG, json.loads(load_fixture("doorbell_motion_activity_no_image.json")), ) self.assertFalse( update_doorbell_image_from_activity( doorbell, doorbell_motion_activity_no_image)) doorbell_motion_activity = DoorbellMotionActivity( SOURCE_LOG, json.loads(load_fixture("doorbell_motion_activity.json"))) self.assertTrue( update_doorbell_image_from_activity(doorbell, doorbell_motion_activity)) self.assertEqual( dateutil.parser.parse("2020-02-20T17:44:45Z"), doorbell.image_created_at_datetime, ) self.assertEqual("https://my.updated.image/image.jpg", doorbell.image_url) old_doorbell_motion_activity = DoorbellMotionActivity( SOURCE_LOG, json.loads(load_fixture("doorbell_motion_activity_old.json"))) # returns false we send an older activity self.assertFalse( update_doorbell_image_from_activity(doorbell, old_doorbell_motion_activity)) self.assertEqual( dateutil.parser.parse("2020-02-20T17:44:45Z"), doorbell.image_created_at_datetime, ) self.assertEqual("https://my.updated.image/image.jpg", doorbell.image_url) wrong_doorbell_motion_activity = DoorbellMotionActivity( SOURCE_LOG, json.loads(load_fixture("doorbell_motion_activity_wrong.json"))) with self.assertRaises(ValueError): update_doorbell_image_from_activity( doorbell, wrong_doorbell_motion_activity)
async def _mock_doorbell_from_fixture(hass, path): json_dict = await _load_json_fixture(hass, path) return DoorbellDetail(json_dict)
def get_doorbell_detail(self, access_token, doorbell_id): return DoorbellDetail( self._dict_to_api( self._build_get_doorbell_detail_request( access_token, doorbell_id)).json())
async def async_get_doorbell_detail(self, access_token, doorbell_id): response = await self._async_dict_to_api( self._build_get_doorbell_detail_request(access_token, doorbell_id)) return DoorbellDetail(await response.json())
def test_update_doorbell_details_from_pubnub_message(self): doorbell = DoorbellDetail(json.loads( load_fixture("get_doorbell.json"))) self.assertEqual("K98GiDT45GUL", doorbell.device_id) self.assertEqual( dateutil.parser.parse("2017-12-10T08:01:35Z"), doorbell.image_created_at_datetime, ) self.assertEqual("https://image.com/vmk16naaaa7ibuey7sar.jpg", doorbell.image_url) activities = activities_from_pubnub_message( doorbell, dateutil.parser.parse("2021-03-16T01:07:08.817Z"), { "status": "imagecapture", "data": { "event": "imagecapture", "result": { "created_at": "2021-03-16T01:07:08.817Z", "secure_url": "https://dyu7azbnaoi74.cloudfront.net/zip/images/zip.jpeg", }, }, }, ) assert isinstance(activities[0], DoorbellImageCaptureActivity) assert "DoorbellImageCaptureActivity" in str(activities[0]) assert (activities[0].image_url == "https://dyu7azbnaoi74.cloudfront.net/zip/images/zip.jpeg") assert activities[ 0].image_created_at_datetime == dateutil.parser.parse( "2021-03-16T01:07:08.817Z") activities = activities_from_pubnub_message( doorbell, dateutil.parser.parse("2021-03-16T01:07:08.817Z"), { "status": "imagecapture", "data": { "event": "imagecapture", "result": { "created_at": "2021-03-16T01:07:08.817Z", "secure_url": "https://dyu7azbnaoi74.cloudfront.net/zip/images/zip.jpeg", }, }, }, ) assert isinstance(activities[0], DoorbellImageCaptureActivity) assert (activities[0].image_url == "https://dyu7azbnaoi74.cloudfront.net/zip/images/zip.jpeg") assert activities[ 0].image_created_at_datetime == dateutil.parser.parse( "2021-03-16T01:07:08.817Z") activities = activities_from_pubnub_message( doorbell, dateutil.parser.parse("2021-03-16T01:07:08.817Z"), { "status": "doorbell_motion_detected", "callID": None, "origin": "mars-api", "data": { "event": "doorbell_motion_detected", "image": { "height": 640, "width": 480, "format": "jpg", "created_at": "2021-03-16T02:36:26.886Z", "bytes": 14061, "secure_url": "https://dyu7azbnaoi74.cloudfront.net/images/1f8.jpeg", "url": "https://dyu7azbnaoi74.cloudfront.net/images/1f8.jpeg", "etag": "09e839331c4ea59eef28081f2caa0e90", }, "doorbellName": "Front Door", "callID": None, "origin": "mars-api", "mutableContent": True, }, }, ) assert isinstance(activities[0], DoorbellMotionActivity) assert (activities[0].image_url == "https://dyu7azbnaoi74.cloudfront.net/images/1f8.jpeg") assert activities[ 0].image_created_at_datetime == dateutil.parser.parse( "2021-03-16T02:36:26.886Z") activities = activities_from_pubnub_message( doorbell, dateutil.parser.parse("2021-03-16T01:07:08.817Z"), { "status": "buttonpush", "origin": "mars-api", "data": { "doorbellID": "26593a60f5d6", "event": "buttonpush", "doorbellName": "Front Door", "origin": "mars-api", }, }, ) assert isinstance(activities[0], DoorbellDingActivity) assert "DoorbellDingActivity" in str(activities[0])