Tests: Add unit tests for the wp_nonce_ays() function.

Update the `wp_die_handler()` method to pass the response into `WPDieException` so that `expectExceptionCode()` calls work as expected.

Follow-up to [1221/tests], [3934], [4009], [12309].

Props pbearne, jrf, mukesh27.
Fixes #53882.

git-svn-id: https://develop.svn.wordpress.org/trunk@51608 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Sergey Biryukov 2021-08-13 14:00:05 +00:00
parent eb6b517aec
commit 74edebac97
2 changed files with 48 additions and 4 deletions

View File

@ -452,11 +452,16 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Adapter_TestCase {
/**
* Throws an exception when called.
*
* @throws WPDieException Exception containing the message.
* @since UT (3.7.0)
* @since 5.9.0 Added the `$title` and `$args` parameters.
*
* @param string $message The `wp_die()` message.
* @throws WPDieException Exception containing the message and the response code.
*
* @param string|WP_Error $message The `wp_die()` message or WP_Error object.
* @param string $title The `wp_die()` title.
* @param string|array $args The `wp_die()` arguments.
*/
public function wp_die_handler( $message ) {
public function wp_die_handler( $message, $title, $args ) {
if ( is_wp_error( $message ) ) {
$message = $message->get_error_message();
}
@ -465,7 +470,12 @@ abstract class WP_UnitTestCase_Base extends PHPUnit_Adapter_TestCase {
$message = '0';
}
throw new WPDieException( $message );
$code = 0;
if ( isset( $args['response'] ) ) {
$code = $args['response'];
}
throw new WPDieException( $message, $code );
}
/**

View File

@ -0,0 +1,34 @@
<?php
/**
* Tests for the wp_nonce_ays() function.
*
* @since 5.9.0
*
* @group functions.php
* @covers ::wp_nonce_ays
*/
class Tests_Functions_wpNonceAys extends WP_UnitTestCase {
/**
* @ticket 53882
*/
public function test_wp_nonce_ays() {
$this->expectException( 'WPDieException' );
$this->expectExceptionMessage( 'The link you followed has expired.' );
$this->expectExceptionCode( 403 );
wp_nonce_ays( 'random_string' );
}
/**
* @ticket 53882
*/
public function test_wp_nonce_ays_log_out() {
$this->expectException( 'WPDieException' );
$this->expectExceptionMessageMatches( '#You are attempting to log out of Test Blog</p><p>Do you really want to <a href="http://example\.org/wp-login\.php\?action=logout&amp;_wpnonce=.{10}">log out</a>\?#m' );
$this->expectExceptionCode( 403 );
wp_nonce_ays( 'log-out' );
}
}