Complete name-first 1C adapter saved-state support
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user