예제 #1
0
    def test_delete_device_data_filter_should_work(self):
        new_user_1_data = {**self.test_user_data, "Pin": "1"}
        new_user_2_data = {**self.test_user_data, "Pin": "2"}
        new_user_3_data = {**self.test_user_data, "Pin": "3"}

        new_user_1 = User(**new_user_1_data)
        new_user_2 = User(**new_user_2_data)
        new_user_3 = User(**new_user_3_data)

        self.zk.add_users([new_user_1])
        self.zk.add_users([new_user_2])
        self.zk.add_users([new_user_3])

        data_filter1 = DeviceDataFilter()
        data_filter1.add_condition("Pin", str(new_user_1.Pin))

        data_filter2 = DeviceDataFilter()
        data_filter2.add_condition("Pin", str(new_user_2.Pin))
        # data_filter.add_condition("Pin", str(new_user_3.Pin))

        self.zk.sdk.delete_device_data(
            tablename=TableName.user, data_filter=[data_filter2, data_filter1])

        all_users = self.zk.get_all_users()

        assert new_user_1 not in all_users
        assert new_user_2 not in all_users
        assert new_user_3 in all_users
예제 #2
0
    def test_delete_user_by_pin_should_delete_only_one_user(self):
        new_user_1_data = {**self.test_user_data, "Pin": "1"}
        new_user_2_data = {**self.test_user_data, "Pin": "2"}
        new_user_3_data = {**self.test_user_data, "Pin": "3"}

        new_user_1 = User(**new_user_1_data)
        new_user_2 = User(**new_user_2_data)
        new_user_3 = User(**new_user_3_data)

        self.zk.add_users([new_user_1])
        self.zk.add_users([new_user_2])
        self.zk.add_users([new_user_3])

        self.zk.delete_user_by_pin(new_user_2.Pin)

        assert len(self.zk.get_all_users()) == 2
예제 #3
0
    def test_sdk_get_user_by_pin_should_return_one_user_with_same_pin(self):
        pin = 123
        test_user_for_custom_pin_data = {**self.test_user_data, "Pin": pin}
        _test_user = User(**test_user_for_custom_pin_data)

        self.add_user_data_to_device(test_user_for_custom_pin_data)
        assert self.zk.get_user_by_pin(pin) == _test_user
예제 #4
0
    def get_all_users(self) -> List[User]:
        response = client.get(f"/devices/{self.handle}/users")
        assert response.status_code == 200
        assert isinstance(response.json(), list)

        users = list(map(lambda u: User(**u), response.json()))
        return users
예제 #5
0
    def get_all_users(self) -> List[User]:
        all_users = []

        data = self.sdk.get_device_data(TableName.user, 4 * 1024 * 1024)
        for d in data:
            all_users.append(User(**d))
        return all_users
예제 #6
0
    def test_delete_user_by_pin_should_delete_the_user_specified_by_pin(self):
        new_user_1_data = {**self.test_user_data, "Pin": "1"}
        new_user_2_data = {**self.test_user_data, "Pin": "2"}
        new_user_3_data = {**self.test_user_data, "Pin": "3"}

        new_user_1 = User(**new_user_1_data)
        new_user_2 = User(**new_user_2_data)
        new_user_3 = User(**new_user_3_data)

        self.zk.add_users([new_user_1])
        self.zk.add_users([new_user_2])
        self.zk.add_users([new_user_3])

        self.zk.delete_user_by_pin(new_user_2.Pin)

        all_users = self.zk.get_all_users()
        assert new_user_1 in all_users
        assert new_user_2 not in all_users
        assert new_user_3 in all_users
예제 #7
0
    def test_update_user_by_pin_should_not_add_a_new_user(self):
        new_user_1_data = {**self.test_user_data, "Pin": "1"}
        new_user_2_data = {**self.test_user_data, "Pin": "2"}
        new_user_3_data = {**self.test_user_data, "Pin": "3"}

        new_user_1 = User(**new_user_1_data)
        new_user_2 = User(**new_user_2_data)
        new_user_3 = User(**new_user_3_data)

        self.zk.add_users([new_user_1])
        self.zk.add_users([new_user_2])
        self.zk.add_users([new_user_3])

        updated_user_2_data = {**new_user_2_data, "Password": "******"}
        updated_user_2 = User(**updated_user_2_data)

        self.zk.update_user_by_pin(new_user_2.Pin, updated_user_2)

        assert len(self.zk.get_all_users()) == 3
예제 #8
0
    def test_update_user_by_pin_should_modify_password_data_for_user(self):
        new_user_1_data = {**self.test_user_data, "Pin": "1"}
        new_user_2_data = {**self.test_user_data, "Pin": "2"}
        new_user_3_data = {**self.test_user_data, "Pin": "3"}

        new_user_1 = User(**new_user_1_data)
        new_user_2 = User(**new_user_2_data)
        new_user_3 = User(**new_user_3_data)

        self.zk.add_users([new_user_1])
        self.zk.add_users([new_user_2])
        self.zk.add_users([new_user_3])

        updated_user_2_data = {**new_user_2_data, "Password": "******"}
        updated_user_2 = User(**updated_user_2_data)

        self.zk.update_user_by_pin(new_user_2.Pin, updated_user_2)
        user_2 = self.zk.get_user_by_pin(new_user_2.Pin)

        assert user_2.Password == updated_user_2.Password
예제 #9
0
    def test_get_users_should_return_multiple_added_user(self):
        new_user_1_data = {**self.test_user_data, "Pin": "1"}
        new_user_2_data = {**self.test_user_data, "Pin": "2"}
        new_user_3_data = {**self.test_user_data, "Pin": "3"}

        new_user_1 = User(**new_user_1_data)
        new_user_2 = User(**new_user_2_data)
        new_user_3 = User(**new_user_3_data)

        self.zk.add_users([new_user_1])
        self.zk.add_users([new_user_2])
        self.zk.add_users([new_user_3])

        assert new_user_1 in self.zk.get_all_users()
        assert new_user_2 in self.zk.get_all_users()
        assert new_user_3 in self.zk.get_all_users()

        not_new_user_4_data = {**self.test_user_data, "Pin": "4"}
        not_new_user_4 = User(**not_new_user_4_data)

        assert not_new_user_4 not in self.zk.get_all_users()
예제 #10
0
    def get_user_by_pin(self, pin: int) -> User:
        data_filter = DeviceDataFilter()
        data_filter.add_condition("Pin", str(pin))
        users = self.sdk.get_device_data(TableName.user, 1024 * 1024 * 4,
                                         data_filter)
        if (len(users)) > 1:
            print(users)
            raise Exception("More than one users matched the query.WTF"
                            )  # FIXME: make custom exception
        elif len(users) == 0:
            raise Exception(
                "User not found.WTF")  # FIXME: make custom exception

        return User(**users[0])
예제 #11
0
    def setup(self):
        # setup is called before each test in this class is run
        self.zk = ZKAccess(connstr=test_device_connstr, device_model=ZK100)
        self.delete_all_device_data()

        self.test_user = User(**self.test_user_data)
예제 #12
0
    def test_get_users_should_return_the_added_user(self):

        added_user = User(**self.test_user_data)
        self.zk.add_users([added_user])

        assert added_user in self.zk.get_all_users()
예제 #13
0
 def update_user_by_pin(self, pin: int, updated_user: User) -> None:
     existing_user = self.get_user_by_pin(pin)
     new_user = existing_user.copy(update=updated_user.dict())
     self.add_users([new_user], replace_existing=True)