|
|
|
@ -124,6 +124,12 @@ pub struct UserListResponse { |
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
mod tests {
|
|
|
|
use std::collections::HashSet;
|
|
|
|
|
|
|
|
use solstice_proto::{User, UserStatus};
|
|
|
|
|
|
|
|
use crate::room::{Membership, Room, Visibility};
|
|
|
|
|
|
|
|
use super::{
|
|
|
|
LoginStatusResponse, Response, RoomJoinResponse, RoomLeaveResponse,
|
|
|
|
RoomListResponse, RoomMessageResponse, RoomUserJoinedResponse,
|
|
|
|
@ -183,14 +189,195 @@ mod tests { |
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: Write tests for the other variants:
|
|
|
|
//
|
|
|
|
// - RoomJoinResponse
|
|
|
|
// - RoomLeaveResponse
|
|
|
|
// - RoomListResponse
|
|
|
|
// - RoomMessageResponse
|
|
|
|
// - RoomUserJoinedResponse
|
|
|
|
// - RoomUserLeftResponse
|
|
|
|
// - UserInfoResponse
|
|
|
|
// - UserListResponse
|
|
|
|
#[test]
|
|
|
|
fn deserialize_room_join_response() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::from_str::<RoomJoinResponse>(r#"{ "room_name": "bleep" }"#)
|
|
|
|
.unwrap(),
|
|
|
|
RoomJoinResponse {
|
|
|
|
room_name: "bleep".to_string(),
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deserialize_room_leave_response() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::from_str::<RoomLeaveResponse>(r#"{ "room_name": "bleep" }"#)
|
|
|
|
.unwrap(),
|
|
|
|
RoomLeaveResponse {
|
|
|
|
room_name: "bleep".to_string(),
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deserialize_room_message_response() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::from_str::<RoomMessageResponse>(
|
|
|
|
r#"{
|
|
|
|
"room_name": "bleep",
|
|
|
|
"user_name": "karandeep",
|
|
|
|
"message": "namaste"
|
|
|
|
}"#
|
|
|
|
)
|
|
|
|
.unwrap(),
|
|
|
|
RoomMessageResponse {
|
|
|
|
room_name: "bleep".to_string(),
|
|
|
|
user_name: "karandeep".to_string(),
|
|
|
|
message: "namaste".to_string(),
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deserialize_room_list_response() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::from_str::<RoomListResponse>(
|
|
|
|
r#"{
|
|
|
|
"rooms": [
|
|
|
|
["bleep", {
|
|
|
|
"membership": "Joining",
|
|
|
|
"visibility": "PrivateOwned",
|
|
|
|
"operated": false,
|
|
|
|
"user_count": 3,
|
|
|
|
"owner": null,
|
|
|
|
"operators": [],
|
|
|
|
"members": [],
|
|
|
|
"messages": [],
|
|
|
|
"tickers": []
|
|
|
|
}]
|
|
|
|
]
|
|
|
|
}"#
|
|
|
|
)
|
|
|
|
.unwrap(),
|
|
|
|
RoomListResponse {
|
|
|
|
rooms: vec![(
|
|
|
|
"bleep".to_string(),
|
|
|
|
Room {
|
|
|
|
membership: Membership::Joining,
|
|
|
|
visibility: Visibility::PrivateOwned,
|
|
|
|
operated: false,
|
|
|
|
user_count: 3,
|
|
|
|
owner: None,
|
|
|
|
operators: HashSet::new(),
|
|
|
|
members: HashSet::new(),
|
|
|
|
messages: vec![],
|
|
|
|
tickers: vec![],
|
|
|
|
}
|
|
|
|
)],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deserialize_room_user_joined_response() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::from_str::<RoomUserJoinedResponse>(
|
|
|
|
r#"{
|
|
|
|
"room_name": "bleep",
|
|
|
|
"user_name": "karandeep"
|
|
|
|
}"#
|
|
|
|
)
|
|
|
|
.unwrap(),
|
|
|
|
RoomUserJoinedResponse {
|
|
|
|
room_name: "bleep".to_string(),
|
|
|
|
user_name: "karandeep".to_string(),
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deserialize_room_user_left_response() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::from_str::<RoomUserLeftResponse>(
|
|
|
|
r#"{
|
|
|
|
"room_name": "bleep",
|
|
|
|
"user_name": "karandeep"
|
|
|
|
}"#
|
|
|
|
)
|
|
|
|
.unwrap(),
|
|
|
|
RoomUserLeftResponse {
|
|
|
|
room_name: "bleep".to_string(),
|
|
|
|
user_name: "karandeep".to_string(),
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deserialize_user_info_response() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::from_str::<UserInfoResponse>(
|
|
|
|
r#"{
|
|
|
|
"user_name": "karandeep",
|
|
|
|
"user_info": {
|
|
|
|
"name": "karandeep",
|
|
|
|
"status": "Online",
|
|
|
|
"average_speed": 1,
|
|
|
|
"num_downloads": 2,
|
|
|
|
"unknown": 3,
|
|
|
|
"num_files": 4,
|
|
|
|
"num_folders": 5,
|
|
|
|
"num_free_slots": 6,
|
|
|
|
"country": "IN"
|
|
|
|
}
|
|
|
|
}"#
|
|
|
|
)
|
|
|
|
.unwrap(),
|
|
|
|
UserInfoResponse {
|
|
|
|
user_name: "karandeep".to_string(),
|
|
|
|
user_info: User {
|
|
|
|
name: "karandeep".to_string(),
|
|
|
|
status: UserStatus::Online,
|
|
|
|
average_speed: 1,
|
|
|
|
num_downloads: 2,
|
|
|
|
unknown: 3,
|
|
|
|
num_files: 4,
|
|
|
|
num_folders: 5,
|
|
|
|
num_free_slots: 6,
|
|
|
|
country: "IN".to_string(),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn deserialize_user_list_response() {
|
|
|
|
assert_eq!(
|
|
|
|
serde_json::from_str::<UserListResponse>(
|
|
|
|
r#"{
|
|
|
|
"user_list": [
|
|
|
|
["karandeep", {
|
|
|
|
"name": "karandeep",
|
|
|
|
"status": "Online",
|
|
|
|
"average_speed": 1,
|
|
|
|
"num_downloads": 2,
|
|
|
|
"unknown": 3,
|
|
|
|
"num_files": 4,
|
|
|
|
"num_folders": 5,
|
|
|
|
"num_free_slots": 6,
|
|
|
|
"country": "IN"
|
|
|
|
}]
|
|
|
|
]
|
|
|
|
}"#
|
|
|
|
)
|
|
|
|
.unwrap(),
|
|
|
|
UserListResponse {
|
|
|
|
user_list: vec![(
|
|
|
|
"karandeep".to_string(),
|
|
|
|
User {
|
|
|
|
name: "karandeep".to_string(),
|
|
|
|
status: UserStatus::Online,
|
|
|
|
average_speed: 1,
|
|
|
|
num_downloads: 2,
|
|
|
|
unknown: 3,
|
|
|
|
num_files: 4,
|
|
|
|
num_folders: 5,
|
|
|
|
num_free_slots: 6,
|
|
|
|
country: "IN".to_string(),
|
|
|
|
}
|
|
|
|
)],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|