smol_db_common 1.4.0

A common library shared between packages that use smol_db
Documentation
#[cfg(test)]
#[allow(unused_imports)]
mod tests {
    use smol_db_common::prelude::*;
    use std::time::{Duration, SystemTime};

    #[test]
    fn test_read_permissions() {
        let admin_key = "test_admin_123".to_string();
        let user_key = "test_user_123".to_string();
        let other_key = "".to_string();
        let super_admin_key = "super_duper_admin_key".to_string();
        let super_admin_list: Vec<String> = vec![super_admin_key.clone()];
        let db1 = DB::new_from_settings(DBSettings::new(
            Duration::from_secs(30),
            (false, false, false),
            (true, true, true),
            vec![admin_key.clone()],
            vec![user_key.clone()],
        ));
        let db2 = DB::new_from_settings(DBSettings::new(
            Duration::from_secs(30),
            (true, false, false),
            (true, true, true),
            vec![admin_key.clone()],
            vec![user_key.clone()],
        ));
        let db3 = DB::new_from_settings(DBSettings::new(
            Duration::from_secs(30),
            (true, false, false),
            (false, true, true),
            vec![admin_key.clone()],
            vec![user_key.clone()],
        ));

        assert_eq!(
            db1.has_read_permissions(&other_key, &super_admin_list),
            false
        );
        assert_eq!(
            db2.has_read_permissions(&other_key, &super_admin_list),
            true
        );
        assert_eq!(
            db3.has_read_permissions(&other_key, &super_admin_list),
            true
        );

        assert_eq!(db1.has_read_permissions(&user_key, &super_admin_list), true);
        assert_eq!(db2.has_read_permissions(&user_key, &super_admin_list), true);
        assert_eq!(
            db3.has_read_permissions(&user_key, &super_admin_list),
            false
        );

        assert_eq!(
            db1.has_read_permissions(&admin_key, &super_admin_list),
            true
        );
        assert_eq!(
            db2.has_read_permissions(&admin_key, &super_admin_list),
            true
        );
        assert_eq!(
            db3.has_read_permissions(&admin_key, &super_admin_list),
            true
        );

        assert_eq!(
            db1.has_read_permissions(&super_admin_key, &super_admin_list),
            true
        );
        assert_eq!(
            db2.has_read_permissions(&super_admin_key, &super_admin_list),
            true
        );
        assert_eq!(
            db3.has_read_permissions(&super_admin_key, &super_admin_list),
            true
        );
    }

    #[test]
    fn test_write_permissions() {
        let admin_key = "test_admin_123".to_string();
        let user_key = "test_user_123".to_string();
        let other_key = "".to_string();
        let super_admin_key = "super_duper_admin_key".to_string();
        let super_admin_list: Vec<String> = vec![super_admin_key.clone()];
        let db1 = DB::new_from_settings(DBSettings::new(
            Duration::from_secs(30),
            (false, false, false),
            (true, true, true),
            vec![admin_key.clone()],
            vec![user_key.clone()],
        ));
        let db2 = DB::new_from_settings(DBSettings::new(
            Duration::from_secs(30),
            (true, true, false),
            (true, true, true),
            vec![admin_key.clone()],
            vec![user_key.clone()],
        ));
        let db3 = DB::new_from_settings(DBSettings::new(
            Duration::from_secs(30),
            (true, false, false),
            (true, false, true),
            vec![admin_key.clone()],
            vec![user_key.clone()],
        ));
        assert_eq!(
            db1.has_write_permissions(&other_key, &super_admin_list),
            false
        );
        assert_eq!(
            db2.has_write_permissions(&other_key, &super_admin_list),
            true
        );
        assert_eq!(
            db3.has_write_permissions(&other_key, &super_admin_list),
            false
        );

        assert_eq!(
            db1.has_write_permissions(&user_key, &super_admin_list),
            true
        );
        assert_eq!(
            db2.has_write_permissions(&user_key, &super_admin_list),
            true
        );
        assert_eq!(
            db3.has_write_permissions(&user_key, &super_admin_list),
            false
        );

        assert_eq!(
            db1.has_write_permissions(&admin_key, &super_admin_list),
            true
        );
        assert_eq!(
            db2.has_write_permissions(&admin_key, &super_admin_list),
            true
        );
        assert_eq!(
            db3.has_write_permissions(&admin_key, &super_admin_list),
            true
        );

        assert_eq!(
            db1.has_write_permissions(&super_admin_key, &super_admin_list),
            true
        );
        assert_eq!(
            db2.has_write_permissions(&super_admin_key, &super_admin_list),
            true
        );
        assert_eq!(
            db3.has_write_permissions(&super_admin_key, &super_admin_list),
            true
        );
    }

