Skip to content

Commit 57750d3

Browse files
committed
fix: werkzeug query parameter serialization
1 parent dcb359f commit 57750d3

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

doc/changelog.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
Changelog
22
=========
33

4+
[unreleased]
5+
------------
6+
7+
Fixed
8+
^^^^^
9+
- Werkzeug engine now correctly serializes list query parameters (``attributes``, ``excludedAttributes``).
10+
411
[0.7.4] - 2026-04-02
512
--------------------
613

scim2_client/engines/werkzeug.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ def query(
161161
**kwargs,
162162
)
163163

164-
query_string = urlencode(req.payload, doseq=False) if req.payload else None
164+
query_string = urlencode(req.payload, doseq=True) if req.payload else None
165165
environ = {**self.environ, **req.request_kwargs}
166166
response = self.client.get(
167167
self._make_url(req.url), query_string=query_string, **environ

tests/engines/test_werkzeug.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import pytest
22
from scim2_models import PatchOp
33
from scim2_models import PatchOperation
4+
from scim2_models import ResponseParameters
45
from scim2_models import SearchRequest
56
from scim2_models import User
67
from werkzeug.test import Client
@@ -77,6 +78,18 @@ def test_werkzeug_engine(scim_client):
7778
scim_client.query(User, response_user.id)
7879

7980

81+
def test_werkzeug_query_with_attributes(scim_client):
82+
"""List query parameters like attributes are correctly serialized in the query string."""
83+
User = scim_client.get_resource_model("User")
84+
request_user = User(user_name="foo", display_name="bar", title="Engineer")
85+
response_user = scim_client.create(request_user)
86+
87+
params = ResponseParameters(attributes=["displayName"])
88+
result = scim_client.query(User, response_user.id, query_parameters=params)
89+
assert result.display_name == "bar"
90+
assert result.title is None
91+
92+
8093
def test_no_json():
8194
"""Test that pages that do not return JSON raise an UnexpectedContentFormat error."""
8295

0 commit comments

Comments
 (0)