remora/crates/remora-contracts/tests/generated_wire.rs

77 lines
2.3 KiB
Rust
Raw Normal View History

2026-07-19 02:00:47 +09:00
use remora_contracts::generated_wire::{EventFrame, JobFailure, JobSubmission};
use serde::de::DeserializeOwned;
use serde_json::{Value, json};
#[test]
fn generated_roots_accept_the_shared_valid_corpus() {
let corpus: Value =
serde_json::from_str(include_str!("../../../contracts/golden/domain.json")).unwrap();
assert_all::<JobSubmission>(&corpus["job_submissions"]);
assert_all::<JobFailure>(&corpus["job_failures"]);
assert_all::<EventFrame>(&corpus["event_frames"]);
}
#[test]
fn generated_roots_reject_governance_regressions() {
assert_invalid::<JobSubmission>(json!({
"source": {
"kind": "http",
"url": "not a URL",
"result_path": "file.bin"
}
}));
assert_invalid::<JobSubmission>(json!({
"source": {
"kind": "hugging_face",
"repository_type": "model",
"repository_id": "missing-owner",
"revision": "main"
}
}));
assert_invalid::<JobFailure>(json!({
"class": "source_not_found",
"message": "missing",
"retryable": true
}));
assert_invalid::<EventFrame>(json!({
"schema_version": 2,
"kind": "heartbeat",
"event_id": "event_0001",
"sequence": 1,
"cursor": "cursor-value-0001",
"occurred_at": "2026-07-15T00:00:00Z"
}));
assert_invalid::<EventFrame>(json!({
"schema_version": 1,
"kind": "heartbeat",
"event_id": "event_0001",
"sequence": 1,
"cursor": "cursor-value-0001",
"occurred_at": "2026-07-15T00:00:00Z",
"unexpected": true
}));
let paths: Vec<Value> = (0..=10_000)
.map(|index| Value::String(format!("file-{index}")))
.collect();
assert_invalid::<JobSubmission>(json!({
"source": {
"kind": "hugging_face",
"repository_type": "model",
"repository_id": "owner/repository",
"revision": "main",
"selection": {
"paths": paths
}
}
}));
2026-07-19 02:00:47 +09:00
}
fn assert_all<T: DeserializeOwned>(values: &Value) {
for value in values.as_array().unwrap() {
serde_json::from_value::<T>(value.clone()).unwrap();
}
}
fn assert_invalid<T: DeserializeOwned>(value: Value) {
assert!(serde_json::from_value::<T>(value).is_err());
}