weni-cli 3.8.3__tar.gz → 3.8.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {weni_cli-3.8.3 → weni_cli-3.8.4}/PKG-INFO +1 -1
- {weni_cli-3.8.3 → weni_cli-3.8.4}/pyproject.toml +1 -1
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/validators/tests/test_ticketer_definition.py +44 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/validators/ticketer_definition.py +17 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/README.md +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/__init__.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/auth.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/cli.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/clients/__init__.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/clients/cli_client.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/clients/common.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/clients/response_handlers/__init__.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/clients/response_handlers/handlers.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/clients/tests/__init__.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/clients/tests/test_cli_client.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/clients/tests/test_weni_client.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/clients/weni_client.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/commands/channel_create.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/commands/eval_init.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/commands/eval_run.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/commands/init.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/commands/login.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/commands/logs.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/commands/project_current.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/commands/project_list.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/commands/project_push.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/commands/project_use.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/commands/run.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/commands/ticketer_create.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/formatter/__init__.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/formatter/formatter.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/formatter/tests/test_formatter.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/handler.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/packager/__init__.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/packager/loader.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/packager/packager.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/packager/tests/__init__.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/packager/tests/test_loader.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/packager/tests/test_packager.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/spinner/__init__.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/spinner/spinners.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/store.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/utils.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/validators/__init__.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/validators/agent_definition.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/validators/channel_definition.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/validators/source.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/validators/tests/__init__.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/validators/tests/conftest.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/validators/tests/test_active_test_definition.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/validators/tests/test_channel_definition.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/validators/tests/test_definition.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/validators/tests/test_source.py +0 -0
- {weni_cli-3.8.3 → weni_cli-3.8.4}/weni_cli/wsgi.py +0 -0
|
@@ -186,6 +186,50 @@ class TestValidateTicketerDefinitionSchema:
|
|
|
186
186
|
== "Ticketer at index 0: 'config.unknown_field' is not a recognized field in the ticketer definition file"
|
|
187
187
|
)
|
|
188
188
|
|
|
189
|
+
def test_valid_ticketer_definition_with_equivalent_templates(self, valid_ticketer_definition):
|
|
190
|
+
data = valid_ticketer_definition.copy()
|
|
191
|
+
data["ticketers"] = [dict(data["ticketers"][0])]
|
|
192
|
+
data["ticketers"][0]["config"] = dict(data["ticketers"][0]["config"])
|
|
193
|
+
data["ticketers"][0]["config"].update(
|
|
194
|
+
{
|
|
195
|
+
"open_template": '{"ticket_id":{{json .ticket_id}},"contact":{{json .contact}},'
|
|
196
|
+
'"body":{{json .body}},"topic":{{json .topic}},"assignee":{{json .assignee}},'
|
|
197
|
+
'"metadata":{{json .metadata}},"opened_at":{{json .opened_at}}}',
|
|
198
|
+
"open_response_template": '{"external_id":{{json .external_id}},'
|
|
199
|
+
'"status":{{json .status}},"created_at":{{json .created_at}}}',
|
|
200
|
+
"forward_template": '{"ticket_id":{{json .ticket_id}},"external_id":{{json .external_id}},'
|
|
201
|
+
'"message_id":{{json .message_id}},"direction":{{json .direction}},'
|
|
202
|
+
'"sender":{{json .sender}},"text":{{json .text}},"attachments":{{json .attachments}},'
|
|
203
|
+
'"metadata":{{json .metadata}},"sent_at":{{json .sent_at}}}',
|
|
204
|
+
"forward_response_template": '{"message_external_id":{{json .message_external_id}},'
|
|
205
|
+
'"status":{{json .status}}}',
|
|
206
|
+
"close_template": '{"ticket_id":{{json .ticket_id}},"external_id":{{json .external_id}},'
|
|
207
|
+
'"closed_by":{{json .closed_by}},"reason":{{json .reason}},'
|
|
208
|
+
'"metadata":{{json .metadata}},"closed_at":{{json .closed_at}}}',
|
|
209
|
+
"close_response_template": '{"status":{{json .status}}}',
|
|
210
|
+
"history_mode": "batch",
|
|
211
|
+
"history_batch_size": "50",
|
|
212
|
+
"route_history_message": "/v1/tickets/{external_id}/messages",
|
|
213
|
+
"history_template": '{"ticket_id":{{json .ticket_id}},"external_id":{{json .external_id}},'
|
|
214
|
+
'"contact":{{json .contact}},"messages":{{json .messages}},"metadata":{{json .metadata}}}',
|
|
215
|
+
"history_response_template": '{"status":{{json .status}},'
|
|
216
|
+
'"messages_received":{{json .messages_received}}}',
|
|
217
|
+
"messages_template": '{"external_id":{{json .external_id}},'
|
|
218
|
+
'"message_external_id":{{json .message_external_id}},"direction":{{json .direction}},'
|
|
219
|
+
'"sender":{{json .sender}},"text":{{json .text}},"attachments":{{json .attachments}},'
|
|
220
|
+
'"metadata":{{json .metadata}},"sent_at":{{json .sent_at}}}',
|
|
221
|
+
"messages_response_template": '{"status":{{json .status}},'
|
|
222
|
+
'"ticket_uuid":{{json .ticket_uuid}},"message_uuid":{{json .message_uuid}}}',
|
|
223
|
+
"tickets_close_template": '{"external_id":{{json .external_id}},'
|
|
224
|
+
'"closed_by":{{json .closed_by}},"reason":{{json .reason}},'
|
|
225
|
+
'"metadata":{{json .metadata}},"closed_at":{{json .closed_at}}}',
|
|
226
|
+
"tickets_close_response_template": '{"status":{{json .status}},'
|
|
227
|
+
'"ticket_uuid":{{json .ticket_uuid}}}',
|
|
228
|
+
}
|
|
229
|
+
)
|
|
230
|
+
error = validate_ticketer_definition_schema(data)
|
|
231
|
+
assert error is None
|
|
232
|
+
|
|
189
233
|
|
|
190
234
|
class TestLoadTicketerDefinition:
|
|
191
235
|
"""Tests for load_ticketer_definition function."""
|
|
@@ -18,7 +18,24 @@ OPTIONAL_CONFIG_FIELDS = [
|
|
|
18
18
|
"route_close",
|
|
19
19
|
"route_reopen",
|
|
20
20
|
"route_history",
|
|
21
|
+
"route_history_message",
|
|
21
22
|
"webhook_secret",
|
|
23
|
+
"history_mode",
|
|
24
|
+
"history_batch_size",
|
|
25
|
+
# Plataforma → Ticketer (request/response body templates)
|
|
26
|
+
"open_template",
|
|
27
|
+
"open_response_template",
|
|
28
|
+
"forward_template",
|
|
29
|
+
"forward_response_template",
|
|
30
|
+
"close_template",
|
|
31
|
+
"close_response_template",
|
|
32
|
+
"history_template",
|
|
33
|
+
"history_response_template",
|
|
34
|
+
# Ticketer → Plataforma (inbound webhook request/response templates)
|
|
35
|
+
"messages_template",
|
|
36
|
+
"messages_response_template",
|
|
37
|
+
"tickets_close_template",
|
|
38
|
+
"tickets_close_response_template",
|
|
22
39
|
]
|
|
23
40
|
|
|
24
41
|
URL_PATTERN = re.compile(r"^https?://")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|