use data_gov_ckan::{ApiKey, CkanClient, CkanError, Configuration};
use std::sync::Arc;
#[test]
fn test_client_creation() {
let config = Arc::new(Configuration {
base_path: "https://catalog.data.gov/api/3".to_string(),
user_agent: Some("test-client/1.0".to_string()),
client: reqwest::Client::new(),
basic_auth: None,
oauth_access_token: None,
bearer_access_token: None,
api_key: None,
});
let client = CkanClient::new(config);
let debug_str = format!("{:?}", client);
assert!(debug_str.contains("CkanClient"));
assert!(debug_str.contains("catalog.data.gov"));
}
#[test]
fn test_authenticated_client_creation() {
let config = Arc::new(Configuration {
base_path: "https://catalog.data.gov/api/3".to_string(),
user_agent: Some("test-client/1.0".to_string()),
client: reqwest::Client::new(),
basic_auth: None,
oauth_access_token: None,
bearer_access_token: None,
api_key: Some(ApiKey {
prefix: None,
key: "test-api-key".to_string(),
}),
});
let client = CkanClient::new(config);
let debug_str = format!("{:?}", client);
assert!(debug_str.contains("CkanClient"));
}
#[test]
fn test_error_types() {
let req_error = CkanError::RequestError(Box::new(std::io::Error::other("test error")));
let _display = format!("{}", req_error);
let _debug = format!("{:?}", req_error);
let parse_error = CkanError::ParseError(
serde_json::from_str::<serde_json::Value>("invalid json").unwrap_err(),
);
let _display = format!("{}", parse_error);
let _debug = format!("{:?}", parse_error);
let api_error = CkanError::ApiError {
status: 404,
message: "Not Found".to_string(),
};
let _display = format!("{}", api_error);
let _debug = format!("{:?}", api_error);
fn check_error_trait<T: std::error::Error>(_: T) {}
check_error_trait(req_error);
}
#[test]
fn test_error_messages() {
let api_error = CkanError::ApiError {
status: 404,
message: "Dataset not found".to_string(),
};
let message = format!("{}", api_error);
assert!(message.contains("404"));
assert!(message.contains("Dataset not found"));
}