Make WordPress Core

Ticket #24030: 24030.2.diff

File 24030.2.diff, 1.9 KB (added by johnbillion, 9 years ago)
  • src/wp-includes/pluggable.php

     
    18031803                return 2;
    18041804        }
    18051805
     1806        /**
     1807         * Fires when nonce verification fails.
     1808         *
     1809         * @since x.x.x
     1810         *
     1811         * @param string     $nonce  The invalid nonce.
     1812         * @param string|int $action The nonce action.
     1813         * @param WP_User    $user   The current user object.
     1814         * @param string     $token  The user's session token.
     1815         */
     1816        do_action( 'wp_verify_nonce_failed', $nonce, $action, $user, $token );
     1817
    18061818        // Invalid nonce
    18071819        return false;
    18081820}
  • tests/phpunit/tests/auth.php

     
    88        var $user_id;
    99        var $wp_hasher;
    1010
     11        /**
     12         * action hook
     13         */
     14        protected $nonce_failure_hook = 'wp_verify_nonce_failed';
     15
    1116        function setUp() {
    1217                parent::setUp();
    1318                $this->user_id = $this->factory->user->create();
     
    110115                $this->assertFalse( wp_verify_nonce( 1 ) );
    111116        }
    112117
     118        /**
     119         * @ticket 24030
     120         */
     121        function test_wp_nonce_verify_failed() {
     122                $nonce = substr( md5( uniqid() ), 0, 10 );
     123                $count = did_action( $this->nonce_failure_hook );
     124
     125                wp_verify_nonce( $nonce, 'nonce_test_action' );
     126
     127                $this->assertEquals( ( $count + 1 ), did_action( $this->nonce_failure_hook ) );
     128        }
     129
     130        /**
     131         * @ticket 24030
     132         */
     133        function test_wp_nonce_verify_success() {
     134                $nonce = wp_create_nonce( 'nonce_test_action' );
     135                $count = did_action( $this->nonce_failure_hook );
     136
     137                wp_verify_nonce( $nonce, 'nonce_test_action' );
     138
     139                $this->assertEquals( $count, did_action( $this->nonce_failure_hook ) );
     140        }
     141
    113142        function test_password_length_limit() {
    114143                $passwords = array(
    115144                        str_repeat( 'a', 4095 ), // short