    #[test]
    fn test_list_permissions() {
        let admin_key = "test_admin_123".to_string();
        let user_key = "test_user_123".to_string();
        let other_key = "".to_string();
        let super_admin_key = "super_duper_admin_key".to_string();
        let super_admin_list: Vec<String> = vec![super_admin_key.clone()];
        let db1 = DB::new_from_settings(DBSettings::new(
            Duration::from_secs(30),
            (false, false, true),
            (true, true, true),
            vec![admin_key.clone()],
            vec![user_key.clone()],
        ));
        let db2 = DB::new_from_settings(DBSettings::new(
            Duration::from_secs(30),
            (true, true, false),
            (true, true, true),
            vec![admin_key.clone()],
            vec![user_key.clone()],
        ));
        let db3 = DB::new_from_settings(DBSettings::new(
            Duration::from_secs(30),
            (true, false, true),
            (true, false, false),
            vec![admin_key.clone()],
            vec![user_key.clone()],
        ));
        assert_eq!(
            db1.has_list_permissions(&other_key, &super_admin_list),
            true
        );
        assert_eq!(
            db2.has_list_permissions(&other_key, &super_admin_list),
            false
        );
        assert_eq!(
            db3.has_list_permissions(&other_key, &super_admin_list),
            true
        );

        assert_eq!(db1.has_list_permissions(&user_key, &super_admin_list), true);
        assert_eq!(db2.has_list_permissions(&user_key, &super_admin_list), true);
        assert_eq!(
            db3.has_list_permissions(&user_key, &super_admin_list),
            false
        );

        assert_eq!(
            db1.has_list_permissions(&admin_key, &super_admin_list),
            true
        );
        assert_eq!(
            db2.has_list_permissions(&admin_key, &super_admin_list),
            true
        );
        assert_eq!(
            db3.has_list_permissions(&admin_key, &super_admin_list),
            true
        );

        assert_eq!(
            db1.has_list_permissions(&super_admin_key, &super_admin_list),
            true
        );
        assert_eq!(
            db2.has_list_permissions(&super_admin_key, &super_admin_list),
            true
        );
        assert_eq!(
            db3.has_list_permissions(&super_admin_key, &super_admin_list),
            true
        );
    }

    #[test]
    fn test_get_role() {
        let admin_key = "test_admin_123".to_string();
        let user_key = "test_user_123".to_string();
        let other_key = "".to_string();
        let super_admin_key = "super_duper_admin_key".to_string();
        let super_admin_list: Vec<String> = vec![super_admin_key.clone()];
        let db1 = DB::new_from_settings(DBSettings::new(
            Duration::from_secs(30),
            (false, false, true),
            (true, true, true),
            vec![admin_key.clone()],
            vec![user_key.clone()],
        ));

        assert_eq!(db1.get_role(&admin_key, &super_admin_list), Admin);
        assert_eq!(db1.get_role(&user_key, &super_admin_list), User);
        assert_eq!(db1.get_role(&other_key, &super_admin_list), Other);
        assert_eq!(
            db1.get_role(&super_admin_key, &super_admin_list),
            SuperAdmin
        );
    }
}