* fix: /version endpoint return wrong version * chore: update OpenAPI spec with correct version example
125 lines
4.1 KiB
Rust
125 lines
4.1 KiB
Rust
use std::process::Command;
|
|
|
|
#[test]
|
|
fn test_cli_help() {
|
|
let output = Command::new("cargo")
|
|
.args(["run", "--", "--help"])
|
|
.output()
|
|
.expect("Failed to execute command");
|
|
|
|
assert!(output.status.success());
|
|
let stdout = String::from_utf8_lossy(&output.stdout);
|
|
assert!(stdout.contains("Hindsight CLI"));
|
|
}
|
|
|
|
#[test]
|
|
fn test_cli_version() {
|
|
let output = Command::new("cargo")
|
|
.args(["run", "--", "--version"])
|
|
.output()
|
|
.expect("Failed to execute command");
|
|
|
|
assert!(output.status.success());
|
|
let stdout = String::from_utf8_lossy(&output.stdout);
|
|
assert!(stdout.contains("hindsight"));
|
|
}
|
|
|
|
#[test]
|
|
fn test_ui_command_without_config() {
|
|
// Test that the ui command handles missing config gracefully
|
|
// Create a temp home directory with no config
|
|
let temp_dir = std::env::temp_dir().join(format!("hindsight-test-ui-{}", std::process::id()));
|
|
std::fs::create_dir_all(&temp_dir).expect("Failed to create temp dir");
|
|
|
|
let output = Command::new("cargo")
|
|
.args(["run", "--", "ui"])
|
|
.env_remove("HINDSIGHT_API_URL")
|
|
.env_remove("HINDSIGHT_API_KEY")
|
|
.env("HOME", &temp_dir)
|
|
.output()
|
|
.expect("Failed to execute command");
|
|
|
|
let stdout = String::from_utf8_lossy(&output.stdout);
|
|
let stderr = String::from_utf8_lossy(&output.stderr);
|
|
|
|
// Either it fails with a config error or it succeeds if there's a default config
|
|
// Just verify it doesn't crash unexpectedly
|
|
assert!(
|
|
!output.status.success()
|
|
|| stdout.contains("Launching Hindsight Control Plane UI")
|
|
|| stderr.contains("Configuration error")
|
|
|| stderr.contains("HINDSIGHT_API_URL"),
|
|
"Unexpected output - stdout: {}, stderr: {}",
|
|
stdout,
|
|
stderr
|
|
);
|
|
|
|
// Cleanup
|
|
std::fs::remove_dir_all(&temp_dir).ok();
|
|
}
|
|
|
|
#[test]
|
|
fn test_ui_command_with_config() {
|
|
// This test is skipped by default since it requires a running control plane
|
|
// and would block for a long time. The other tests cover the basic functionality.
|
|
// To run this test manually:
|
|
// 1. Build the control plane: cd hindsight-control-plane && npm run build
|
|
// 2. Run: cargo test test_ui_command_with_config -- --ignored
|
|
|
|
// Just verify that the ui command accepts the configuration
|
|
let temp_dir = std::env::temp_dir().join(format!("hindsight-test-ui-valid-{}", std::process::id()));
|
|
std::fs::create_dir_all(&temp_dir).expect("Failed to create temp dir");
|
|
|
|
// Write a minimal config
|
|
let config_dir = temp_dir.join(".config").join("hindsight");
|
|
std::fs::create_dir_all(&config_dir).expect("Failed to create config dir");
|
|
let config_file = config_dir.join("config");
|
|
std::fs::write(&config_file, "api_url=http://localhost:8888\napi_key=test-key\n")
|
|
.expect("Failed to write config");
|
|
|
|
let output = Command::new("cargo")
|
|
.args(["run", "--", "ui", "--help"])
|
|
.env("HOME", &temp_dir)
|
|
.output()
|
|
.expect("Failed to execute command");
|
|
|
|
// The --help should work regardless
|
|
let stdout = String::from_utf8_lossy(&output.stdout);
|
|
assert!(stdout.contains("Hindsight CLI") || output.status.success());
|
|
|
|
// Cleanup
|
|
std::fs::remove_dir_all(&temp_dir).ok();
|
|
}
|
|
|
|
#[test]
|
|
fn test_configure_command() {
|
|
// Test that configure command creates/updates config
|
|
let temp_dir = std::env::temp_dir().join(format!("hindsight-test-{}", std::process::id()));
|
|
std::fs::create_dir_all(&temp_dir).expect("Failed to create temp dir");
|
|
|
|
let output = Command::new("cargo")
|
|
.args([
|
|
"run",
|
|
"--",
|
|
"configure",
|
|
"--api-url",
|
|
"http://localhost:9999",
|
|
"--api-key",
|
|
"test-key-123"
|
|
])
|
|
.env("HOME", &temp_dir)
|
|
.output()
|
|
.expect("Failed to execute command");
|
|
|
|
assert!(
|
|
output.status.success(),
|
|
"Configure command failed: {}",
|
|
String::from_utf8_lossy(&output.stderr)
|
|
);
|
|
|
|
let stdout = String::from_utf8_lossy(&output.stdout);
|
|
assert!(stdout.contains("Configuration saved") || stdout.contains("success"));
|
|
|
|
// Cleanup
|
|
std::fs::remove_dir_all(&temp_dir).ok();
|
|
}
|