Skip to content

Commit 68d9aef

Browse files
authored
test(maas): update auth enforcement tests for API key flow (#1197)
1 parent 0eaf06a commit 68d9aef

File tree

2 files changed

+28
-22
lines changed

2 files changed

+28
-22
lines changed

tests/model_serving/model_server/maas_billing/maas_subscription/test_maas_auth_enforcement.py

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
import requests
55
from simple_logger.logger import get_logger
66

7-
from tests.model_serving.model_server.maas_billing.maas_subscription.utils import chat_payload_for_url
7+
from tests.model_serving.model_server.maas_billing.maas_subscription.utils import (
8+
chat_payload_for_url,
9+
poll_expected_status,
10+
)
811
from tests.model_serving.model_server.maas_billing.utils import build_maas_headers
912
from utilities.plugins.constant import RestHeader
1013

@@ -24,44 +27,46 @@
2427
"maas_subscription_tinyllama_premium",
2528
)
2629
class TestMaaSAuthPolicyEnforcementTinyLlama:
27-
@pytest.mark.sanity
30+
@pytest.mark.smoke
2831
@pytest.mark.parametrize("ocp_token_for_actor", [{"type": "free"}], indirect=True)
2932
def test_authorized_user_gets_200(
3033
self,
3134
request_session_http: requests.Session,
3235
model_url_tinyllama_free: str,
33-
ocp_token_for_actor: str,
36+
maas_headers_for_actor_api_key: dict[str, str],
3437
) -> None:
35-
headers = build_maas_headers(token=ocp_token_for_actor)
3638
payload = chat_payload_for_url(model_url=model_url_tinyllama_free)
3739

38-
resp = request_session_http.post(
39-
url=model_url_tinyllama_free,
40-
headers=headers,
41-
json=payload,
42-
timeout=60,
40+
resp = poll_expected_status(
41+
request_session_http=request_session_http,
42+
model_url=model_url_tinyllama_free,
43+
headers=maas_headers_for_actor_api_key,
44+
payload=payload,
45+
expected_statuses={200},
4346
)
47+
4448
LOGGER.info(f"test_authorized_user_gets_200 -> POST {model_url_tinyllama_free} returned {resp.status_code}")
4549
assert resp.status_code == 200, f"Expected 200, got {resp.status_code}: {resp.text[:200]}"
4650

47-
@pytest.mark.sanity
51+
@pytest.mark.smoke
4852
def test_no_auth_header_gets_401(
4953
self,
5054
request_session_http: requests.Session,
5155
model_url_tinyllama_free: str,
5256
) -> None:
5357
payload = chat_payload_for_url(model_url=model_url_tinyllama_free)
5458

55-
resp = request_session_http.post(
56-
url=model_url_tinyllama_free,
59+
resp = poll_expected_status(
60+
request_session_http=request_session_http,
61+
model_url=model_url_tinyllama_free,
5762
headers=RestHeader.HEADERS,
58-
json=payload,
59-
timeout=60,
63+
payload=payload,
64+
expected_statuses={401},
6065
)
6166
LOGGER.info(f"test_no_auth_header_gets_401 -> POST {model_url_tinyllama_free} returned {resp.status_code}")
6267
assert resp.status_code == 401, f"Expected 401, got {resp.status_code}: {resp.text[:200]}"
6368

64-
@pytest.mark.sanity
69+
@pytest.mark.smoke
6570
def test_invalid_token_gets_401(
6671
self,
6772
request_session_http: requests.Session,
@@ -76,10 +81,11 @@ def test_invalid_token_gets_401(
7681
json=payload,
7782
timeout=60,
7883
)
84+
7985
LOGGER.info(f"test_invalid_token_gets_401 -> POST {model_url_tinyllama_free} returned {resp.status_code}")
80-
assert resp.status_code == 401, f"Expected 401, got {resp.status_code}: {resp.text[:200]}"
86+
assert resp.status_code in (401, 403), f"Expected 401 or 403, got {resp.status_code}: {(resp.text or '')[:200]}"
8187

82-
@pytest.mark.sanity
88+
@pytest.mark.smoke
8389
def test_wrong_group_sa_denied_on_premium_model(
8490
self,
8591
request_session_http: requests.Session,
@@ -88,11 +94,12 @@ def test_wrong_group_sa_denied_on_premium_model(
8894
) -> None:
8995
payload = chat_payload_for_url(model_url=model_url_tinyllama_premium)
9096

91-
resp = request_session_http.post(
92-
url=model_url_tinyllama_premium,
97+
resp = poll_expected_status(
98+
request_session_http=request_session_http,
99+
model_url=model_url_tinyllama_premium,
93100
headers=maas_headers_for_wrong_group_sa,
94-
json=payload,
95-
timeout=60,
101+
payload=payload,
102+
expected_statuses={403},
96103
)
97104
LOGGER.info(
98105
"test_wrong_group_sa_denied_on_premium_model -> "

tests/model_serving/model_server/maas_billing/maas_subscription/utils.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ def chat_payload_for_url(model_url: str, *, prompt: str = "Hello", max_tokens: i
8585

8686

8787
def poll_expected_status(
88-
*,
8988
request_session_http: requests.Session,
9089
model_url: str,
9190
headers: dict[str, str],

0 commit comments

Comments
 (0)