mirror of
https://github.com/fafhrd91/actix-web
synced 2025-06-25 22:49:21 +02:00
use actix_rt::test for test setup
This commit is contained in:
@ -607,144 +607,130 @@ mod tests {
|
||||
|
||||
use super::*;
|
||||
use actix_web::http::StatusCode;
|
||||
use actix_web::test::{self, block_on, TestRequest};
|
||||
use actix_web::test::{self, TestRequest};
|
||||
use actix_web::{web, App, Error, HttpResponse};
|
||||
|
||||
const COOKIE_KEY_MASTER: [u8; 32] = [0; 32];
|
||||
const COOKIE_NAME: &'static str = "actix_auth";
|
||||
const COOKIE_LOGIN: &'static str = "test";
|
||||
|
||||
#[test]
|
||||
fn test_identity() {
|
||||
block_on(async {
|
||||
let mut srv = test::init_service(
|
||||
App::new()
|
||||
.wrap(IdentityService::new(
|
||||
CookieIdentityPolicy::new(&COOKIE_KEY_MASTER)
|
||||
.domain("www.rust-lang.org")
|
||||
.name(COOKIE_NAME)
|
||||
.path("/")
|
||||
.secure(true),
|
||||
))
|
||||
.service(web::resource("/index").to(|id: Identity| {
|
||||
if id.identity().is_some() {
|
||||
HttpResponse::Created()
|
||||
} else {
|
||||
HttpResponse::Ok()
|
||||
}
|
||||
}))
|
||||
.service(web::resource("/login").to(|id: Identity| {
|
||||
id.remember(COOKIE_LOGIN.to_string());
|
||||
#[actix_rt::test]
|
||||
async fn test_identity() {
|
||||
let mut srv = test::init_service(
|
||||
App::new()
|
||||
.wrap(IdentityService::new(
|
||||
CookieIdentityPolicy::new(&COOKIE_KEY_MASTER)
|
||||
.domain("www.rust-lang.org")
|
||||
.name(COOKIE_NAME)
|
||||
.path("/")
|
||||
.secure(true),
|
||||
))
|
||||
.service(web::resource("/index").to(|id: Identity| {
|
||||
if id.identity().is_some() {
|
||||
HttpResponse::Created()
|
||||
} else {
|
||||
HttpResponse::Ok()
|
||||
}))
|
||||
.service(web::resource("/logout").to(|id: Identity| {
|
||||
if id.identity().is_some() {
|
||||
id.forget();
|
||||
HttpResponse::Ok()
|
||||
} else {
|
||||
HttpResponse::BadRequest()
|
||||
}
|
||||
})),
|
||||
)
|
||||
.await;
|
||||
let resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/index").to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
}))
|
||||
.service(web::resource("/login").to(|id: Identity| {
|
||||
id.remember(COOKIE_LOGIN.to_string());
|
||||
HttpResponse::Ok()
|
||||
}))
|
||||
.service(web::resource("/logout").to(|id: Identity| {
|
||||
if id.identity().is_some() {
|
||||
id.forget();
|
||||
HttpResponse::Ok()
|
||||
} else {
|
||||
HttpResponse::BadRequest()
|
||||
}
|
||||
})),
|
||||
)
|
||||
.await;
|
||||
let resp =
|
||||
test::call_service(&mut srv, TestRequest::with_uri("/index").to_request())
|
||||
.await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
|
||||
let resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/login").to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
let c = resp.response().cookies().next().unwrap().to_owned();
|
||||
let resp =
|
||||
test::call_service(&mut srv, TestRequest::with_uri("/login").to_request())
|
||||
.await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
let c = resp.response().cookies().next().unwrap().to_owned();
|
||||
|
||||
let resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/index")
|
||||
.cookie(c.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_eq!(resp.status(), StatusCode::CREATED);
|
||||
let resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/index")
|
||||
.cookie(c.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_eq!(resp.status(), StatusCode::CREATED);
|
||||
|
||||
let resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/logout")
|
||||
.cookie(c.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert!(resp.headers().contains_key(header::SET_COOKIE))
|
||||
})
|
||||
let resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/logout")
|
||||
.cookie(c.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert!(resp.headers().contains_key(header::SET_COOKIE))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identity_max_age_time() {
|
||||
block_on(async {
|
||||
let duration = Duration::days(1);
|
||||
let mut srv = test::init_service(
|
||||
App::new()
|
||||
.wrap(IdentityService::new(
|
||||
CookieIdentityPolicy::new(&COOKIE_KEY_MASTER)
|
||||
.domain("www.rust-lang.org")
|
||||
.name(COOKIE_NAME)
|
||||
.path("/")
|
||||
.max_age_time(duration)
|
||||
.secure(true),
|
||||
))
|
||||
.service(web::resource("/login").to(|id: Identity| {
|
||||
id.remember("test".to_string());
|
||||
HttpResponse::Ok()
|
||||
})),
|
||||
)
|
||||
.await;
|
||||
let resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/login").to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert!(resp.headers().contains_key(header::SET_COOKIE));
|
||||
let c = resp.response().cookies().next().unwrap().to_owned();
|
||||
assert_eq!(duration, c.max_age().unwrap());
|
||||
})
|
||||
#[actix_rt::test]
|
||||
async fn test_identity_max_age_time() {
|
||||
let duration = Duration::days(1);
|
||||
let mut srv = test::init_service(
|
||||
App::new()
|
||||
.wrap(IdentityService::new(
|
||||
CookieIdentityPolicy::new(&COOKIE_KEY_MASTER)
|
||||
.domain("www.rust-lang.org")
|
||||
.name(COOKIE_NAME)
|
||||
.path("/")
|
||||
.max_age_time(duration)
|
||||
.secure(true),
|
||||
))
|
||||
.service(web::resource("/login").to(|id: Identity| {
|
||||
id.remember("test".to_string());
|
||||
HttpResponse::Ok()
|
||||
})),
|
||||
)
|
||||
.await;
|
||||
let resp =
|
||||
test::call_service(&mut srv, TestRequest::with_uri("/login").to_request())
|
||||
.await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert!(resp.headers().contains_key(header::SET_COOKIE));
|
||||
let c = resp.response().cookies().next().unwrap().to_owned();
|
||||
assert_eq!(duration, c.max_age().unwrap());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identity_max_age() {
|
||||
block_on(async {
|
||||
let seconds = 60;
|
||||
let mut srv = test::init_service(
|
||||
App::new()
|
||||
.wrap(IdentityService::new(
|
||||
CookieIdentityPolicy::new(&COOKIE_KEY_MASTER)
|
||||
.domain("www.rust-lang.org")
|
||||
.name(COOKIE_NAME)
|
||||
.path("/")
|
||||
.max_age(seconds)
|
||||
.secure(true),
|
||||
))
|
||||
.service(web::resource("/login").to(|id: Identity| {
|
||||
id.remember("test".to_string());
|
||||
HttpResponse::Ok()
|
||||
})),
|
||||
)
|
||||
.await;
|
||||
let resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/login").to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert!(resp.headers().contains_key(header::SET_COOKIE));
|
||||
let c = resp.response().cookies().next().unwrap().to_owned();
|
||||
assert_eq!(Duration::seconds(seconds as i64), c.max_age().unwrap());
|
||||
})
|
||||
#[actix_rt::test]
|
||||
async fn test_identity_max_age() {
|
||||
let seconds = 60;
|
||||
let mut srv = test::init_service(
|
||||
App::new()
|
||||
.wrap(IdentityService::new(
|
||||
CookieIdentityPolicy::new(&COOKIE_KEY_MASTER)
|
||||
.domain("www.rust-lang.org")
|
||||
.name(COOKIE_NAME)
|
||||
.path("/")
|
||||
.max_age(seconds)
|
||||
.secure(true),
|
||||
))
|
||||
.service(web::resource("/login").to(|id: Identity| {
|
||||
id.remember("test".to_string());
|
||||
HttpResponse::Ok()
|
||||
})),
|
||||
)
|
||||
.await;
|
||||
let resp =
|
||||
test::call_service(&mut srv, TestRequest::with_uri("/login").to_request())
|
||||
.await;
|
||||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
assert!(resp.headers().contains_key(header::SET_COOKIE));
|
||||
let c = resp.response().cookies().next().unwrap().to_owned();
|
||||
assert_eq!(Duration::seconds(seconds as i64), c.max_age().unwrap());
|
||||
}
|
||||
|
||||
async fn create_identity_server<
|
||||
@ -885,223 +871,202 @@ mod tests {
|
||||
assert!(cookies.get(COOKIE_NAME).is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identity_legacy_cookie_is_set() {
|
||||
block_on(async {
|
||||
let mut srv = create_identity_server(|c| c).await;
|
||||
let mut resp =
|
||||
test::call_service(&mut srv, TestRequest::with_uri("/").to_request())
|
||||
.await;
|
||||
assert_legacy_login_cookie(&mut resp, COOKIE_LOGIN);
|
||||
assert_logged_in(resp, None).await;
|
||||
})
|
||||
#[actix_rt::test]
|
||||
async fn test_identity_legacy_cookie_is_set() {
|
||||
let mut srv = create_identity_server(|c| c).await;
|
||||
let mut resp =
|
||||
test::call_service(&mut srv, TestRequest::with_uri("/").to_request()).await;
|
||||
assert_legacy_login_cookie(&mut resp, COOKIE_LOGIN);
|
||||
assert_logged_in(resp, None).await;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identity_legacy_cookie_works() {
|
||||
block_on(async {
|
||||
let mut srv = create_identity_server(|c| c).await;
|
||||
let cookie = legacy_login_cookie(COOKIE_LOGIN);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_no_login_cookie(&mut resp);
|
||||
assert_logged_in(resp, Some(COOKIE_LOGIN)).await;
|
||||
})
|
||||
#[actix_rt::test]
|
||||
async fn test_identity_legacy_cookie_works() {
|
||||
let mut srv = create_identity_server(|c| c).await;
|
||||
let cookie = legacy_login_cookie(COOKIE_LOGIN);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_no_login_cookie(&mut resp);
|
||||
assert_logged_in(resp, Some(COOKIE_LOGIN)).await;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identity_legacy_cookie_rejected_if_visit_timestamp_needed() {
|
||||
block_on(async {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.visit_deadline(Duration::days(90))).await;
|
||||
let cookie = legacy_login_cookie(COOKIE_LOGIN);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::NoTimestamp,
|
||||
VisitTimeStampCheck::NewTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, None).await;
|
||||
})
|
||||
#[actix_rt::test]
|
||||
async fn test_identity_legacy_cookie_rejected_if_visit_timestamp_needed() {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.visit_deadline(Duration::days(90))).await;
|
||||
let cookie = legacy_login_cookie(COOKIE_LOGIN);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::NoTimestamp,
|
||||
VisitTimeStampCheck::NewTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, None).await;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identity_legacy_cookie_rejected_if_login_timestamp_needed() {
|
||||
block_on(async {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.login_deadline(Duration::days(90))).await;
|
||||
let cookie = legacy_login_cookie(COOKIE_LOGIN);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::NewTimestamp,
|
||||
VisitTimeStampCheck::NoTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, None).await;
|
||||
})
|
||||
#[actix_rt::test]
|
||||
async fn test_identity_legacy_cookie_rejected_if_login_timestamp_needed() {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.login_deadline(Duration::days(90))).await;
|
||||
let cookie = legacy_login_cookie(COOKIE_LOGIN);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::NewTimestamp,
|
||||
VisitTimeStampCheck::NoTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, None).await;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identity_cookie_rejected_if_login_timestamp_needed() {
|
||||
block_on(async {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.login_deadline(Duration::days(90))).await;
|
||||
let cookie = login_cookie(COOKIE_LOGIN, None, Some(SystemTime::now()));
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::NewTimestamp,
|
||||
VisitTimeStampCheck::NoTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, None).await;
|
||||
})
|
||||
#[actix_rt::test]
|
||||
async fn test_identity_cookie_rejected_if_login_timestamp_needed() {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.login_deadline(Duration::days(90))).await;
|
||||
let cookie = login_cookie(COOKIE_LOGIN, None, Some(SystemTime::now()));
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::NewTimestamp,
|
||||
VisitTimeStampCheck::NoTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, None).await;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identity_cookie_rejected_if_visit_timestamp_needed() {
|
||||
block_on(async {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.visit_deadline(Duration::days(90))).await;
|
||||
let cookie = login_cookie(COOKIE_LOGIN, Some(SystemTime::now()), None);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::NoTimestamp,
|
||||
VisitTimeStampCheck::NewTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, None).await;
|
||||
})
|
||||
#[actix_rt::test]
|
||||
async fn test_identity_cookie_rejected_if_visit_timestamp_needed() {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.visit_deadline(Duration::days(90))).await;
|
||||
let cookie = login_cookie(COOKIE_LOGIN, Some(SystemTime::now()), None);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::NoTimestamp,
|
||||
VisitTimeStampCheck::NewTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, None).await;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identity_cookie_rejected_if_login_timestamp_too_old() {
|
||||
block_on(async {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.login_deadline(Duration::days(90))).await;
|
||||
let cookie = login_cookie(
|
||||
COOKIE_LOGIN,
|
||||
Some(SystemTime::now() - Duration::days(180).to_std().unwrap()),
|
||||
None,
|
||||
);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::NewTimestamp,
|
||||
VisitTimeStampCheck::NoTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, None).await;
|
||||
})
|
||||
#[actix_rt::test]
|
||||
async fn test_identity_cookie_rejected_if_login_timestamp_too_old() {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.login_deadline(Duration::days(90))).await;
|
||||
let cookie = login_cookie(
|
||||
COOKIE_LOGIN,
|
||||
Some(SystemTime::now() - Duration::days(180).to_std().unwrap()),
|
||||
None,
|
||||
);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::NewTimestamp,
|
||||
VisitTimeStampCheck::NoTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, None).await;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identity_cookie_rejected_if_visit_timestamp_too_old() {
|
||||
block_on(async {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.visit_deadline(Duration::days(90))).await;
|
||||
let cookie = login_cookie(
|
||||
COOKIE_LOGIN,
|
||||
None,
|
||||
Some(SystemTime::now() - Duration::days(180).to_std().unwrap()),
|
||||
);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::NoTimestamp,
|
||||
VisitTimeStampCheck::NewTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, None).await;
|
||||
})
|
||||
#[actix_rt::test]
|
||||
async fn test_identity_cookie_rejected_if_visit_timestamp_too_old() {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.visit_deadline(Duration::days(90))).await;
|
||||
let cookie = login_cookie(
|
||||
COOKIE_LOGIN,
|
||||
None,
|
||||
Some(SystemTime::now() - Duration::days(180).to_std().unwrap()),
|
||||
);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::NoTimestamp,
|
||||
VisitTimeStampCheck::NewTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, None).await;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identity_cookie_not_updated_on_login_deadline() {
|
||||
block_on(async {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.login_deadline(Duration::days(90))).await;
|
||||
let cookie = login_cookie(COOKIE_LOGIN, Some(SystemTime::now()), None);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_no_login_cookie(&mut resp);
|
||||
assert_logged_in(resp, Some(COOKIE_LOGIN)).await;
|
||||
})
|
||||
#[actix_rt::test]
|
||||
async fn test_identity_cookie_not_updated_on_login_deadline() {
|
||||
let mut srv =
|
||||
create_identity_server(|c| c.login_deadline(Duration::days(90))).await;
|
||||
let cookie = login_cookie(COOKIE_LOGIN, Some(SystemTime::now()), None);
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_no_login_cookie(&mut resp);
|
||||
assert_logged_in(resp, Some(COOKIE_LOGIN)).await;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_identity_cookie_updated_on_visit_deadline() {
|
||||
block_on(async {
|
||||
let mut srv = create_identity_server(|c| {
|
||||
c.visit_deadline(Duration::days(90))
|
||||
.login_deadline(Duration::days(90))
|
||||
})
|
||||
.await;
|
||||
let timestamp = SystemTime::now() - Duration::days(1).to_std().unwrap();
|
||||
let cookie = login_cookie(COOKIE_LOGIN, Some(timestamp), Some(timestamp));
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::OldTimestamp(timestamp),
|
||||
VisitTimeStampCheck::NewTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, Some(COOKIE_LOGIN)).await;
|
||||
#[actix_rt::test]
|
||||
async fn test_identity_cookie_updated_on_visit_deadline() {
|
||||
let mut srv = create_identity_server(|c| {
|
||||
c.visit_deadline(Duration::days(90))
|
||||
.login_deadline(Duration::days(90))
|
||||
})
|
||||
.await;
|
||||
let timestamp = SystemTime::now() - Duration::days(1).to_std().unwrap();
|
||||
let cookie = login_cookie(COOKIE_LOGIN, Some(timestamp), Some(timestamp));
|
||||
let mut resp = test::call_service(
|
||||
&mut srv,
|
||||
TestRequest::with_uri("/")
|
||||
.cookie(cookie.clone())
|
||||
.to_request(),
|
||||
)
|
||||
.await;
|
||||
assert_login_cookie(
|
||||
&mut resp,
|
||||
COOKIE_LOGIN,
|
||||
LoginTimestampCheck::OldTimestamp(timestamp),
|
||||
VisitTimeStampCheck::NewTimestamp,
|
||||
);
|
||||
assert_logged_in(resp, Some(COOKIE_LOGIN)).await;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user