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(); }