(UI) fix + test displaying number of keys an internal user owns (#6507)

* fix view internal user key count

* add test for /user/list

* fix test user list

* testing ui change

* ui new build
This commit is contained in:
Ishaan Jaff 2024-10-30 20:44:15 +05:30 committed by GitHub
parent b419170cbd
commit 03c56804a0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
31 changed files with 94 additions and 40 deletions

View file

@ -26,7 +26,18 @@ test('view internal user page', async ({ page }) => {
// try to click on button
// <button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-l focus:outline-none" disabled="">← Prev</button>
// wait 1-2 seconds
await page.waitForTimeout(10000);
// Test all expected fields are present
// number of keys owned by user
const keysBadges = page.locator('p.tremor-Badge-text.text-sm.whitespace-nowrap', { hasText: 'Keys' });
const keysCountArray = await keysBadges.evaluateAll(elements => elements.map(el => parseInt(el.textContent.split(' ')[0], 10)));
const hasNonZeroKeys = keysCountArray.some(count => count > 0);
expect(hasNonZeroKeys).toBe(true);
// test pagination
const prevButton = page.locator('button.bg-blue-500.hover\\:bg-blue-700.text-white.font-bold.py-2.px-4.rounded-l.focus\\:outline-none', { hasText: 'Prev' });
await expect(prevButton).toBeDisabled();

View file

@ -365,12 +365,59 @@ async def test_get_users(prisma_client):
assert "users" in result
for user in result["users"]:
user = user.model_dump()
assert "user_id" in user
assert "spend" in user
assert "user_email" in user
assert "user_role" in user
assert "key_count" in user
# Clean up test users
for user in test_users:
await prisma_client.db.litellm_usertable.delete(where={"user_id": user.user_id})
@pytest.mark.asyncio
async def test_get_users_key_count(prisma_client):
"""
Test that verifies the key_count in get_users increases when a new key is created for a user
"""
litellm.set_verbose = True
setattr(litellm.proxy.proxy_server, "prisma_client", prisma_client)
setattr(litellm.proxy.proxy_server, "master_key", "sk-1234")
await litellm.proxy.proxy_server.prisma_client.connect()
# Get initial user list and select the first user
initial_users = await get_users(role=None, page=1, page_size=20)
print("initial_users", initial_users)
assert len(initial_users["users"]) > 0, "No users found to test with"
test_user = initial_users["users"][0]
initial_key_count = test_user["key_count"]
# Create a new key for the selected user
new_key = await generate_key_fn(
data=GenerateKeyRequest(
user_id=test_user["user_id"],
key_alias=f"test_key_{uuid.uuid4()}",
models=["fake-model"],
),
user_api_key_dict=UserAPIKeyAuth(
user_role=LitellmUserRoles.PROXY_ADMIN,
api_key="sk-1234",
user_id="admin",
),
)
# Get updated user list and check key count
updated_users = await get_users(role=None, page=1, page_size=20)
print("updated_users", updated_users)
updated_key_count = None
for user in updated_users["users"]:
if user["user_id"] == test_user["user_id"]:
updated_key_count = user["key_count"]
break
assert updated_key_count is not None, "Test user not found in updated users list"
assert (
updated_key_count == initial_key_count + 1
), f"Expected key count to increase by 1, but got {updated_key_count} (was {initial_key_count})"