Skip to content

Commit 7b784e0

Browse files
committed
Enable session filter tests
1 parent b0cdbe4 commit 7b784e0

File tree

2 files changed

+80
-83
lines changed

2 files changed

+80
-83
lines changed

crates/storage-pg/src/personal/mod.rs

Lines changed: 72 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ mod tests {
1717
use chrono::Duration;
1818
use mas_data_model::{Clock, Device, clock::MockClock};
1919
use mas_storage::{
20-
RepositoryAccess,
21-
personal::{PersonalAccessTokenRepository, PersonalSessionRepository},
20+
Pagination, RepositoryAccess,
21+
personal::{
22+
PersonalAccessTokenRepository, PersonalSessionFilter, PersonalSessionRepository,
23+
},
2224
user::UserRepository,
2325
};
2426
use oauth2_types::scope::{OPENID, PROFILE, Scope};
@@ -46,30 +48,30 @@ mod tests {
4648
.await
4749
.unwrap();
4850

49-
// TODO: Session filters are not implemented for personal sessions yet
50-
// let all = PersonalSessionFilter::new().for_user(&user);
51-
// let active = all.active_only();
52-
// let finished = all.finished_only();
53-
// let pagination = Pagination::first(10);
54-
55-
// assert_eq!(repo.personal_session().count(all).await.unwrap(), 0);
56-
// assert_eq!(repo.personal_session().count(active).await.unwrap(), 0);
57-
// assert_eq!(repo.personal_session().count(finished).await.unwrap(), 0);
58-
59-
// let full_list = repo.compat_session().list(all, pagination).await.unwrap();
60-
// assert!(full_list.edges.is_empty());
61-
// let active_list = repo
62-
// .compat_session()
63-
// .list(active, pagination)
64-
// .await
65-
// .unwrap();
66-
// assert!(active_list.edges.is_empty());
67-
// let finished_list = repo
68-
// .compat_session()
69-
// .list(finished, pagination)
70-
// .await
71-
// .unwrap();
72-
// assert!(finished_list.edges.is_empty());
51+
let all = PersonalSessionFilter::new().for_actor_user(&bot_user);
52+
let active = all.active_only();
53+
let finished = all.finished_only();
54+
let pagination = Pagination::first(10);
55+
56+
assert_eq!(repo.personal_session().count(all).await.unwrap(), 0);
57+
assert_eq!(repo.personal_session().count(active).await.unwrap(), 0);
58+
assert_eq!(repo.personal_session().count(finished).await.unwrap(), 0);
59+
60+
// We start off with no sessions
61+
let full_list = repo.personal_session().list(all, pagination).await.unwrap();
62+
assert!(full_list.edges.is_empty());
63+
let active_list = repo
64+
.personal_session()
65+
.list(active, pagination)
66+
.await
67+
.unwrap();
68+
assert!(active_list.edges.is_empty());
69+
let finished_list = repo
70+
.personal_session()
71+
.list(finished, pagination)
72+
.await
73+
.unwrap();
74+
assert!(finished_list.edges.is_empty());
7375

7476
// Start a personal session for that user
7577
let device = Device::generate(&mut rng);
@@ -95,27 +97,28 @@ mod tests {
9597
assert!(!session.is_revoked());
9698
assert_eq!(session.scope, scope);
9799

98-
// TODO
99-
// assert_eq!(repo.compat_session().count(all).await.unwrap(), 1);
100-
// assert_eq!(repo.compat_session().count(active).await.unwrap(), 1);
101-
// assert_eq!(repo.compat_session().count(finished).await.unwrap(), 0);
102-
103-
// let full_list = repo.compat_session().list(all, pagination).await.unwrap();
104-
// assert_eq!(full_list.edges.len(), 1);
105-
// assert_eq!(full_list.edges[0].0.id, session.id);
106-
// let active_list = repo
107-
// .compat_session()
108-
// .list(active, pagination)
109-
// .await
110-
// .unwrap();
111-
// assert_eq!(active_list.edges.len(), 1);
112-
// assert_eq!(active_list.edges[0].0.id, session.id);
113-
// let finished_list = repo
114-
// .compat_session()
115-
// .list(finished, pagination)
116-
// .await
117-
// .unwrap();
118-
// assert!(finished_list.edges.is_empty());
100+
assert_eq!(repo.personal_session().count(all).await.unwrap(), 1);
101+
assert_eq!(repo.personal_session().count(active).await.unwrap(), 1);
102+
assert_eq!(repo.personal_session().count(finished).await.unwrap(), 0);
103+
104+
let full_list = repo.personal_session().list(all, pagination).await.unwrap();
105+
assert_eq!(full_list.edges.len(), 1);
106+
assert_eq!(full_list.edges[0].node.id, session.id);
107+
assert!(full_list.edges[0].node.is_valid());
108+
let active_list = repo
109+
.personal_session()
110+
.list(active, pagination)
111+
.await
112+
.unwrap();
113+
assert_eq!(active_list.edges.len(), 1);
114+
assert_eq!(active_list.edges[0].node.id, session.id);
115+
assert!(active_list.edges[0].node.is_valid());
116+
let finished_list = repo
117+
.personal_session()
118+
.list(finished, pagination)
119+
.await
120+
.unwrap();
121+
assert!(finished_list.edges.is_empty());
119122

120123
// Lookup the session and check it didn't change
121124
let session_lookup = repo
@@ -127,18 +130,9 @@ mod tests {
127130
assert_eq!(session_lookup.id, session.id);
128131
assert_eq!(session_lookup.owner_user_id, admin_user.id);
129132
assert_eq!(session_lookup.actor_user_id, bot_user.id);
133+
assert_eq!(session_lookup.scope, scope);
130134
assert!(session_lookup.is_valid());
131135
assert!(!session_lookup.is_revoked());
132-
assert_eq!(session_lookup.scope, scope);
133-
134-
// TODO
135-
// assert_eq!(list.edges.len(), 1);
136-
// let session_lookup = &list.edges[0].0;
137-
// assert_eq!(session_lookup.id, session.id);
138-
// assert_eq!(session_lookup.user_id, user.id);
139-
// assert_eq!(session.device.as_ref().unwrap().as_str(), device_str);
140-
// assert!(session_lookup.is_valid());
141-
// assert!(!session_lookup.is_finished());
142136

143137
// Revoke the session
144138
let session = repo
@@ -149,29 +143,27 @@ mod tests {
149143
assert!(!session.is_valid());
150144
assert!(session.is_revoked());
151145

152-
// TODO
153-
// assert_eq!(repo.compat_session().count(all).await.unwrap(), 1);
154-
// assert_eq!(repo.compat_session().count(active).await.unwrap(), 0);
155-
// assert_eq!(repo.compat_session().count(finished).await.unwrap(), 1);
156-
157-
// TODO
158-
// let full_list = repo.compat_session().list(all, pagination).await.unwrap();
159-
// assert_eq!(full_list.edges.len(), 1);
160-
// assert_eq!(full_list.edges[0].0.id, session.id);
161-
// let active_list = repo
162-
// .compat_session()
163-
// .list(active, pagination)
164-
// .await
165-
// .unwrap();
166-
// assert!(active_list.edges.is_empty());
167-
// let finished_list = repo
168-
// .compat_session()
169-
// .list(finished, pagination)
170-
// .await
171-
// .unwrap();
172-
// assert_eq!(finished_list.edges.len(), 1);
173-
// assert_eq!(finished_list.edges[0].0.id, session.id);
174-
// assert!(session.is_revoked());
146+
assert_eq!(repo.personal_session().count(all).await.unwrap(), 1);
147+
assert_eq!(repo.personal_session().count(active).await.unwrap(), 0);
148+
assert_eq!(repo.personal_session().count(finished).await.unwrap(), 1);
149+
150+
let full_list = repo.personal_session().list(all, pagination).await.unwrap();
151+
assert_eq!(full_list.edges.len(), 1);
152+
assert_eq!(full_list.edges[0].node.id, session.id);
153+
let active_list = repo
154+
.personal_session()
155+
.list(active, pagination)
156+
.await
157+
.unwrap();
158+
assert!(active_list.edges.is_empty());
159+
let finished_list = repo
160+
.personal_session()
161+
.list(finished, pagination)
162+
.await
163+
.unwrap();
164+
assert_eq!(finished_list.edges.len(), 1);
165+
assert_eq!(finished_list.edges[0].node.id, session.id);
166+
assert!(finished_list.edges[0].node.is_revoked());
175167

176168
// Reload the session and check again
177169
let session_lookup = repo

crates/storage-pg/src/personal/session.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use mas_data_model::{
1313
};
1414
use mas_storage::{
1515
Page, Pagination,
16+
pagination::Node,
1617
personal::{PersonalSessionFilter, PersonalSessionRepository, PersonalSessionState},
1718
};
1819
use oauth2_types::scope::Scope;
@@ -63,6 +64,12 @@ struct PersonalSessionLookup {
6364
last_active_ip: Option<IpAddr>,
6465
}
6566

67+
impl Node<Ulid> for PersonalSessionLookup {
68+
fn cursor(&self) -> Ulid {
69+
self.personal_session_id.into()
70+
}
71+
}
72+
6673
impl TryFrom<PersonalSessionLookup> for PersonalSession {
6774
type Error = DatabaseInconsistencyError;
6875

@@ -296,9 +303,7 @@ impl PersonalSessionRepository for PgPersonalSessionRepository<'_> {
296303
.fetch_all(&mut *self.conn)
297304
.await?;
298305

299-
let page = pagination
300-
.process(edges)
301-
.try_map(PersonalSession::try_from)?;
306+
let page = pagination.process(edges).try_map(TryFrom::try_from)?;
302307

303308
Ok(page)
304309
}

0 commit comments

Comments
 (0)