|
|
@ -224,3 +224,54 @@ impl ServerContext { |
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
|
|
mod tests {
|
|
|
|
|
|
use solstice_proto::{User, UserStatus};
|
|
|
|
|
|
use tokio::sync::mpsc::channel;
|
|
|
|
|
|
|
|
|
|
|
|
use crate::server::room::{RoomMap, RoomState, RoomVisibility};
|
|
|
|
|
|
use crate::server::user::UserMap;
|
|
|
|
|
|
|
|
|
|
|
|
use super::{ServerLoggedInContext, ServerLoggedInContextOptions};
|
|
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
|
fn server_logged_in_context_new() {
|
|
|
|
|
|
let mut rooms = RoomMap::default();
|
|
|
|
|
|
rooms.insert(
|
|
|
|
|
|
"foo".to_string(),
|
|
|
|
|
|
RoomState::new(RoomVisibility::Public, 42),
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
let mut users = UserMap::default();
|
|
|
|
|
|
users.insert(User {
|
|
|
|
|
|
name: "kim".to_string(),
|
|
|
|
|
|
status: UserStatus::Online,
|
|
|
|
|
|
average_speed: 1,
|
|
|
|
|
|
num_downloads: 2,
|
|
|
|
|
|
unknown: 3,
|
|
|
|
|
|
num_files: 4,
|
|
|
|
|
|
num_folders: 5,
|
|
|
|
|
|
num_free_slots: 6,
|
|
|
|
|
|
country: "KR".to_string(),
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
let (tx, _rx) = channel(100);
|
|
|
|
|
|
|
|
|
|
|
|
let context = ServerLoggedInContext::new(
|
|
|
|
|
|
tx.clone(),
|
|
|
|
|
|
ServerLoggedInContextOptions {
|
|
|
|
|
|
users: users.clone(),
|
|
|
|
|
|
rooms: rooms.clone(),
|
|
|
|
|
|
user_name: "bob".to_string(),
|
|
|
|
|
|
motd: "hey".to_string(),
|
|
|
|
|
|
},
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
assert_eq!(context.user_name(), "bob");
|
|
|
|
|
|
assert_eq!(context.motd(), "hey");
|
|
|
|
|
|
assert!(context.request_tx.same_channel(&tx));
|
|
|
|
|
|
assert_eq!(context.rooms, rooms);
|
|
|
|
|
|
assert_eq!(context.users, users);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|