reinhardt_testkit/auth/
server_fn_builder.rs1use super::identity::SessionIdentity;
2use super::traits::ForceLoginUser;
3use crate::server_fn::MockSession;
4use crate::server_fn::ServerFnTestContext;
5
6pub struct ServerFnAuthBuilder {
15 ctx: ServerFnTestContext,
16 identity: Option<SessionIdentity>,
17}
18
19impl ServerFnAuthBuilder {
20 pub(crate) fn new(ctx: ServerFnTestContext) -> Self {
21 Self {
22 ctx,
23 identity: None,
24 }
25 }
26
27 pub fn session(mut self, user: &impl ForceLoginUser) -> Self {
31 self.identity = Some(SessionIdentity::from_user(user));
32 self
33 }
34
35 #[cfg(native)]
37 pub fn jwt(
38 mut self,
39 user: &impl ForceLoginUser,
40 _config: &super::builder::JwtTestConfig,
41 ) -> Self {
42 self.identity = Some(SessionIdentity::from_user(user));
43 self
44 }
45
46 pub fn with_staff(mut self, is_staff: bool) -> Self {
48 if let Some(ref mut id) = self.identity {
49 id.is_staff = is_staff;
50 }
51 self
52 }
53
54 pub fn with_superuser(mut self, is_superuser: bool) -> Self {
56 if let Some(ref mut id) = self.identity {
57 id.is_superuser = is_superuser;
58 }
59 self
60 }
61
62 pub fn done(mut self) -> ServerFnTestContext {
66 if let Some(identity) = &self.identity {
67 let mock_session = MockSession::from_identity(identity);
68 self.ctx = self.ctx.with_session(mock_session);
69 }
70 self.ctx
71 }
72}