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.
 

57 lines
1.3 KiB

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