Add per-client billing basis export
This commit is contained in:
parent
b75ad06b3a
commit
fcec177ded
10 changed files with 506 additions and 11 deletions
|
|
@ -1,11 +1,16 @@
|
|||
import pytest
|
||||
|
||||
from fin_hub.attribution import ClientAttribution, optional_attribution
|
||||
from fin_hub.attribution import (
|
||||
ClientAttribution,
|
||||
optional_attribution,
|
||||
parse_client_attribution_key,
|
||||
)
|
||||
|
||||
|
||||
def test_client_attribution_key_is_stable():
|
||||
attribution = ClientAttribution(" acme ", "portal", "prod-01")
|
||||
assert attribution.key == "client:acme|app:portal|instance:prod-01"
|
||||
assert parse_client_attribution_key(attribution.key) == attribution
|
||||
|
||||
|
||||
def test_empty_attribution_is_explicitly_unattributed():
|
||||
|
|
@ -17,3 +22,8 @@ def test_empty_attribution_is_explicitly_unattributed():
|
|||
def test_client_attribution_rejects_unsafe_parts(invalid: str):
|
||||
with pytest.raises(ValueError):
|
||||
ClientAttribution(invalid, "portal", "prod-01")
|
||||
|
||||
|
||||
def test_client_attribution_parser_rejects_other_namespaces():
|
||||
with pytest.raises(ValueError, match="invalid"):
|
||||
parse_client_attribution_key("platform:shared-cluster")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue