api-macro: tests for optional non-Option parameters
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
parent
83b6d082db
commit
8beec0d6e6
68
proxmox-api-macro/tests/options.rs
Normal file
68
proxmox-api-macro/tests/options.rs
Normal file
@ -0,0 +1,68 @@
|
||||
use proxmox_api_macro::api;
|
||||
|
||||
use failure::Error;
|
||||
use serde_json::{json, Value};
|
||||
|
||||
#[api(
|
||||
input: {
|
||||
properties: {
|
||||
value: {
|
||||
description: "The optional value with default.",
|
||||
optional: true,
|
||||
default: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
)]
|
||||
/// Print the given message.
|
||||
///
|
||||
/// Returns: the input.
|
||||
pub fn test_option(value: bool) -> Result<bool, Error> {
|
||||
Ok(value)
|
||||
}
|
||||
|
||||
struct RpcEnv;
|
||||
impl proxmox::api::RpcEnvironment for RpcEnv {
|
||||
fn set_result_attrib(&mut self, name: &str, value: Value) {
|
||||
let _ = (name, value);
|
||||
panic!("set_result_attrib called");
|
||||
}
|
||||
|
||||
/// Query additional result data.
|
||||
fn get_result_attrib(&self, name: &str) -> Option<&Value> {
|
||||
let _ = name;
|
||||
panic!("get_result_attrib called");
|
||||
}
|
||||
|
||||
/// The environment type
|
||||
fn env_type(&self) -> proxmox::api::RpcEnvironmentType {
|
||||
panic!("env_type called");
|
||||
}
|
||||
|
||||
/// Set user name
|
||||
fn set_user(&mut self, user: Option<String>) {
|
||||
let _ = user;
|
||||
panic!("set_user called");
|
||||
}
|
||||
|
||||
/// Get user name
|
||||
fn get_user(&self) -> Option<String> {
|
||||
panic!("get_user called");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_invocations() {
|
||||
let mut env = RpcEnv;
|
||||
let value = api_function_test_option(json!({}), &API_METHOD_TEST_OPTION, &mut env)
|
||||
.expect("func with option should work");
|
||||
assert_eq!(value, false);
|
||||
|
||||
let value = api_function_test_option(json!({"value": true}), &API_METHOD_TEST_OPTION, &mut env)
|
||||
.expect("func with option should work");
|
||||
assert_eq!(value, true);
|
||||
|
||||
let value = api_function_test_option(json!({"value": false}), &API_METHOD_TEST_OPTION, &mut env)
|
||||
.expect("func with option should work");
|
||||
assert_eq!(value, false);
|
||||
}
|
Loading…
Reference in New Issue
Block a user