@@ -410,6 +410,8 @@ impl<TQuery: QueryDescriptor> UnaryPermission<TQuery> {
410
410
411
411
pub fn is_allow_all ( & self ) -> bool {
412
412
self . granted_global
413
+ && !self . flag_denied_global
414
+ && !self . prompt_denied_global
413
415
&& self . flag_denied_list . is_empty ( )
414
416
&& self . prompt_denied_list . is_empty ( )
415
417
}
@@ -4792,6 +4794,30 @@ mod tests {
4792
4794
assert ! ( perms. write. check( & write_query, None ) . is_err( ) ) ;
4793
4795
}
4794
4796
4797
+ #[ test]
4798
+ fn test_check_allow_global_deny_global ( ) {
4799
+ let parser = TestPermissionDescriptorParser ;
4800
+ let mut perms = Permissions :: from_options (
4801
+ & parser,
4802
+ & PermissionsOptions {
4803
+ allow_read : Some ( vec ! [ ] ) ,
4804
+ deny_read : Some ( vec ! [ ] ) ,
4805
+ allow_write : Some ( vec ! [ ] ) ,
4806
+ deny_write : Some ( vec ! [ ] ) ,
4807
+ ..Default :: default ( )
4808
+ } ,
4809
+ )
4810
+ . unwrap ( ) ;
4811
+
4812
+ assert ! ( perms. read. check_all( None ) . is_err( ) ) ;
4813
+ let read_query = parser. parse_path_query ( "/foo" ) . unwrap ( ) . into_read ( ) ;
4814
+ assert ! ( perms. read. check( & read_query, None ) . is_err( ) ) ;
4815
+
4816
+ assert ! ( perms. write. check_all( None ) . is_err( ) ) ;
4817
+ let write_query = parser. parse_path_query ( "/foo" ) . unwrap ( ) . into_write ( ) ;
4818
+ assert ! ( perms. write. check( & write_query, None ) . is_err( ) ) ;
4819
+ }
4820
+
4795
4821
#[ test]
4796
4822
fn test_net_fully_qualified_domain_name ( ) {
4797
4823
set_prompter ( Box :: new ( TestPrompter ) ) ;
0 commit comments