Skip to content

Commit

Permalink
fix load_session usage
Browse files Browse the repository at this point in the history
  • Loading branch information
jbr committed Mar 30, 2023
1 parent 3f2f0e7 commit 8ba2205
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 20 deletions.
16 changes: 8 additions & 8 deletions src/cookie_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ mod tests {
session.insert("key", "Hello")?;
let cloned = session.clone();
let cookie_value = store.store_session(&mut session).await?.unwrap();
let loaded_session = store.load_session(cookie_value).await?.unwrap();
let loaded_session = store.load_session(&cookie_value).await?.unwrap();
assert_eq!(cloned.id(), loaded_session.id());
assert_eq!("Hello", &loaded_session.get::<String>("key").unwrap());
assert!(!loaded_session.is_expired());
Expand All @@ -99,11 +99,11 @@ mod tests {
session.insert("key", "value")?;
let cookie_value = store.store_session(&mut session).await?.unwrap();

let mut session = store.load_session(cookie_value.clone()).await?.unwrap();
let mut session = store.load_session(&cookie_value.clone()).await?.unwrap();
session.insert("key", "other value")?;

let new_cookie_value = store.store_session(&mut session).await?.unwrap();
let session = store.load_session(new_cookie_value).await?.unwrap();
let session = store.load_session(&new_cookie_value).await?.unwrap();
assert_eq!(&mut session.get::<String>("key").unwrap(), "other value");

Ok(())
Expand All @@ -117,18 +117,18 @@ mod tests {
let original_expires = *session.expiry().unwrap();
let cookie_value = store.store_session(&mut session).await?.unwrap();

let mut session = store.load_session(cookie_value.clone()).await?.unwrap();
let mut session = store.load_session(&cookie_value.clone()).await?.unwrap();

assert_eq!(session.expiry().unwrap(), &original_expires);
session.expire_in(Duration::from_secs(3));
let new_expires = *session.expiry().unwrap();
let cookie_value = store.store_session(&mut session).await?.unwrap();

let session = store.load_session(cookie_value.clone()).await?.unwrap();
let session = store.load_session(&cookie_value.clone()).await?.unwrap();
assert_eq!(session.expiry().unwrap(), &new_expires);

task::sleep(Duration::from_secs(3)).await;
assert_eq!(None, store.load_session(cookie_value).await?);
assert_eq!(None, store.load_session(&cookie_value).await?);

Ok(())
}
Expand All @@ -143,14 +143,14 @@ mod tests {

let cookie_value = store.store_session(&mut session).await?.unwrap();

let loaded_session = store.load_session(cookie_value.clone()).await?.unwrap();
let loaded_session = store.load_session(&cookie_value.clone()).await?.unwrap();
assert_eq!(cloned.id(), loaded_session.id());
assert_eq!("value", &*loaded_session.get::<String>("key").unwrap());

assert!(!loaded_session.is_expired());

task::sleep(Duration::from_secs(3)).await;
assert_eq!(None, store.load_session(cookie_value).await?);
assert_eq!(None, store.load_session(&cookie_value).await?);

Ok(())
}
Expand Down
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
//! let cookie_value = store.store_session(&mut session).await?.unwrap();
//!
//! // Retrieve the session using the cookie.
//! let session = store.load_session(cookie_value).await?.unwrap();
//! let session = store.load_session(&cookie_value).await?.unwrap();
//! assert_eq!(session.get::<usize>("user_id").unwrap(), 1);
//! assert!(!session.data_changed());
//! #
Expand Down
23 changes: 12 additions & 11 deletions src/memory_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,9 @@ impl SessionStore for MemoryStore {
async fn store_session(&self, session: &mut Session) -> Result<Option<String>, Self::Error> {
log::trace!("storing session by id `{}`", session.id());
session.reset_data_changed();
let cookie_value = session.take_cookie_value();
self.0.insert(session.id().to_string(), session.clone());
Ok(session.take_cookie_value())
Ok(cookie_value)
}

async fn destroy_session(&self, session: &mut Session) -> Result<(), Self::Error> {
Expand Down Expand Up @@ -116,7 +117,7 @@ mod tests {
session.insert("key", "Hello")?;
let cloned = session.clone();
let cookie_value = store.store_session(&mut session).await?.unwrap();
let loaded_session = store.load_session(cookie_value).await?.unwrap();
let loaded_session = store.load_session(&cookie_value).await?.unwrap();
assert_eq!(cloned.id(), loaded_session.id());
assert_eq!("Hello", &loaded_session.get::<String>("key").unwrap());
assert!(!loaded_session.is_expired());
Expand All @@ -132,11 +133,11 @@ mod tests {
session.insert("key", "value")?;
let cookie_value = store.store_session(&mut session).await?.unwrap();

let mut session = store.load_session(cookie_value.clone()).await?.unwrap();
let mut session = store.load_session(&cookie_value).await?.unwrap();
session.insert("key", "other value")?;

assert_eq!(store.store_session(&mut session).await?, None);
let session = store.load_session(cookie_value).await?.unwrap();
let session = store.load_session(&cookie_value).await?.unwrap();
assert_eq!(&mut session.get::<String>("key").unwrap(), "other value");

Ok(())
Expand All @@ -150,18 +151,18 @@ mod tests {
let original_expires = *session.expiry().unwrap();
let cookie_value = store.store_session(&mut session).await?.unwrap();

let mut session = store.load_session(cookie_value.clone()).await?.unwrap();
let mut session = store.load_session(&cookie_value).await?.unwrap();

assert_eq!(session.expiry().unwrap(), &original_expires);
session.expire_in(Duration::from_secs(3));
let new_expires = *session.expiry().unwrap();
assert_eq!(None, store.store_session(&mut session).await?);

let session = store.load_session(cookie_value.clone()).await?.unwrap();
let session = store.load_session(&cookie_value).await?.unwrap();
assert_eq!(session.expiry().unwrap(), &new_expires);

task::sleep(Duration::from_secs(3)).await;
assert_eq!(None, store.load_session(cookie_value).await?);
assert_eq!(None, store.load_session(&cookie_value).await?);

Ok(())
}
Expand All @@ -176,14 +177,14 @@ mod tests {

let cookie_value = store.store_session(&mut session).await?.unwrap();

let loaded_session = store.load_session(cookie_value.clone()).await?.unwrap();
let loaded_session = store.load_session(&cookie_value).await?.unwrap();
assert_eq!(cloned.id(), loaded_session.id());
assert_eq!("value", &*loaded_session.get::<String>("key").unwrap());

assert!(!loaded_session.is_expired());

task::sleep(Duration::from_secs(3)).await;
assert_eq!(None, store.load_session(cookie_value).await?);
assert_eq!(None, store.load_session(&cookie_value).await?);

Ok(())
}
Expand All @@ -197,9 +198,9 @@ mod tests {

let cookie = store.store_session(&mut Session::new()).await?.unwrap();
assert_eq!(4, store.count());
let mut session = store.load_session(cookie.clone()).await?.unwrap();
let mut session = store.load_session(&cookie).await?.unwrap();
store.destroy_session(&mut session).await?;
assert_eq!(None, store.load_session(cookie).await?);
assert_eq!(None, store.load_session(&cookie).await?);
assert_eq!(3, store.count());

// attempting to destroy the session again is not an error
Expand Down

0 comments on commit 8ba2205

Please sign in to comment.