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
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
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
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
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
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
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
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
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()
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])
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)
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()
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)