Browse Source

Test unexpected response during login.

wip
Titouan Rigoudy 4 years ago
parent
commit
2b4c7bb667
1 changed files with 51 additions and 1 deletions
  1. +51
    -1
      proto/src/server/client.rs

+ 51
- 1
proto/src/server/client.rs View File

@ -156,7 +156,6 @@ mod tests {
// TODO: Tests for all login error conditions:
//
// - unexpected response
// - read error
// - write error
// - stream closed
@ -203,6 +202,57 @@ mod tests {
server_task.await.expect("joining server");
}
#[tokio::test]
async fn login_unexpected_response() {
init();
let listener = TcpListener::bind("localhost:0").await.expect("binding");
let address = listener.local_addr().expect("getting local address");
let server_task = tokio::spawn(async move {
let (mut stream, _) = listener.accept().await.expect("accepting");
let (read_half, write_half) = stream.split();
let mut reader = FrameReader::new(read_half);
let mut writer = FrameWriter::new(write_half);
let frame = reader.read().await.expect("reading login request");
let request = frame.expect("unwrapping login request");
assert!(is_login_request(&request));
writer
.write(&ServerResponse::UserStatusResponse(UserStatusResponse {
user_name: "shruti".to_string(),
status: UserStatus::Online,
is_privileged: false,
}))
.await
.expect("writing user status response");
});
let stream = TcpStream::connect(address).await.expect("connecting");
let err = Client::new(stream)
.login(credentials())
.await
.expect_err("logging in");
match err {
ClientLoginError::UnexpectedResponse(response) => {
assert_eq!(
response,
ServerResponse::UserStatusResponse(UserStatusResponse {
user_name: "shruti".to_string(),
status: UserStatus::Online,
is_privileged: false,
})
);
}
_ => panic!("wrong error: {:?}", err),
}
server_task.await.expect("joining server");
}
#[tokio::test]
async fn login_success() {
init();


Loading…
Cancel
Save