Require name-first extension preflight smoke
This commit is contained in:
@@ -61,3 +61,126 @@ def test_saved_module_target_prefers_bounded_stream(monkeypatch) -> None:
|
||||
)
|
||||
|
||||
assert result == bounded_stream
|
||||
|
||||
|
||||
def test_public_extension_form_candidate_is_name_first_and_prefers_title() -> None:
|
||||
result = smoke.first_public_extension_form_candidate(
|
||||
{
|
||||
"forms": [
|
||||
{
|
||||
"matches": [
|
||||
{
|
||||
"selector": {
|
||||
"extension": "test2",
|
||||
"ref": "Catalog.test2",
|
||||
"form": "t_Форма",
|
||||
"command": "ЗаменаДомена",
|
||||
},
|
||||
"writable_properties": [
|
||||
{
|
||||
"property": "name",
|
||||
"presentation": "Имя",
|
||||
"value": "ЗаменаДомена",
|
||||
"value_type": "string",
|
||||
},
|
||||
{
|
||||
"property": "title",
|
||||
"presentation": "Заголовок",
|
||||
"value": "Замена домена",
|
||||
"value_type": "string",
|
||||
},
|
||||
],
|
||||
}
|
||||
],
|
||||
}
|
||||
]
|
||||
}
|
||||
)
|
||||
|
||||
assert result == {
|
||||
"target": {
|
||||
"kind": "form",
|
||||
"extension": "test2",
|
||||
"ref": "Catalog.test2",
|
||||
"form": "t_Форма",
|
||||
"command": "ЗаменаДомена",
|
||||
},
|
||||
"edit": {
|
||||
"property": "Заголовок",
|
||||
"value": "Замена домена [NAME-FIRST PREFLIGHT]",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def test_name_first_extension_form_preflight_rejects_base_gate_layer(monkeypatch) -> None:
|
||||
def fake_rpc_call(
|
||||
_endpoint_url: str,
|
||||
method: str,
|
||||
payload: dict[str, Any],
|
||||
_timeout: float,
|
||||
*,
|
||||
transport: str,
|
||||
session_id: str | None,
|
||||
) -> dict[str, Any]:
|
||||
assert transport == "rest"
|
||||
assert session_id is None
|
||||
if method == "help.methods":
|
||||
return {"methods": [{"name": "metadata.write.preflight"}]}
|
||||
if method == "metadata.saved_state.modules.search":
|
||||
return {"status": "ok", "modules": []}
|
||||
if method == "metadata.saved_state.forms.search":
|
||||
return {
|
||||
"status": "ok",
|
||||
"counts": {"forms": 1},
|
||||
"forms": [
|
||||
{
|
||||
"matches": [
|
||||
{
|
||||
"selector": {
|
||||
"extension": "test2",
|
||||
"ref": "Catalog.test2",
|
||||
"form": "t_Форма",
|
||||
"command": "ЗаменаДомена",
|
||||
},
|
||||
"writable_properties": [
|
||||
{
|
||||
"property": "title",
|
||||
"presentation": "Заголовок",
|
||||
"value": "Замена домена",
|
||||
"value_type": "string",
|
||||
}
|
||||
],
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
}
|
||||
if method == "metadata.write.preflight" and (payload.get("target") or {}).get("extension"):
|
||||
return {
|
||||
"schema": "onec_metadata_write_preflight.v1",
|
||||
"status": "ready",
|
||||
"allowed": True,
|
||||
"plan": {"status": "planned", "allowed": True},
|
||||
"repository": {"layer_id": "base"},
|
||||
"support": {"layer_id": "base"},
|
||||
}
|
||||
return {
|
||||
"schema": "onec_metadata_write_preflight.v1",
|
||||
"status": "blocked",
|
||||
"allowed": False,
|
||||
"plan": {"allowed": False},
|
||||
}
|
||||
|
||||
monkeypatch.setattr(smoke, "rpc_call", fake_rpc_call)
|
||||
|
||||
report = smoke.run_smoke(
|
||||
"http://adapter",
|
||||
"upo_test",
|
||||
30,
|
||||
transport="rest",
|
||||
require_name_first_extension_form=True,
|
||||
)
|
||||
|
||||
assert report["status"] == "failed"
|
||||
assert report["checks"]["name_first_extension_form_preflight"]["name_first"] is True
|
||||
assert any("resolved extension GUID layer" in failure for failure in report["failures"])
|
||||
|
||||
Reference in New Issue
Block a user