From: Ian Jackson Date: Wed, 19 May 2021 20:32:17 +0000 (+0100) Subject: accounts: Add test for PermSet X-Git-Tag: otter-0.6.0~151 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=194b183cd9cf411b89dda4f687e1d1af0ca83381;p=otter.git accounts: Add test for PermSet Signed-off-by: Ian Jackson --- diff --git a/src/accounts.rs b/src/accounts.rs index ca509f40..3ea5c893 100644 --- a/src/accounts.rs +++ b/src/accounts.rs @@ -598,4 +598,26 @@ pub mod loaded_acl { ).collect() } } } + + #[test] + fn perm_set() { + for p in TablePermission::iter() { + let acl = Acl { ents: vec![ AclEntry { + account_glob: "foo".to_string(), + allow: [p].iter().cloned().collect(), + deny: default(), + }]}; + let lacl: LoadedAcl<_> = acl.into(); + let eacl = EffectiveACL { + owner_account: None, + acl: &lacl, + }; + + for q in TablePermission::iter() { + let auth = eacl.check("foo", [q].into()); + assert_eq!( auth.is_ok(), p == q, + "{:?} {:?} {:?}", p, q, auth); + } + } + } } diff --git a/src/spec.rs b/src/spec.rs index f8f5c141..30f11487 100644 --- a/src/spec.rs +++ b/src/spec.rs @@ -17,7 +17,7 @@ use fehler::{throw,throws}; use index_vec::{define_index_type, IndexVec}; use num_derive::{FromPrimitive, ToPrimitive}; use serde::{Deserialize, Serialize}; -use strum::{EnumString, Display}; +use strum::{Display, EnumIter, EnumString}; use thiserror::Error; use otter_base::geometry::{Coord,Pos}; @@ -127,7 +127,7 @@ pub struct AclEntry { #[derive(Debug,Clone,Copy,Serialize,Deserialize)] #[derive(Hash,Eq,PartialEq,Ord,PartialOrd)] -#[derive(FromPrimitive,ToPrimitive)] +#[derive(FromPrimitive,ToPrimitive,EnumIter)] pub enum TablePermission { TestExistence, ShowInList,