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);
|
|
}
|
|
}
|