Skip to content

Commit faeb2f9

Browse files
committed
Add integration tests
1 parent ec2f79c commit faeb2f9

1 file changed

Lines changed: 79 additions & 0 deletions

File tree

integration/test_users.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,3 +214,82 @@ def test_list_all_users(client_factory: ClientFactory) -> None:
214214
assert len(dynamic_users) == 5
215215
for i in range(5):
216216
client.users.db.delete(user_id=f"list-all-{i}")
217+
218+
219+
def test_get_user_created_at_and_api_key_first_letters(client_factory: ClientFactory) -> None:
220+
with client_factory(ports=RBAC_PORTS, auth_credentials=Auth.api_key("admin-key")) as client:
221+
if client._connection._weaviate_version.is_lower_than(1, 30, 0):
222+
pytest.skip("This test requires Weaviate 1.30.0 or higher")
223+
224+
randomUserName = "new-user" + str(random.randint(1, 1000))
225+
apiKey = client.users.db.create(user_id=randomUserName)
226+
try:
227+
user = client.users.db.get(user_id=randomUserName)
228+
assert user is not None
229+
assert user.created_at is not None
230+
assert user.api_key_first_letters is not None
231+
assert len(user.api_key_first_letters) > 0
232+
finally:
233+
client.users.db.delete(user_id=randomUserName)
234+
235+
236+
def test_get_user_include_last_used_time(client_factory: ClientFactory) -> None:
237+
with client_factory(ports=RBAC_PORTS, auth_credentials=Auth.api_key("admin-key")) as client:
238+
if client._connection._weaviate_version.is_lower_than(1, 30, 0):
239+
pytest.skip("This test requires Weaviate 1.30.0 or higher")
240+
241+
randomUserName = "new-user" + str(random.randint(1, 1000))
242+
apiKey = client.users.db.create(user_id=randomUserName)
243+
try:
244+
# log in with the new user to generate a lastUsedAt timestamp
245+
with weaviate.connect_to_local(
246+
port=RBAC_PORTS[0],
247+
grpc_port=RBAC_PORTS[1],
248+
auth_credentials=Auth.api_key(apiKey),
249+
) as client2:
250+
assert client2.users.get_my_user().user_id == randomUserName
251+
252+
# without include_last_used_time, last_used_time should be None
253+
user = client.users.db.get(user_id=randomUserName)
254+
assert user is not None
255+
assert user.last_used_time is None
256+
257+
# with include_last_used_time=True, last_used_time should be populated
258+
user = client.users.db.get(user_id=randomUserName, include_last_used_time=True)
259+
assert user is not None
260+
assert user.last_used_time is not None
261+
finally:
262+
client.users.db.delete(user_id=randomUserName)
263+
264+
265+
def test_list_all_include_last_used_time(client_factory: ClientFactory) -> None:
266+
with client_factory(ports=RBAC_PORTS, auth_credentials=Auth.api_key("admin-key")) as client:
267+
if client._connection._weaviate_version.is_lower_than(1, 30, 0):
268+
pytest.skip("This test requires Weaviate 1.30.0 or higher")
269+
270+
randomUserName = "new-user" + str(random.randint(1, 1000))
271+
apiKey = client.users.db.create(user_id=randomUserName)
272+
try:
273+
# log in with the new user to generate a lastUsedAt timestamp
274+
with weaviate.connect_to_local(
275+
port=RBAC_PORTS[0],
276+
grpc_port=RBAC_PORTS[1],
277+
auth_credentials=Auth.api_key(apiKey),
278+
) as client2:
279+
assert client2.users.get_my_user().user_id == randomUserName
280+
281+
# without include_last_used_time, last_used_time should be None
282+
users = client.users.db.list_all()
283+
target = next((u for u in users if u.user_id == randomUserName), None)
284+
assert target is not None
285+
assert target.created_at is not None
286+
assert target.api_key_first_letters is not None
287+
assert target.last_used_time is None
288+
289+
# with include_last_used_time=True, last_used_time should be populated
290+
users = client.users.db.list_all(include_last_used_time=True)
291+
target = next((u for u in users if u.user_id == randomUserName), None)
292+
assert target is not None
293+
assert target.last_used_time is not None
294+
finally:
295+
client.users.db.delete(user_id=randomUserName)

0 commit comments

Comments
 (0)