Browse Source

Test read error during login.

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

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

@ -156,7 +156,6 @@ mod tests {
// TODO: Tests for all login error conditions:
//
// - read error
// - write error
// - stream closed
@ -253,6 +252,41 @@ mod tests {
server_task.await.expect("joining server");
}
#[tokio::test]
async fn login_read_error() {
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("garbage").await.expect("writing garbage");
});
let stream = TcpStream::connect(address).await.expect("connecting");
let err = Client::new(stream)
.login(credentials())
.await
.expect_err("logging in");
match err {
ClientLoginError::ReadError(_) => {}
_ => panic!("wrong error: {:?}", err),
}
server_task.await.expect("joining server");
}
#[tokio::test]
async fn login_success() {
init();


Loading…
Cancel
Save