-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Here is the basic example:
def test_authentication(iam_server):
# create a random user on the IAM server
user = iam_server.random_user()
print(user)I get:
test_iam.py:2 (test_authentication)
iam_server = <pytest_iam.Server object at 0x157bebac0>
def test_authentication(iam_server):
# create a random user on the IAM server
> user = iam_server.random_user()
test_iam.py:5:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../site-packages/pytest_iam/__init__.py:95: in random_user
user.update(**kwargs)
../site-packages/canaille/core/models.py:317: in __getattribute__
return super().__getattribute__(name)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <User id=663bcce0-a788-42c1-93d2-7c2210adf740>, name = 'update'
def __getattribute__(self, name):
if name != "attributes" and name in self.attributes:
return self.deserialize(name, self._cache.get(name, self._state.get(name)))
> return super().__getattribute__(name)
E AttributeError: 'User' object has no attribute 'update'
../site-packages/canaille/backends/memory/models.py:63: AttributeErrorThis is because the random user uses a call to user.update(**kwargs) to update fields before saving, and this is apparently not supported anymore.
An alternative here that works is using the setattribute instead:
def random_user(self, **kwargs) -> User:
"""Generate a :class:`~canaille.core.models.User` with random values.
Any parameter will be used instead of a random value.
"""
with self.app.app_context():
user = fake_users()[0]
for k, v in kwargs.items():
setattr(user, k, v)
self.backend.save(user)
return userModified test for testing:
def test_authentication(iam_server):
# create a random user on the IAM server
user = iam_server.random_user(employee_number="10")
assert user.employee_number == "10"
print(user)I'm willing to provide a patch after maintainer feedback.
Metadata
Metadata
Assignees
Labels
No labels