mirror of
https://github.com/actix/actix-web.git
synced 2024-12-30 12:00:38 +00:00
add cookie session test
This commit is contained in:
parent
b64851c5ec
commit
85b598a614
1 changed files with 63 additions and 2 deletions
|
@ -17,6 +17,7 @@
|
||||||
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
use actix_service::{Service, Transform};
|
use actix_service::{Service, Transform};
|
||||||
use actix_web::cookie::{Cookie, CookieJar, Key, SameSite};
|
use actix_web::cookie::{Cookie, CookieJar, Key, SameSite};
|
||||||
|
@ -27,7 +28,6 @@ use derive_more::{Display, From};
|
||||||
use futures::future::{ok, Future, FutureResult};
|
use futures::future::{ok, Future, FutureResult};
|
||||||
use futures::Poll;
|
use futures::Poll;
|
||||||
use serde_json::error::Error as JsonError;
|
use serde_json::error::Error as JsonError;
|
||||||
use time::Duration;
|
|
||||||
|
|
||||||
use crate::Session;
|
use crate::Session;
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ impl CookieSessionInner {
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(max_age) = self.max_age {
|
if let Some(max_age) = self.max_age {
|
||||||
cookie.set_max_age(max_age);
|
cookie.set_max_age(time::Duration::from_std(max_age).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(same_site) = self.same_site {
|
if let Some(same_site) = self.same_site {
|
||||||
|
@ -317,6 +317,7 @@ where
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use actix_web::{test, web, App};
|
use actix_web::{test, web, App};
|
||||||
|
use bytes::Bytes;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn cookie_session() {
|
fn cookie_session() {
|
||||||
|
@ -338,6 +339,26 @@ mod tests {
|
||||||
.is_some());
|
.is_some());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn private_cookie() {
|
||||||
|
let mut app = test::init_service(
|
||||||
|
App::new()
|
||||||
|
.wrap(CookieSession::private(&[0; 32]).secure(false))
|
||||||
|
.service(web::resource("/").to(|ses: Session| {
|
||||||
|
let _ = ses.set("counter", 100);
|
||||||
|
"test"
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
|
||||||
|
let request = test::TestRequest::get().to_request();
|
||||||
|
let response = test::block_on(app.call(request)).unwrap();
|
||||||
|
assert!(response
|
||||||
|
.response()
|
||||||
|
.cookies()
|
||||||
|
.find(|c| c.name() == "actix-session")
|
||||||
|
.is_some());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn cookie_session_extractor() {
|
fn cookie_session_extractor() {
|
||||||
let mut app = test::init_service(
|
let mut app = test::init_service(
|
||||||
|
@ -357,4 +378,44 @@ mod tests {
|
||||||
.find(|c| c.name() == "actix-session")
|
.find(|c| c.name() == "actix-session")
|
||||||
.is_some());
|
.is_some());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn basics() {
|
||||||
|
let mut app = test::init_service(
|
||||||
|
App::new()
|
||||||
|
.wrap(
|
||||||
|
CookieSession::signed(&[0; 32])
|
||||||
|
.path("/test/")
|
||||||
|
.name("actix-test")
|
||||||
|
.domain("localhost")
|
||||||
|
.http_only(true)
|
||||||
|
.same_site(SameSite::Lax)
|
||||||
|
.max_age(Duration::from_secs(100)),
|
||||||
|
)
|
||||||
|
.service(web::resource("/").to(|ses: Session| {
|
||||||
|
let _ = ses.set("counter", 100);
|
||||||
|
"test"
|
||||||
|
}))
|
||||||
|
.service(web::resource("/test/").to(|ses: Session| {
|
||||||
|
let val: usize = ses.get("counter").unwrap().unwrap();
|
||||||
|
format!("counter: {}", val)
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
|
||||||
|
let request = test::TestRequest::get().to_request();
|
||||||
|
let response = test::block_on(app.call(request)).unwrap();
|
||||||
|
let cookie = response
|
||||||
|
.response()
|
||||||
|
.cookies()
|
||||||
|
.find(|c| c.name() == "actix-test")
|
||||||
|
.unwrap()
|
||||||
|
.clone();
|
||||||
|
assert_eq!(cookie.path().unwrap(), "/test/");
|
||||||
|
|
||||||
|
let request = test::TestRequest::with_uri("/test/")
|
||||||
|
.cookie(cookie)
|
||||||
|
.to_request();
|
||||||
|
let body = test::read_response(&mut app, request);
|
||||||
|
assert_eq!(body, Bytes::from_static(b"counter: 100"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue