mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-06-09 01:35:18 +02:00
test(server): server must reject remote graph entries (red)
omnigraph-server serves embedded graphs only (RFC-002 §3); a graph with
`server:` or a remote `http(s)://` `uri:` must be refused at config load. These
four boot tests (multi `server:`, multi remote `uri:`, single positional URI,
single named remote via server.graph) are RED today: load_server_settings
returns Ok for a remote entry — it builds a `Single`/`Multi { uri: "https://…" }`
and only fails later at `Omnigraph::open`. The next commit gates this.
This commit is contained in:
parent
e2924e7f90
commit
4950f74fad
1 changed files with 74 additions and 0 deletions
|
|
@ -5890,6 +5890,80 @@ graphs:
|
|||
assert!(err.to_string().contains("no graph to serve"));
|
||||
}
|
||||
|
||||
// omnigraph-server serves embedded graphs only (RFC-002 §3) — a remote
|
||||
// entry (`server:` set, or a remote `http(s)://` `uri:`) must be refused at
|
||||
// config load, not opened. RED today: `load_server_settings` accepts these
|
||||
// and only fails later at `Omnigraph::open`.
|
||||
|
||||
#[test]
|
||||
fn multi_mode_rejects_server_entry() {
|
||||
let temp = tempfile::tempdir().unwrap();
|
||||
let config_path = temp.path().join("omnigraph.yaml");
|
||||
fs::write(
|
||||
&config_path,
|
||||
"servers:\n prod:\n endpoint: https://og.internal:8080\n\
|
||||
graphs:\n g:\n server: prod\n alpha:\n uri: /tmp/alpha.omni\n",
|
||||
)
|
||||
.unwrap();
|
||||
let err = load_server_settings(Some(&config_path), None, None, None, true).unwrap_err();
|
||||
let msg = err.to_string();
|
||||
assert!(
|
||||
msg.contains("'g'") && msg.contains("embedded"),
|
||||
"remote `server:` entry must be rejected, naming the graph: {msg}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn multi_mode_rejects_remote_uri_entry() {
|
||||
let temp = tempfile::tempdir().unwrap();
|
||||
let config_path = temp.path().join("omnigraph.yaml");
|
||||
fs::write(
|
||||
&config_path,
|
||||
"graphs:\n g:\n uri: https://host:8080\n alpha:\n uri: /tmp/alpha.omni\n",
|
||||
)
|
||||
.unwrap();
|
||||
let err = load_server_settings(Some(&config_path), None, None, None, true).unwrap_err();
|
||||
let msg = err.to_string();
|
||||
assert!(
|
||||
msg.contains("'g'") && msg.contains("embedded"),
|
||||
"remote `uri:` entry must be rejected, naming the graph: {msg}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn single_mode_rejects_positional_remote_uri() {
|
||||
let err = load_server_settings(
|
||||
None,
|
||||
Some("https://host:8080".to_string()),
|
||||
None,
|
||||
None,
|
||||
true,
|
||||
)
|
||||
.unwrap_err();
|
||||
assert!(
|
||||
err.to_string().contains("embedded"),
|
||||
"a remote positional URI must be rejected: {err}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn single_mode_rejects_named_remote_graph() {
|
||||
let temp = tempfile::tempdir().unwrap();
|
||||
let config_path = temp.path().join("omnigraph.yaml");
|
||||
fs::write(
|
||||
&config_path,
|
||||
"servers:\n prod:\n endpoint: https://og.internal:8080\n\
|
||||
graphs:\n g:\n server: prod\nserver:\n graph: g\n",
|
||||
)
|
||||
.unwrap();
|
||||
let err = load_server_settings(Some(&config_path), None, None, None, true).unwrap_err();
|
||||
let msg = err.to_string();
|
||||
assert!(
|
||||
msg.contains("'g'") && msg.contains("embedded"),
|
||||
"a named remote graph (server.graph) must be rejected: {msg}"
|
||||
);
|
||||
}
|
||||
|
||||
/// `--config` + `<URI>` together: URI wins → Single (the CLI URI
|
||||
/// takes precedence over the config's graphs map).
|
||||
#[test]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue