Ejemplo n.º 1
0
    def get_lock_detail(self, access_token, lock_id):
        response = self._call_api(
            "get",
            API_GET_LOCK_URL.format(lock_id=lock_id),
            access_token=access_token)

        return LockDetail(response.json())
Ejemplo n.º 2
0
 def get_lock_detail(self, access_token, lock_id):
     return LockDetail(
         self._dict_to_api(
             self._build_get_lock_detail_request(access_token,
                                                 lock_id)).json())
Ejemplo n.º 3
0
async def _mock_lock_from_fixture(hass, path):
    json_dict = await _load_json_fixture(hass, path)
    return LockDetail(json_dict)
Ejemplo n.º 4
0
    def test_update_lock_with_activity(self):
        lock = LockDetail(
            json.loads(load_fixture("get_lock.online_with_doorsense.json")))
        self.assertEqual("ABC", lock.device_id)
        self.assertEqual(LockStatus.LOCKED, lock.lock_status)
        self.assertEqual(LockDoorStatus.OPEN, lock.door_state)
        self.assertEqual(dateutil.parser.parse("2017-12-10T04:48:30.272Z"),
                         lock.lock_status_datetime)
        self.assertEqual(dateutil.parser.parse("2017-12-10T04:48:30.272Z"),
                         lock.door_state_datetime)

        lock_operation_activity = LockOperationActivity(
            json.loads(load_fixture("lock_activity.json")))
        unlock_operation_activity = LockOperationActivity(
            json.loads(load_fixture("unlock_activity.json")))
        open_operation_activity = DoorOperationActivity(
            json.loads(load_fixture("door_open_activity.json")))
        closed_operation_activity = DoorOperationActivity(
            json.loads(load_fixture("door_closed_activity.json")))
        closed_operation_wrong_deviceid_activity = DoorOperationActivity(
            json.loads(
                load_fixture("door_closed_activity_wrong_deviceid.json")))
        closed_operation_wrong_houseid_activity = DoorOperationActivity(
            json.loads(
                load_fixture("door_closed_activity_wrong_houseid.json")))

        self.assertTrue(
            update_lock_detail_from_activity(lock, unlock_operation_activity))
        self.assertEqual(LockStatus.UNLOCKED, lock.lock_status)
        self.assertEqual(
            as_utc_from_local(
                datetime.datetime.fromtimestamp(1582007217000 / 1000)),
            lock.lock_status_datetime,
        )

        self.assertTrue(
            update_lock_detail_from_activity(lock, lock_operation_activity))
        self.assertEqual(LockStatus.LOCKED, lock.lock_status)
        self.assertEqual(
            as_utc_from_local(
                datetime.datetime.fromtimestamp(1582007218000 / 1000)),
            lock.lock_status_datetime,
        )

        # returns false we send an older activity
        self.assertFalse(
            update_lock_detail_from_activity(lock, unlock_operation_activity))

        self.assertTrue(
            update_lock_detail_from_activity(lock, closed_operation_activity))
        self.assertEqual(LockDoorStatus.CLOSED, lock.door_state)
        self.assertEqual(
            as_utc_from_local(
                datetime.datetime.fromtimestamp(1582007217000 / 1000)),
            lock.door_state_datetime,
        )

        self.assertTrue(
            update_lock_detail_from_activity(lock, open_operation_activity))
        self.assertEqual(LockDoorStatus.OPEN, lock.door_state)
        self.assertEqual(
            as_utc_from_local(
                datetime.datetime.fromtimestamp(1582007219000 / 1000)),
            lock.door_state_datetime,
        )

        # returns false we send an older activity
        self.assertFalse(
            update_lock_detail_from_activity(lock, closed_operation_activity))

        with self.assertRaises(ValueError):
            update_lock_detail_from_activity(
                lock, closed_operation_wrong_deviceid_activity)

        # We do not always have the houseid so we do not throw
        # as long as the deviceid is correct since they are unique
        self.assertFalse(
            update_lock_detail_from_activity(
                lock, closed_operation_wrong_houseid_activity))

        self.assertEqual(LockDoorStatus.OPEN, lock.door_state)
        self.assertEqual(LockStatus.LOCKED, lock.lock_status)
        activities = _convert_lock_result_to_activities(
            json.loads(load_fixture("unlock.json")))
        for activity in activities:
            self.assertTrue(update_lock_detail_from_activity(lock, activity))
        self.assertEqual(LockDoorStatus.CLOSED, lock.door_state)
        self.assertEqual(LockStatus.UNLOCKED, lock.lock_status)
