@@ -63,6 +63,11 @@ def test_request(self) -> None:
6363 assert responses .calls [0 ].request .headers ['X-Learnosity-Consumer' ] == 'yis0TYCu7U9V4o7M'
6464 assert 'X-Learnosity-Action' in responses .calls [0 ].request .headers
6565 assert responses .calls [0 ].request .headers ['X-Learnosity-Action' ] == 'get_/itembank/items'
66+ assert 'X-Learnosity-SDK' in responses .calls [0 ].request .headers
67+ # Verify SDK header format is "Python:X.Y.Z" (without 'v' prefix)
68+ sdk_header = responses .calls [0 ].request .headers ['X-Learnosity-SDK' ]
69+ assert sdk_header .startswith ('Python:' )
70+ assert not sdk_header .startswith ('Python:v' )
6671
6772 @responses .activate
6873 def test_request_iter (self ) -> None :
@@ -203,6 +208,19 @@ def test_derive_action_with_developer(self) -> None:
203208 action = client ._derive_action ('https://data.learnosity.com/developer/sessions/responses' , 'get' )
204209 assert action == 'get_/sessions/responses'
205210
211+ def test_derive_action_with_preview_version (self ) -> None :
212+ """Verify that preview version format like v2025.3.preview1 is correctly stripped"""
213+ client = DataApi ()
214+ action = client ._derive_action ('https://data.learnosity.com/v2025.3.preview1/itembank/items' , 'get' )
215+ assert action == 'get_/itembank/items'
216+
217+ def test_derive_action_with_preview_version_multi_digit (self ) -> None :
218+ """Verify that preview version with multi-digit preview number is correctly stripped"""
219+ client = DataApi ()
220+ action = client ._derive_action ('https://data.learnosity.com/v2025.1.preview123/itembank/questions' , 'get' )
221+ assert action == 'get_/itembank/questions'
222+
223+
206224 @responses .activate
207225 def test_metadata_headers_in_paginated_requests (self ) -> None :
208226 """Verify that metadata headers are sent in all paginated requests"""
@@ -220,3 +238,8 @@ def test_metadata_headers_in_paginated_requests(self) -> None:
220238 assert call .request .headers ['X-Learnosity-Consumer' ] == 'yis0TYCu7U9V4o7M'
221239 assert 'X-Learnosity-Action' in call .request .headers
222240 assert call .request .headers ['X-Learnosity-Action' ] == 'get_/itembank/items'
241+ assert 'X-Learnosity-SDK' in call .request .headers
242+ # Verify SDK header format is "Python:X.Y.Z" (without 'v' prefix)
243+ sdk_header = call .request .headers ['X-Learnosity-SDK' ]
244+ assert sdk_header .startswith ('Python:' )
245+ assert not sdk_header .startswith ('Python:v' )
0 commit comments