85 lines
2.8 KiB
Rust
85 lines
2.8 KiB
Rust
mod helpers;
|
|
|
|
/// Delete the raw.json file from a cached alias to prove index-only reads.
|
|
fn delete_raw_json(env: &helpers::TestEnv, alias: &str) {
|
|
let raw_path = env.home_dir.join("cache").join(alias).join("raw.json");
|
|
assert!(
|
|
raw_path.exists(),
|
|
"raw.json must exist before deletion: {}",
|
|
raw_path.display()
|
|
);
|
|
std::fs::remove_file(&raw_path).expect("failed to delete raw.json");
|
|
assert!(!raw_path.exists(), "raw.json should be gone after deletion");
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Index-only reads: these commands must work WITHOUT raw.json
|
|
// ---------------------------------------------------------------------------
|
|
|
|
#[test]
|
|
fn test_list_does_not_read_raw_json() {
|
|
let env = helpers::TestEnv::new();
|
|
helpers::fetch_fixture(&env, "petstore.json", "petstore");
|
|
delete_raw_json(&env, "petstore");
|
|
|
|
let a = helpers::run_cmd(&env, &["list", "petstore", "--robot"]).success();
|
|
let json = helpers::parse_robot_json(&a.get_output().stdout);
|
|
|
|
assert_eq!(json["ok"], true);
|
|
assert!(json["data"]["total"].as_u64().unwrap() > 0);
|
|
}
|
|
|
|
#[test]
|
|
fn test_search_does_not_read_raw_json() {
|
|
let env = helpers::TestEnv::new();
|
|
helpers::fetch_fixture(&env, "petstore.json", "petstore");
|
|
delete_raw_json(&env, "petstore");
|
|
|
|
let a = helpers::run_cmd(&env, &["search", "petstore", "pet", "--robot"]).success();
|
|
let json = helpers::parse_robot_json(&a.get_output().stdout);
|
|
|
|
assert_eq!(json["ok"], true);
|
|
}
|
|
|
|
#[test]
|
|
fn test_tags_does_not_read_raw_json() {
|
|
let env = helpers::TestEnv::new();
|
|
helpers::fetch_fixture(&env, "petstore.json", "petstore");
|
|
delete_raw_json(&env, "petstore");
|
|
|
|
let a = helpers::run_cmd(&env, &["tags", "petstore", "--robot"]).success();
|
|
let json = helpers::parse_robot_json(&a.get_output().stdout);
|
|
|
|
assert_eq!(json["ok"], true);
|
|
}
|
|
|
|
#[test]
|
|
fn test_schemas_list_does_not_read_raw_json() {
|
|
let env = helpers::TestEnv::new();
|
|
helpers::fetch_fixture(&env, "petstore.json", "petstore");
|
|
delete_raw_json(&env, "petstore");
|
|
|
|
let a = helpers::run_cmd(&env, &["schemas", "petstore", "--robot"]).success();
|
|
let json = helpers::parse_robot_json(&a.get_output().stdout);
|
|
|
|
assert_eq!(json["ok"], true);
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Negative case: show REQUIRES raw.json
|
|
// ---------------------------------------------------------------------------
|
|
|
|
#[test]
|
|
fn test_show_requires_raw_json() {
|
|
let env = helpers::TestEnv::new();
|
|
helpers::fetch_fixture(&env, "petstore.json", "petstore");
|
|
delete_raw_json(&env, "petstore");
|
|
|
|
// show needs raw.json to resolve the operation pointer
|
|
helpers::run_cmd(
|
|
&env,
|
|
&["show", "petstore", "/pets", "--method", "GET", "--robot"],
|
|
)
|
|
.failure();
|
|
}
|