Ejemplo n.º 5
0
 async def async_get_lock_detail(self, access_token, lock_id):
     response = await self._async_dict_to_api(
         self._build_get_lock_detail_request(access_token, lock_id))
     return LockDetail(await response.json())
Ejemplo n.º 6
0
    def test_update_lock_details_from_pubnub_message(self):
        lock = LockDetail(
            json.loads(load_fixture("get_lock.online_with_doorsense.json")))
        self.assertEqual("ABC", lock.device_id)
        self.assertEqual(LockStatus.LOCKED, lock.lock_status)
        self.assertEqual(LockDoorStatus.OPEN, lock.door_state)
        self.assertEqual(dateutil.parser.parse("2017-12-10T04:48:30.272Z"),
                         lock.lock_status_datetime)
        self.assertEqual(dateutil.parser.parse("2017-12-10T04:48:30.272Z"),
                         lock.door_state_datetime)

        self.assertTrue(
            update_lock_details_from_pubnub_message(
                lock,
                dateutil.parser.parse("2017-12-10T05:48:30.272Z"),
                {LOCK_STATUS_KEY: "kAugLockState_Unlocking"},
            ))
        self.assertEqual(LockStatus.UNLOCKED, lock.lock_status)
        self.assertTrue(
            update_lock_details_from_pubnub_message(
                lock,
                dateutil.parser.parse("2017-12-10T05:48:30.272Z"),
                {DOOR_STATE_KEY: "closed"},
            ))
        self.assertEqual(LockDoorStatus.CLOSED, lock.door_state)
        self.assertFalse(
            update_lock_details_from_pubnub_message(
                lock,
                dateutil.parser.parse("2017-12-10T02:48:30.272Z"),
                {DOOR_STATE_KEY: "open"},
            ))
        self.assertEqual(LockDoorStatus.CLOSED, lock.door_state)
        self.assertTrue(
            update_lock_details_from_pubnub_message(
                lock,
                dateutil.parser.parse("2017-12-10T10:48:30.272Z"),
                {
                    DOOR_STATE_KEY: "open",
                    LOCK_STATUS_KEY: "kAugLockState_Locking"
                },
            ))
        self.assertEqual(LockStatus.LOCKED, lock.lock_status)
        self.assertEqual(LockDoorStatus.OPEN, lock.door_state)

        self.assertFalse(
            update_lock_details_from_pubnub_message(
                lock,
                dateutil.parser.parse("2017-12-10T11:48:30.272Z"),
                {
                    LOCK_STATUS_KEY: "DoorStateChanged",
                    "lockID": "xxx",
                    "timeStamp": 1615087688187,
                },
            ))
        self.assertFalse(
            update_lock_details_from_pubnub_message(
                lock,
                dateutil.parser.parse("2017-12-10T12:48:30.272Z"),
                {
                    DOOR_STATE_KEY: "init",
                    "lockID": "xxx",
                    "timeStamp": 1615087688187,
                },
            ))
Ejemplo n.º 7
0
def _mock_doorsense_missing_august_lock_detail(lockid):
    doorsense_lock_detail_data = _mock_august_lock_data(lockid=lockid)
    del doorsense_lock_detail_data["LockStatus"]["doorState"]
    return LockDetail(doorsense_lock_detail_data)
Ejemplo n.º 8
0
def _mock_doorsense_enabled_august_lock_detail(lockid):
    doorsense_lock_detail_data = _mock_august_lock_data(lockid=lockid)
    return LockDetail(doorsense_lock_detail_data)
Ejemplo n.º 9
0
def _mock_inoperative_august_lock_detail(lockid):
    inoperative_lock_detail_data = _mock_august_lock_data(lockid=lockid)
    del inoperative_lock_detail_data["Bridge"]
    return LockDetail(inoperative_lock_detail_data)
Ejemplo n.º 10
0
def _mock_operative_august_lock_detail(lockid):
    operative_lock_detail_data = _mock_august_lock_data(lockid=lockid)
    return LockDetail(operative_lock_detail_data)