Implement client cost attribution
This commit is contained in:
parent
d2b9bc4b32
commit
33883e0977
15 changed files with 362 additions and 21 deletions
19
tests/test_attribution.py
Normal file
19
tests/test_attribution.py
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import pytest
|
||||
|
||||
from fin_hub.attribution import ClientAttribution, optional_attribution
|
||||
|
||||
|
||||
def test_client_attribution_key_is_stable():
|
||||
attribution = ClientAttribution(" acme ", "portal", "prod-01")
|
||||
assert attribution.key == "client:acme|app:portal|instance:prod-01"
|
||||
|
||||
|
||||
def test_empty_attribution_is_explicitly_unattributed():
|
||||
assert optional_attribution(None, None, None) is None
|
||||
assert optional_attribution("", "", "") is None
|
||||
|
||||
|
||||
@pytest.mark.parametrize("invalid", ["has space", "has/slash", "", "x" * 129])
|
||||
def test_client_attribution_rejects_unsafe_parts(invalid: str):
|
||||
with pytest.raises(ValueError):
|
||||
ClientAttribution(invalid, "portal", "prod-01")
|
||||
Loading…
Add table
Add a link
Reference in a new issue