@@ -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
}
@@ -4840,6 +4842,30 @@ mod tests {
4840
4842
assert ! ( perms. write. check( & write_query, None ) . is_err( ) ) ;
4841
4843
}
4842
4844
4845
+ #[ test]
4846
+ fn test_check_allow_global_deny_global ( ) {
4847
+ let parser = TestPermissionDescriptorParser ;
4848
+ let mut perms = Permissions :: from_options (
4849
+ & parser,
4850
+ & PermissionsOptions {
4851
+ allow_read : Some ( vec ! [ ] ) ,
4852
+ deny_read : Some ( vec ! [ ] ) ,
4853
+ allow_write : Some ( vec ! [ ] ) ,
4854
+ deny_write : Some ( vec ! [ ] ) ,
4855
+ ..Default :: default ( )
4856
+ } ,
4857
+ )
4858
+ . unwrap ( ) ;
4859
+
4860
+ assert ! ( perms. read. check_all( None ) . is_err( ) ) ;
4861
+ let read_query = parser. parse_path_query ( "/foo" ) . unwrap ( ) . into_read ( ) ;
4862
+ assert ! ( perms. read. check( & read_query, None ) . is_err( ) ) ;
4863
+
4864
+ assert ! ( perms. write. check_all( None ) . is_err( ) ) ;
4865
+ let write_query = parser. parse_path_query ( "/foo" ) . unwrap ( ) . into_write ( ) ;
4866
+ assert ! ( perms. write. check( & write_query, None ) . is_err( ) ) ;
4867
+ }
4868
+
4843
4869
#[ test]
4844
4870
fn test_net_fully_qualified_domain_name ( ) {
4845
4871
set_prompter ( Box :: new ( TestPrompter ) ) ;
0 commit comments