reinhardt_conf/settings/
session.rs1use reinhardt_core::macros::settings;
6use serde::{Deserialize, Serialize};
7
8fn default_engine() -> String {
9 "cookie".to_string()
10}
11
12fn default_cookie_name() -> String {
13 "sessionid".to_string()
14}
15
16fn default_cookie_age() -> u64 {
17 1209600
18}
19
20fn default_cookie_httponly() -> bool {
21 true
22}
23
24fn default_cookie_samesite() -> String {
25 "lax".to_string()
26}
27
28#[settings(fragment = true, section = "session")]
32#[non_exhaustive]
33#[derive(Clone, Debug, Serialize, Deserialize)]
34pub struct SessionSettings {
35 #[serde(default = "default_engine")]
37 pub engine: String,
38 #[serde(default = "default_cookie_name")]
40 pub cookie_name: String,
41 #[serde(default = "default_cookie_age")]
43 pub cookie_age: u64,
44 pub cookie_secure: bool,
46 #[serde(default = "default_cookie_httponly")]
48 pub cookie_httponly: bool,
49 #[serde(default = "default_cookie_samesite")]
51 pub cookie_samesite: String,
52}
53
54impl Default for SessionSettings {
55 fn default() -> Self {
56 Self {
57 engine: "cookie".to_string(),
58 cookie_name: "sessionid".to_string(),
59 cookie_age: 1209600, cookie_secure: false,
61 cookie_httponly: true,
62 cookie_samesite: "lax".to_string(),
63 }
64 }
65}
66
67#[cfg(test)]
68mod tests {
69 use super::*;
70 use crate::settings::fragment::SettingsFragment;
71 use rstest::rstest;
72
73 #[rstest]
74 fn test_session_section_name() {
75 let section = SessionSettings::section();
77
78 assert_eq!(section, "session");
80 }
81
82 #[rstest]
83 fn test_session_default_values() {
84 let settings = SessionSettings::default();
86
87 assert_eq!(settings.engine, "cookie");
89 assert_eq!(settings.cookie_name, "sessionid");
90 assert_eq!(settings.cookie_age, 1209600);
91 assert!(!settings.cookie_secure);
92 assert!(settings.cookie_httponly);
93 assert_eq!(settings.cookie_samesite, "lax");
94 }
95}