Skip to content

Commit b303bee

Browse files
committed
refactor: Формат записи параметров атрибутов
1 parent 3a6c709 commit b303bee

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

src/mellophone/client.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import json
34
import warnings
45
import xml.etree.ElementTree as ET
56
from http import HTTPStatus
@@ -227,9 +228,15 @@ def _require_user(user: Dict[str, Any]) -> Dict[str, Any]:
227228
"""Проверяет и нормализует payload пользователя для API-вызовов."""
228229
if not user:
229230
raise ValueError("user data cannot be empty")
230-
payload = dict(user)
231-
if "password" in payload:
232-
payload["pwd"] = payload.pop("password")
231+
payload: Dict[str, Any] = {}
232+
for key, val in list(user.items())[:]:
233+
if key == "password":
234+
key = "pwd"
235+
elif isinstance(val, (list, dict)):
236+
val = json.dumps(val, ensure_ascii=False)
237+
elif val is None:
238+
val = ""
239+
payload[key] = val
233240
return payload
234241

235242
@staticmethod

tests/integration/test_client_flows.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import json
34
from typing import Dict
45
from uuid import uuid4
56

@@ -119,9 +120,11 @@ def test_it_user_additional_fields(mode: str, integration_client: Mellophone) ->
119120
"field_float": 4.5,
120121
"field_bool": False,
121122
"field_none": None,
122-
"field_empty_str": "",
123-
"field_empty_list": [],
123+
"field_str_empty": "",
124+
"field_list_empty": [],
124125
"field_list": ["org1"],
126+
"field_dict": {"org1": {"name": "google", "age": 15}},
127+
"field_dict_empty": {},
125128
}
126129
update_payload = {
127130
"sid": sid,
@@ -141,18 +144,23 @@ def test_it_user_additional_fields(mode: str, integration_client: Mellophone) ->
141144
users_after_create = users_from_list(invoke(integration_client, mode, "get_user_list", gp="not_defined"))
142145
created_user = next((user for user in users_after_create if user.get("sid") == sid), None)
143146
assert created_user is not None
144-
for key in filter(lambda x: x not in ('password', 'pwd'), create_payload):
147+
for key in ("field_str", "field_int", "field_float", "field_bool", "field_str_empty"):
145148
assert created_user.get(key) == str(create_payload[key])
146149

150+
for key in ("field_list", "field_list_empty", "field_dict", "field_dict_empty"):
151+
assert created_user.get(key) == json.dumps(create_payload[key], ensure_ascii=False)
152+
assert json.loads(created_user.get(key)) == create_payload[key]
153+
154+
assert created_user.get("field_none") == ""
155+
147156
invoke(integration_client, mode, "update_user", sid, update_payload)
148157
assert_credentials_invalid(integration_client, mode, login, pwd_1)
149158
assert_credentials_valid(integration_client, mode, login, pwd_2, sid)
150159

151160
users_after_update = users_from_list(invoke(integration_client, mode, "get_user_list", gp="not_defined"))
152161
updated_user = next((user for user in users_after_update if user.get("sid") == sid), None)
153162
assert updated_user is not None
154-
for key in filter(lambda x: x not in ('password', 'pwd'), update_payload):
155-
assert updated_user.get(key) == str(update_payload[key])
163+
for key in ("field_str", "field_int", "field_float", "field_bool"):
164+
assert updated_user.get(key) == str(update_payload[key]), key
156165
finally:
157-
...
158-
# invoke(integration_client, mode, "delete_user", sid)
166+
invoke(integration_client, mode, "delete_user", sid)

0 commit comments

Comments
 (0)