1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-11-20 08:31:09 +00:00

add cookie session test

This commit is contained in:
Nikolay Kim 2019-04-17 11:02:03 -07:00
parent b64851c5ec
commit 85b598a614

View file

@ -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"));
}
} }