).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);
+ }
+ }
+ }
}
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};
#[derive(Debug,Clone,Copy,Serialize,Deserialize)]
#[derive(Hash,Eq,PartialEq,Ord,PartialOrd)]
-#[derive(FromPrimitive,ToPrimitive)]
+#[derive(FromPrimitive,ToPrimitive,EnumIter)]
pub enum TablePermission {
TestExistence,
ShowInList,