WordPress.org

Make WordPress Core

Ticket #17850: 17850-tests.diff

File 17850-tests.diff, 1.4 KB (added by ryan, 7 years ago)
  • wp-testcase/test_user_capabilities.php

     
    2929                #$GLOBALS['wp_roles'] = new WP_Roles();
    3030        }
    3131
     32        function _meta_yes_you_can( $key, $post_id, $user_id, $cap ) {
     33                return true;
     34        }
     35
     36        function _meta_no_you_cant( $key, $post_id, $user_id, $cap ) {
     37                return false;
     38        }
     39
    3240        // test the default roles
    3341
    3442        function test_user_administrator() {
     
    445453                // other authors and contributors can't
    446454                $this->assertFalse($author_2->has_cap('delete_post', $post));
    447455                $this->assertFalse($contributor->has_cap('delete_post', $post));
     456
     457                // Test meta authorization callbacks
     458                if ( function_exists( 'register_meta') ) {
     459                        $this->assertFalse( $admin->has_cap('delete_post_meta', '_protected', $post) );
     460                        register_meta( '_protected', 'post', array( 'auth_callback' => array( &$this, '_meta_yes_you_can') ) );
     461                        $this->assertTrue( $admin->has_cap('delete_post_meta', '_protected', $post) );
     462                        $this->assertTrue( $admin->has_cap('delete_post_meta', 'not_protected', $post) );
     463                        register_meta( 'not_protected', 'post', array( 'auth_callback' => array( &$this, '_meta_no_you_cant') ) );
     464                        $this->assertFalse( $admin->has_cap('delete_post_meta', 'not_protected', $post) );
     465                }
    448466        }
    449467
    450468        function test_page_meta_caps() {