mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-06 08:16:43 +00:00
fix(spend): only reverse-hash export rows whose key alias join missed
Team and service keys often have no user_email after a successful token join. Treating empty email as a miss hashed every verification token on routine CloudZero and Focus exports. Co-authored-by: Mateo Wang <mateo-berri@users.noreply.github.com>
This commit is contained in:
parent
33815682bc
commit
048499cdf5
2 changed files with 20 additions and 3 deletions
|
|
@ -211,9 +211,7 @@ async def fill_missing_api_key_aliases(
|
|||
key
|
||||
for row in rows
|
||||
for key in (row.get(api_key_field),)
|
||||
if isinstance(key, str)
|
||||
and key
|
||||
and (row.get(alias_field) in (None, "") or row.get(user_email_field) in (None, ""))
|
||||
if isinstance(key, str) and key and row.get(alias_field) in (None, "")
|
||||
)
|
||||
if not missing_keys:
|
||||
return tuple(rows)
|
||||
|
|
|
|||
|
|
@ -199,3 +199,22 @@ async def test_fill_missing_api_key_aliases_keeps_spend_user_email_when_alias_is
|
|||
assert filled[0]["api_key_alias"] == "team-key"
|
||||
assert filled[0]["team_id"] == "team-9"
|
||||
assert filled[0]["user_email"] == "spender@example.com"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_fill_missing_api_key_aliases_skips_named_keys_that_have_no_email():
|
||||
mock_prisma = MagicMock()
|
||||
mock_prisma.db.query_raw = AsyncMock(return_value=[])
|
||||
rows = (
|
||||
{
|
||||
"api_key": hash_token("g" * 64),
|
||||
"api_key_alias": "service-key",
|
||||
"team_id": "team-svc",
|
||||
"user_email": None,
|
||||
},
|
||||
)
|
||||
|
||||
filled = await fill_missing_api_key_aliases(mock_prisma, rows)
|
||||
|
||||
assert filled == rows
|
||||
mock_prisma.db.query_raw.assert_not_called()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue