Removed send once session test.
This commit is contained in:
parent
7792e7ca82
commit
dbe77eff0f
@ -23,11 +23,15 @@ impl MoreThanText {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn request<F>(&mut self, _session: Option<F>) -> Reply
|
pub fn request<F>(&mut self, session: Option<F>) -> Reply
|
||||||
where
|
where
|
||||||
F: Into<Field>,
|
F: Into<Field>,
|
||||||
{
|
{
|
||||||
let req = Request::new(None);
|
let sess = match session {
|
||||||
|
Some(id) => Some(id.into()),
|
||||||
|
None => None,
|
||||||
|
};
|
||||||
|
let req = Request::new(sess);
|
||||||
let rx = self.client_link.send(req);
|
let rx = self.client_link.send(req);
|
||||||
rx.recv().unwrap()
|
rx.recv().unwrap()
|
||||||
}
|
}
|
||||||
|
41
src/main.rs
41
src/main.rs
@ -38,25 +38,14 @@ async fn mtt_conn(jar: CookieJar, state: State<MoreThanText>) -> impl IntoRespon
|
|||||||
Some(cookie) => Some(cookie.value().to_string()),
|
Some(cookie) => Some(cookie.value().to_string()),
|
||||||
None => None,
|
None => None,
|
||||||
};
|
};
|
||||||
|
let sess_info = sid.clone();
|
||||||
let (tx, mut rx) = channel(5);
|
let (tx, mut rx) = channel(5);
|
||||||
spawn(async move {
|
spawn(async move {
|
||||||
tx.send(state.clone().request(sid)).await.unwrap();
|
tx.send(state.clone().request(sess_info)).await.unwrap();
|
||||||
});
|
});
|
||||||
let reply = rx.recv().await.unwrap();
|
let reply = rx.recv().await.unwrap();
|
||||||
let cookie = Cookie::build((SESSION_KEY, reply.get_session().to_string()));
|
let cookie = Cookie::build((SESSION_KEY, reply.get_session().to_string()));
|
||||||
let cookies = jar.add(cookie);
|
let cookies = jar.add(cookie);
|
||||||
|
|
||||||
/*
|
|
||||||
let sid = match jar.get(SESSION_KEY) {
|
|
||||||
Some(cookie) => Some(cookie.value().to_string()),
|
|
||||||
None => None,
|
|
||||||
};
|
|
||||||
state.open_session(sid.clone());
|
|
||||||
if !sid.is_some_and(|x| x == state.get_id()) {
|
|
||||||
let cookie = Cookie::build((SESSION_KEY, state.get_id()));
|
|
||||||
cookies = jar.add(cookie);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
(cookies, reply.get_content())
|
(cookies, reply.get_content())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +56,7 @@ mod servers {
|
|||||||
body::Body,
|
body::Body,
|
||||||
http::{Request, StatusCode},
|
http::{Request, StatusCode},
|
||||||
};
|
};
|
||||||
use tower::{Service, ServiceExt};
|
use tower::ServiceExt;
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn get_home_page() {
|
async fn get_home_page() {
|
||||||
@ -100,28 +89,4 @@ mod servers {
|
|||||||
holder.push(sessid);
|
holder.push(sessid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Next test to complete.
|
|
||||||
//#[tokio::test]
|
|
||||||
async fn session_only_sent_once() {
|
|
||||||
let mut app = mtt_conn.with_state(MoreThanText::new());
|
|
||||||
let request = Request::builder().uri("/").body(Body::empty()).unwrap();
|
|
||||||
let response = ServiceExt::<Request<Body>>::ready(&mut app)
|
|
||||||
.await
|
|
||||||
.unwrap()
|
|
||||||
.call(request)
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(response.status(), StatusCode::OK);
|
|
||||||
let request = Request::builder().uri("/").body(Body::empty()).unwrap();
|
|
||||||
let response = ServiceExt::<Request<Body>>::ready(&mut app)
|
|
||||||
.await
|
|
||||||
.unwrap()
|
|
||||||
.call(request)
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
assert_eq!(response.status(), StatusCode::OK);
|
|
||||||
let session = response.headers().get("set-cookie");
|
|
||||||
assert!(session.is_none(), "should only send the session once");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,10 @@ impl Session {
|
|||||||
|
|
||||||
fn validate(&self, msg: Message) {
|
fn validate(&self, msg: Message) {
|
||||||
let mut reply = msg.reply(MsgType::Session);
|
let mut reply = msg.reply(MsgType::Session);
|
||||||
reply.add_data("sess_id", Uuid::new_v4());
|
match msg.get_data("sess_id") {
|
||||||
|
Some(id) => reply.add_data("sess_id", id.clone()),
|
||||||
|
None => reply.add_data("sess_id", Uuid::new_v4()),
|
||||||
|
}
|
||||||
self.queue.send(reply);
|
self.queue.send(reply);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -51,12 +54,18 @@ mod sessions {
|
|||||||
|
|
||||||
static TIMEOUT: Duration = Duration::from_millis(500);
|
static TIMEOUT: Duration = Duration::from_millis(500);
|
||||||
|
|
||||||
#[test]
|
fn setup_session(listen_for: Vec<MsgType>) -> (Queue, Receiver<Message>) {
|
||||||
fn get_new_session() {
|
|
||||||
let queue = Queue::new();
|
let queue = Queue::new();
|
||||||
let (tx, rx) = channel();
|
let (tx, rx) = channel();
|
||||||
queue.add(tx, [MsgType::Session].to_vec());
|
queue.add(tx, listen_for);
|
||||||
Session::start(queue.clone());
|
Session::start(queue.clone());
|
||||||
|
(queue, rx)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn get_new_session() {
|
||||||
|
let listen_for = [MsgType::Session];
|
||||||
|
let (queue, rx) = setup_session(listen_for.to_vec());
|
||||||
let msg = Message::new(MsgType::SessionValidate);
|
let msg = Message::new(MsgType::SessionValidate);
|
||||||
queue.send(msg.clone());
|
queue.send(msg.clone());
|
||||||
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
let result = rx.recv_timeout(TIMEOUT).unwrap();
|
||||||
@ -72,10 +81,8 @@ mod sessions {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn session_id_is_unique() {
|
fn session_id_is_unique() {
|
||||||
let queue = Queue::new();
|
let listen_for = [MsgType::Session];
|
||||||
let (tx, rx) = channel();
|
let (queue, rx) = setup_session(listen_for.to_vec());
|
||||||
queue.add(tx, [MsgType::Session].to_vec());
|
|
||||||
Session::start(queue.clone());
|
|
||||||
let msg = Message::new(MsgType::SessionValidate);
|
let msg = Message::new(MsgType::SessionValidate);
|
||||||
let mut ids: Vec<Uuid> = Vec::new();
|
let mut ids: Vec<Uuid> = Vec::new();
|
||||||
for _ in 0..10 {
|
for _ in 0..10 {
|
||||||
@ -86,4 +93,19 @@ mod sessions {
|
|||||||
ids.push(id);
|
ids.push(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn existing_id_are_returned() {
|
||||||
|
let listen_for = [MsgType::Session];
|
||||||
|
let (queue, rx) = setup_session(listen_for.to_vec());
|
||||||
|
let mut msg = Message::new(MsgType::SessionValidate);
|
||||||
|
queue.send(msg.clone());
|
||||||
|
let holder = rx.recv().unwrap();
|
||||||
|
let id = holder.get_data("sess_id").unwrap().to_uuid().unwrap();
|
||||||
|
msg.add_data("sess_id", id.clone());
|
||||||
|
queue.send(msg);
|
||||||
|
let result = rx.recv().unwrap();
|
||||||
|
let output = result.get_data("sess_id").unwrap().to_uuid().unwrap();
|
||||||
|
assert_eq!(output, id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user