Skip to content

Commit b4378bb

Browse files
committed
add test for retry token expired
1 parent f4172ea commit b4378bb

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

quinn-proto/src/tests/token.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,43 @@ fn stateless_retry() {
2323
assert_eq!(pair.server.known_cids(), 0);
2424
}
2525

26+
#[test]
27+
fn retry_token_expired() {
28+
let _guard = subscribe();
29+
30+
let fake_time = Arc::new(FakeTimeSource::new());
31+
let retry_token_lifetime = Duration::from_secs(1);
32+
33+
let mut pair = Pair::default();
34+
pair.server.handle_incoming = Box::new(validate_incoming);
35+
36+
let mut config = server_config();
37+
config
38+
.time_source(Arc::clone(&fake_time) as _)
39+
.retry_token_lifetime(retry_token_lifetime);
40+
pair.server.set_server_config(Some(Arc::new(config)));
41+
42+
let client_ch = pair.begin_connect(client_config());
43+
pair.drive_client();
44+
pair.drive_server();
45+
pair.drive_client();
46+
47+
// to expire retry token
48+
fake_time.advance(retry_token_lifetime + Duration::from_millis(1));
49+
50+
pair.drive();
51+
assert_matches!(
52+
pair.client_conn_mut(client_ch).poll(),
53+
Some(Event::ConnectionLost { reason: ConnectionError::ConnectionClosed(err) })
54+
if err.error_code == TransportErrorCode::INVALID_TOKEN
55+
);
56+
57+
assert_eq!(pair.client.known_connections(), 0);
58+
assert_eq!(pair.client.known_cids(), 0);
59+
assert_eq!(pair.server.known_connections(), 0);
60+
assert_eq!(pair.server.known_cids(), 0);
61+
}
62+
2663
#[test]
2764
fn use_token() {
2865
let _guard = subscribe();

0 commit comments

Comments
 (0)