summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-22 23:25:24 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-22 23:25:24 -0400
commit01f9f3549c76702fd56e58d44c5180fecddb4bfa (patch)
treee7a64e70975a8b50bc442d28c17161b82c42c63a /src/test
parent214a9e6c1fd729fc2c49eb2a5d41b5651ff5bc61 (diff)
Sort out the naming of the various parts of an identity.
* A `cookie::Identity` (`IdentityCookie`) is a specialized CookieJar for working with identities. * An `Identity` is a token/login pair. I hope for this to be a bit more legible. In service of this, `Login` is no longer extractable. You have to get an identity.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/fixtures/cookie.rs37
-rw-r--r--src/test/fixtures/identity.rs48
-rw-r--r--src/test/fixtures/login.rs4
-rw-r--r--src/test/fixtures/mod.rs1
4 files changed, 60 insertions, 30 deletions
diff --git a/src/test/fixtures/cookie.rs b/src/test/fixtures/cookie.rs
new file mode 100644
index 0000000..58777c8
--- /dev/null
+++ b/src/test/fixtures/cookie.rs
@@ -0,0 +1,37 @@
+use uuid::Uuid;
+
+use crate::{
+ app::App,
+ clock::RequestedAt,
+ login::Password,
+ name::Name,
+ token::{extract::IdentityCookie, Secret},
+};
+
+pub fn not_logged_in() -> IdentityCookie {
+ IdentityCookie::new()
+}
+
+pub async fn logged_in(
+ app: &App,
+ credentials: &(Name, Password),
+ now: &RequestedAt,
+) -> IdentityCookie {
+ let (name, password) = credentials;
+ let (_, token) = app
+ .tokens()
+ .login(name, password, now)
+ .await
+ .expect("should succeed given known-valid credentials");
+
+ IdentityCookie::new().set(token)
+}
+
+pub fn secret(identity: &IdentityCookie) -> Secret {
+ identity.secret().expect("identity contained a secret")
+}
+
+pub fn fictitious() -> IdentityCookie {
+ let token = Uuid::new_v4().to_string();
+ IdentityCookie::new().set(token)
+}
diff --git a/src/test/fixtures/identity.rs b/src/test/fixtures/identity.rs
index c434473..e438f2b 100644
--- a/src/test/fixtures/identity.rs
+++ b/src/test/fixtures/identity.rs
@@ -1,31 +1,21 @@
-use uuid::Uuid;
-
use crate::{
app::App,
clock::RequestedAt,
- login::{Login, Password},
+ login::Password,
+ name::Name,
+ test::fixtures,
token::{
- extract::{Identity, IdentityToken},
- Secret,
+ self,
+ extract::{Identity, IdentityCookie},
},
};
-pub fn not_logged_in() -> IdentityToken {
- IdentityToken::new()
-}
-
-pub async fn logged_in(app: &App, login: &(Login, Password), now: &RequestedAt) -> IdentityToken {
- let (login, password) = login;
- let (_, token) = app
- .tokens()
- .login(&login.name, password, now)
- .await
- .expect("should succeed given known-valid credentials");
-
- IdentityToken::new().set(token)
+pub async fn create(app: &App, created_at: &RequestedAt) -> Identity {
+ let credentials = fixtures::login::create_with_password(app, created_at).await;
+ logged_in(app, &credentials, created_at).await
}
-pub async fn from_token(app: &App, token: &IdentityToken, issued_at: &RequestedAt) -> Identity {
+pub async fn from_cookie(app: &App, token: &IdentityCookie, issued_at: &RequestedAt) -> Identity {
let secret = token.secret().expect("identity token has a secret");
let (token, login) = app
.tokens()
@@ -36,16 +26,18 @@ pub async fn from_token(app: &App, token: &IdentityToken, issued_at: &RequestedA
Identity { token, login }
}
-pub async fn identity(app: &App, login: &(Login, Password), issued_at: &RequestedAt) -> Identity {
- let secret = logged_in(app, login, issued_at).await;
- from_token(app, &secret, issued_at).await
+pub async fn logged_in(
+ app: &App,
+ credentials: &(Name, Password),
+ issued_at: &RequestedAt,
+) -> Identity {
+ let secret = fixtures::cookie::logged_in(app, credentials, issued_at).await;
+ from_cookie(app, &secret, issued_at).await
}
-pub fn secret(identity: &IdentityToken) -> Secret {
- identity.secret().expect("identity contained a secret")
-}
+pub fn fictitious() -> Identity {
+ let token = token::Id::generate();
+ let login = fixtures::login::fictitious();
-pub fn fictitious() -> IdentityToken {
- let token = Uuid::new_v4().to_string();
- IdentityToken::new().set(token)
+ Identity { token, login }
}
diff --git a/src/test/fixtures/login.rs b/src/test/fixtures/login.rs
index 714b936..e308289 100644
--- a/src/test/fixtures/login.rs
+++ b/src/test/fixtures/login.rs
@@ -8,7 +8,7 @@ use crate::{
name::Name,
};
-pub async fn create_with_password(app: &App, created_at: &RequestedAt) -> (Login, Password) {
+pub async fn create_with_password(app: &App, created_at: &RequestedAt) -> (Name, Password) {
let (name, password) = propose();
let login = app
.logins()
@@ -16,7 +16,7 @@ pub async fn create_with_password(app: &App, created_at: &RequestedAt) -> (Login
.await
.expect("should always succeed if the login is actually new");
- (login, password)
+ (login.name, password)
}
pub async fn create(app: &App, created_at: &RequestedAt) -> Login {
diff --git a/src/test/fixtures/mod.rs b/src/test/fixtures/mod.rs
index 9658831..5609ebc 100644
--- a/src/test/fixtures/mod.rs
+++ b/src/test/fixtures/mod.rs
@@ -3,6 +3,7 @@ use chrono::{TimeDelta, Utc};
use crate::{app::App, clock::RequestedAt, db};
pub mod channel;
+pub mod cookie;
pub mod event;
pub mod future;
pub mod identity;