Complete name-first 1C adapter saved-state support

This commit is contained in:
2026-07-26 16:39:53 +03:00
parent b8c62fa8fa
commit aed134d817
44 changed files with 15436 additions and 697 deletions
+51
View File
@@ -76,3 +76,54 @@ def test_sql_admin_preserves_repository_user_from_settings() -> None:
assert item["repository"]["repository_password_env"] == "REPO_PASSWORD"
assert item["repository"]["infobase_user"] == "designer-user"
assert item["repository"]["infobase_password_env"] == "IB_PASSWORD"
def test_sql_admin_accepts_independent_base_and_extension_policies() -> None:
extension_guid = "11111111-2222-3333-4444-555555555555"
_, item = adapter.sql_admin_validate({
"base_id": "upo_test", "server": "sql", "database": "upo_test", "user": "reader",
"development_layers": {
"base": {"repository": {"mode": "manual"}, "support": {"mode": "rules", "rules": {"Документ.Заказ": "vendor_not_editable"}}},
f"extension:{extension_guid}": {"repository": {"mode": "none"}, "support": {"mode": "none"}},
},
})
assert item["development_layers"]["base"]["repository"]["mode"] == "manual"
assert item["development_layers"]["base"]["support"]["rules"]["Документ.Заказ"] == "vendor_not_editable"
assert item["development_layers"][f"extension:{extension_guid}"]["repository"]["mode"] == "none"
def test_sql_admin_rejects_extension_layer_without_guid() -> None:
with pytest.raises(ValueError, match="extension:<GUID>"):
adapter.sql_admin_validate({
"base_id": "upo_test", "server": "sql", "database": "upo_test", "user": "reader",
"development_layers": {"extension:test": {"repository": {"mode": "none"}, "support": {"mode": "none"}}},
})
def test_agent_can_persist_layer_repository_connection_state(tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None:
path = tmp_path / "bases.json"
guid = "11111111-2222-3333-4444-555555555555"
monkeypatch.delenv("ONEC_SQL_BASES_JSON", raising=False)
monkeypatch.setenv("ONEC_SQL_BASES_JSON_FILE", str(path))
adapter.sql_admin_save({
"neft": {
"server": "sql", "database": "neft", "user": "reader",
"development_layers": {
"base": {"repository": {"mode": "manual", "connection_state": "configured"}, "support": {"mode": "unknown"}},
f"extension:{guid}": {"repository": {"mode": "unknown", "connection_state": "unknown"}, "support": {"mode": "unknown"}},
},
},
})
missing_confirmation = adapter.call_method("repository.layer.connection.set", {"base_id": "neft", "extension_guid": guid, "connection_state": "not_configured"})
assert missing_confirmation["status"] == "invalid_argument"
result = adapter.call_method("repository.layer.connection.set", {
"base_id": "neft", "extension_guid": guid, "connection_state": "not_configured", "repository_user": "repo-extension-user",
"confirm_repository_connection_change": True,
})
assert result["status"] == "saved"
assert result["repository_status"] == "repository_not_connected"
stored = adapter.sql_admin_load()
repository = stored["neft"]["development_layers"][f"extension:{guid}"]["repository"]
assert repository["connection_state"] == "not_configured"
assert repository["mode"] == "none"
assert repository["repository_user"] == "repo-extension-user"