Skip to main content

pubky_homeserver/data_directory/
signup_mode.rs

1use serde::{Deserialize, Serialize};
2
3/// The mode of signup.
4#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
5#[serde(rename_all = "snake_case")]
6pub enum SignupMode {
7    /// Everybody can signup.
8    Open,
9    /// Only users with a valid token can signup.
10    #[default]
11    TokenRequired,
12}
13
14#[cfg(test)]
15mod tests {
16    use super::*;
17
18    #[derive(Default, Serialize, Deserialize)]
19    struct TestToml {
20        #[serde(default)]
21        signup_mode: SignupMode,
22    }
23
24    #[test]
25    fn test_signup_mode_serde() {
26        let test_toml = TestToml::default();
27        assert_eq!(test_toml.signup_mode, SignupMode::TokenRequired);
28
29        let test_toml_str = toml::to_string(&test_toml).unwrap();
30        assert_eq!(test_toml_str, "signup_mode = \"token_required\"\n");
31
32        let test_toml_2: TestToml = toml::from_str(&test_toml_str).unwrap();
33        assert_eq!(test_toml_2.signup_mode, SignupMode::TokenRequired);
34
35        let test_toml_3: TestToml = toml::from_str("\n").unwrap();
36        assert_eq!(test_toml_3.signup_mode, SignupMode::TokenRequired);
37    }
38}