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