use rabbitmq_http_client::{blocking_api::Client, commons::QueueType, requests::VirtualHostParams};
use crate::test_helpers::{PASSWORD, USERNAME, endpoint, rabbitmq_version_is_at_least};
#[test]
fn test_blocking_list_vhosts() {
let endpoint = endpoint();
let rc = Client::new(&endpoint, USERNAME, PASSWORD);
let result = rc.list_vhosts();
assert!(result.is_ok());
let vec = result.unwrap();
assert!(vec.iter().any(|vh| vh.name == "/"))
}
#[test]
fn test_blocking_get_vhost() {
let endpoint = endpoint();
let rc = Client::new(&endpoint, USERNAME, PASSWORD);
let name = "/";
let result = rc.get_vhost(name);
assert!(result.is_ok());
let vh = result.unwrap();
assert_eq!(vh.name, name);
}
#[test]
fn test_blocking_create_vhost() {
let endpoint = endpoint();
let rc = Client::new(&endpoint, USERNAME, PASSWORD);
let name = "rust_test_create_vhost";
let _ = rc.delete_vhost(name, false);
let result1 = rc.get_vhost(name);
assert!(result1.is_err());
let desc = format!("{} description", &name);
let params = VirtualHostParams {
name,
description: Some(&desc),
tags: Some(vec!["tag-a", "tag-b"]),
default_queue_type: Some(QueueType::Classic),
tracing: false,
};
let result2 = rc.create_vhost(¶ms);
assert!(result2.is_ok());
let result3 = rc.get_vhost(name);
assert!(result3.is_ok());
let vh2 = result3.unwrap();
assert_eq!(vh2.name, name);
let _ = rc.delete_vhost(name, false);
}
#[test]
fn test_blocking_create_vhost_without_dqt() {
let endpoint = endpoint();
let rc = Client::new(&endpoint, USERNAME, PASSWORD);
let name = "rust_test_create_vhost_without_dqt";
let _ = rc.delete_vhost(name, false);
let result1 = rc.get_vhost(name);
assert!(result1.is_err());
let desc = format!("{} description", &name);
let params = VirtualHostParams {
name,
description: Some(&desc),
tags: Some(vec!["tag-a", "tag-b"]),
default_queue_type: None,
tracing: false,
};
let result2 = rc.create_vhost(¶ms);
assert!(result2.is_ok());
let result3 = rc.get_vhost(name);
assert!(result3.is_ok());
let vh2 = result3.unwrap();
assert_eq!(vh2.name, name);
let _ = rc.delete_vhost(name, false);
}
#[test]
fn test_blocking_update_vhost() {
let endpoint = endpoint();
let rc = Client::new(&endpoint, USERNAME, PASSWORD);
let name = "rust_test_update_vhost";
let _ = rc.delete_vhost(name, false);
let result1 = rc.get_vhost(name);
assert!(result1.is_err());
let desc = format!("{} description", &name);
let params1 = VirtualHostParams {
name,
description: Some(&desc),
tags: Some(vec!["tag-a", "tag-b"]),
default_queue_type: Some(QueueType::Classic),
tracing: false,
};
let result2 = rc.create_vhost(¶ms1);
assert!(result2.is_ok());
let alt_desc = "altered description";
let params2 = VirtualHostParams {
description: Some(alt_desc),
..params1
};
let result3 = rc.update_vhost(¶ms2);
assert!(result3.is_ok());
let result4 = rc.get_vhost(name);
assert!(result4.is_ok());
let vh = result4.unwrap();
assert_eq!(vh.description.unwrap(), alt_desc);
let _ = rc.delete_vhost(name, false);
}
#[test]
fn test_blocking_delete_vhost() {
let endpoint = endpoint();
let rc = Client::new(&endpoint, USERNAME, PASSWORD);
let name = "rust_test_delete_vhost";
let desc = format!("{} description", &name);
let params = VirtualHostParams {
name,
description: Some(&desc),
tags: Some(vec!["tag-a", "tag-b"]),
default_queue_type: Some(QueueType::Quorum),
tracing: false,
};
let result1 = rc.create_vhost(¶ms);
assert!(result1.is_ok());
let _result2 = rc.get_vhost(name);
let _ = rc.delete_vhost(name, false);
let _ = rc.delete_vhost(name, true);
assert!(rc.delete_vhost(name, false).is_err());
let result3 = rc.get_vhost(name);
assert!(result3.is_err());
}
#[test]
fn test_blocking_vhost_deletion_protection() {
if !rabbitmq_version_is_at_least(4, 0, 0) {
return;
}
let endpoint = endpoint();
let rc = Client::new(&endpoint, USERNAME, PASSWORD);
let name = "rust_test_blocking_vhost_deletion_protection";
let _ = rc.delete_vhost(name, true);
let params = VirtualHostParams {
name,
description: None,
tags: None,
default_queue_type: None,
tracing: false,
};
let result2 = rc.create_vhost(¶ms);
assert!(result2.is_ok());
let result3 = rc.enable_vhost_deletion_protection(name);
assert!(result3.is_ok());
let result4 = rc.delete_vhost(name, false);
assert!(result4.is_err());
let result5 = rc.disable_vhost_deletion_protection(name);
assert!(result5.is_ok());
let result6 = rc.delete_vhost(name, false);
assert!(result6.is_ok());
}