Skip to content

Commit b349ef4

Browse files
committed
Ensure each fake oidc provider server stops immediately after the
corresponding test is done Add cancellation token to fake OIDC provider server
1 parent 1230326 commit b349ef4

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

tests/oidc/mod.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ use serde_json::json;
1212
use sqlpage::webserver::http::create_app;
1313
use std::collections::HashMap;
1414
use std::sync::{Arc, Mutex};
15+
use tokio_util::sync::{CancellationToken, DropGuard};
1516

1617
fn base64url_encode(data: &[u8]) -> String {
1718
base64::engine::general_purpose::URL_SAFE_NO_PAD.encode(data)
@@ -156,6 +157,7 @@ pub struct FakeOidcProvider {
156157
pub client_id: String,
157158
pub client_secret: String,
158159
state: SharedProviderState,
160+
_stop_on_drop: DropGuard,
159161
}
160162

161163
fn extract_set_cookies(headers: &header::HeaderMap) -> Vec<Cookie<'static>> {
@@ -184,6 +186,10 @@ impl FakeOidcProvider {
184186
}));
185187

186188
let state_for_server = Arc::clone(&state);
189+
190+
let server_stop = CancellationToken::new();
191+
let stop_on_drop = server_stop.clone().drop_guard();
192+
187193
let server = HttpServer::new(move || {
188194
let state = Data::new(Arc::clone(&state_for_server));
189195
App::new()
@@ -199,6 +205,7 @@ impl FakeOidcProvider {
199205
.listen(listener)
200206
.unwrap()
201207
.shutdown_timeout(1)
208+
.shutdown_signal(server_stop.cancelled_owned())
202209
.run();
203210

204211
tokio::spawn(server);
@@ -208,6 +215,7 @@ impl FakeOidcProvider {
208215
client_id,
209216
client_secret,
210217
state,
218+
_stop_on_drop: stop_on_drop,
211219
}
212220
}
213221

0 commit comments

Comments
 (0)