|
6 | 6 | from sap_cloud_sdk.core.telemetry.constants import ATTR_SAP_TRIGGER_TYPE, ATTR_SAP_TENANT_ID, ATTR_USER_ID |
7 | 7 | from sap_cloud_sdk.core.telemetry.middleware.starlette_a2a import ( |
8 | 8 | StarletteIASTelemetryMiddleware, |
9 | | - _extract_ias_attrs, |
| 9 | + _parse_request, |
10 | 10 | ) |
11 | 11 |
|
12 | 12 | _PATCH_PARSE = "sap_cloud_sdk.core.telemetry.middleware.starlette_a2a.parse_token" |
@@ -55,64 +55,73 @@ def test_two_instances_do_not_interfere(self): |
55 | 55 | mw2._attrs_var.reset(t2) |
56 | 56 |
|
57 | 57 |
|
58 | | -class TestExtractIasAttrs: |
| 58 | +class TestParseRequest: |
59 | 59 | def test_extracts_tenant_and_user(self): |
60 | 60 | claims = _make_claims(sap_gtid="t1", user_uuid="u1") |
61 | 61 | request = _make_request({"authorization": "Bearer tok"}) |
62 | 62 | with patch(_PATCH_PARSE, return_value=claims): |
63 | | - result = _extract_ias_attrs(request) |
| 63 | + _, result = _parse_request(request) |
64 | 64 | assert result == {ATTR_SAP_TENANT_ID: "t1", ATTR_USER_ID: "u1"} |
65 | 65 |
|
66 | 66 | def test_omits_missing_tenant(self): |
67 | 67 | claims = _make_claims(sap_gtid=None, user_uuid="u1") |
68 | 68 | request = _make_request({"authorization": "Bearer tok"}) |
69 | 69 | with patch(_PATCH_PARSE, return_value=claims): |
70 | | - result = _extract_ias_attrs(request) |
| 70 | + _, result = _parse_request(request) |
71 | 71 | assert result == {ATTR_USER_ID: "u1"} |
72 | 72 | assert ATTR_SAP_TENANT_ID not in result |
73 | 73 |
|
74 | 74 | def test_omits_missing_user(self): |
75 | 75 | claims = _make_claims(sap_gtid="t1", user_uuid=None) |
76 | 76 | request = _make_request({"authorization": "Bearer tok"}) |
77 | 77 | with patch(_PATCH_PARSE, return_value=claims): |
78 | | - result = _extract_ias_attrs(request) |
| 78 | + _, result = _parse_request(request) |
79 | 79 | assert result == {ATTR_SAP_TENANT_ID: "t1"} |
80 | 80 | assert ATTR_USER_ID not in result |
81 | 81 |
|
82 | 82 | def test_returns_empty_when_no_auth_header(self): |
83 | 83 | request = _make_request({}) |
84 | 84 | with patch(_PATCH_PARSE) as mock_parse: |
85 | | - result = _extract_ias_attrs(request) |
| 85 | + parsed_claims, result = _parse_request(request) |
86 | 86 | mock_parse.assert_not_called() |
87 | 87 | assert result == {} |
| 88 | + assert parsed_claims is None |
88 | 89 |
|
89 | 90 | def test_returns_empty_on_parse_error(self): |
90 | 91 | request = _make_request({"authorization": "Bearer bad"}) |
91 | 92 | with patch(_PATCH_PARSE, side_effect=ValueError("bad token")): |
92 | | - result = _extract_ias_attrs(request) |
| 93 | + parsed_claims, result = _parse_request(request) |
93 | 94 | assert result == {} |
| 95 | + assert parsed_claims is None |
94 | 96 |
|
95 | 97 | def test_returns_empty_when_both_claims_absent(self): |
96 | 98 | claims = _make_claims(sap_gtid=None, user_uuid=None) |
97 | 99 | request = _make_request({"authorization": "Bearer tok"}) |
98 | 100 | with patch(_PATCH_PARSE, return_value=claims): |
99 | | - result = _extract_ias_attrs(request) |
| 101 | + _, result = _parse_request(request) |
100 | 102 | assert result == {} |
101 | 103 |
|
102 | 104 | def test_includes_origin_header_when_present(self): |
103 | 105 | claims = _make_claims(sap_gtid="t1", user_uuid="u1") |
104 | 106 | request = _make_request({"authorization": "Bearer tok", "x-sap-origin": "ui5"}) |
105 | 107 | with patch(_PATCH_PARSE, return_value=claims): |
106 | | - result = _extract_ias_attrs(request) |
| 108 | + _, result = _parse_request(request) |
107 | 109 | assert result[ATTR_SAP_TRIGGER_TYPE] == "ui5" |
108 | 110 |
|
109 | 111 | def test_omits_origin_attr_when_header_absent(self): |
110 | 112 | claims = _make_claims(sap_gtid="t1", user_uuid="u1") |
111 | 113 | request = _make_request({"authorization": "Bearer tok"}) |
112 | 114 | with patch(_PATCH_PARSE, return_value=claims): |
113 | | - result = _extract_ias_attrs(request) |
| 115 | + _, result = _parse_request(request) |
114 | 116 | assert ATTR_SAP_TRIGGER_TYPE not in result |
115 | 117 |
|
| 118 | + def test_returns_claims_object(self): |
| 119 | + claims = _make_claims(sap_gtid="t1", user_uuid="u1") |
| 120 | + request = _make_request({"authorization": "Bearer tok"}) |
| 121 | + with patch(_PATCH_PARSE, return_value=claims): |
| 122 | + parsed_claims, _ = _parse_request(request) |
| 123 | + assert parsed_claims is claims |
| 124 | + |
116 | 125 |
|
117 | 126 | class TestInnerMiddlewareDispatch: |
118 | 127 | def _get_inner_class_and_kwargs(self, mw: StarletteIASTelemetryMiddleware): |
|
0 commit comments