blob: d1def12c561a30c9ce09f212dc1058b6d3aa20ee [file]
use crate::cli::common::{IggyCmdCommand, IggyCmdTestCase};
use assert_cmd::assert::Assert;
use async_trait::async_trait;
use iggy::cli::system::session::ServerSession;
use iggy::client::Client;
use predicates::str::diff;
#[derive(Debug)]
pub(super) struct TestLogoutCmd {
server_address: String,
}
impl TestLogoutCmd {
pub(super) fn new(server_address: String) -> Self {
Self { server_address }
}
}
#[async_trait]
impl IggyCmdTestCase for TestLogoutCmd {
async fn prepare_server_state(&mut self, _client: &dyn Client) {
let login_session = ServerSession::new(self.server_address.clone());
assert!(login_session.is_active());
}
fn get_command(&self) -> IggyCmdCommand {
IggyCmdCommand::new().arg("logout")
}
fn verify_command(&self, command_state: Assert) {
command_state.success().stdout(diff(format!(
"Executing logout command\nSuccessfully logged out from Iggy server {}\n",
self.server_address
)));
}
async fn verify_server_state(&self, client: &dyn Client) {
let login_session = ServerSession::new(self.server_address.clone());
assert!(!login_session.is_active());
let pats = client.get_personal_access_tokens().await.unwrap();
assert_eq!(pats.len(), 0);
}
}