Solstice client.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

55 lines
1.2 KiB

use std::io;
use crate::context::Context;
use crate::message_handler::MessageHandler;
use crate::proto::server::PrivilegedUsersResponse;
#[derive(Debug, Default)]
pub struct SetPrivilegedUsersHandler;
impl MessageHandler<PrivilegedUsersResponse> for SetPrivilegedUsersHandler {
fn run(
self,
context: &Context,
message: &PrivilegedUsersResponse,
) -> io::Result<()> {
let users = message.users.clone();
context.users.lock().set_all_privileged(users);
Ok(())
}
fn name() -> String {
"SetPrivilegedUsersHandler".to_string()
}
}
#[cfg(test)]
mod tests {
use crate::context::Context;
use crate::message_handler::MessageHandler;
use crate::proto::server::PrivilegedUsersResponse;
use super::SetPrivilegedUsersHandler;
#[test]
fn run_sets_privileged_users() {
let context = Context::new();
let response = PrivilegedUsersResponse {
users: vec![
"aomame".to_string(),
"billybob".to_string(),
"carlos".to_string(),
],
};
SetPrivilegedUsersHandler::default()
.run(&context, &response)
.unwrap();
let mut privileged = context.users.lock().get_all_privileged();
privileged.sort();
assert_eq!(privileged, response.users);
}
}