Privacy: Mark processed requests as completed instead of confirmed.

r43008 refactored the request flow to make several improvements, but accidentally marked `completed` requests as `confirmed`. This commit restores the intended statuses, so that the data and corresponding UI reflect reality.

Props allendav, birgire.
Fixes #43913.


git-svn-id: https://develop.svn.wordpress.org/trunk@43183 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Ian Dunn 2018-05-08 23:28:47 +00:00
parent d4676a426c
commit a583f61558
2 changed files with 78 additions and 5 deletions

View File

@ -609,13 +609,13 @@ function _wp_privacy_resend_request( $request_id ) {
}
/**
* Marks a request as completed by the admin and logs the datetime.
* Marks a request as completed by the admin and logs the current timestamp.
*
* @since 4.9.6
* @access private
*
* @param int $request_id Request ID.
* @return int|WP_Error Request ID on succes or WP_Error.
* @return int|WP_Error $request Request ID on success or WP_Error.
*/
function _wp_privacy_completed_request( $request_id ) {
$request_id = absint( $request_id );
@ -625,11 +625,11 @@ function _wp_privacy_completed_request( $request_id ) {
return new WP_Error( 'privacy_request_error', __( 'Invalid request.' ) );
}
update_post_meta( $request_id, '_wp_user_request_confirmed_timestamp', time() );
update_post_meta( $request_id, '_wp_user_request_completed_timestamp', time() );
$request = wp_update_post( array(
'ID' => $request_id,
'post_status' => 'request-confirmed',
'post_status' => 'request-completed',
) );
return $request;

View File

@ -0,0 +1,73 @@
<?php
/**
* Test the `_wp_privacy_completed_request()` function.
*
* @package WordPress
* @subpackage UnitTests
* @since 4.9.6
*/
/**
* Tests_WpPrivacyCompletedRequest class.
*
* @group privacy
* @covers _wp_privacy_completed_request
*
* @since 4.9.6
*/
class Tests_WpPrivacyCompletedRequest extends WP_UnitTestCase {
/**
* Request ID
*
* @since 4.9.6
*
* @var int $request_id
*/
protected static $request_id;
/**
* Create fixtures.
*
* @param WP_UnitTest_Factory $factory Factory.
*/
public static function wpSetUpBeforeClass( $factory ) {
self::$request_id = wp_create_user_request( 'requester@example.com', 'export_personal_data' );
}
/**
* The function should return error for invalid request ID.
*
* @ticket 43913
*/
public function test_wp_privacy_completed_request_should_return_error_for_invalid_request_id() {
$actual = _wp_privacy_completed_request( 0 );
$this->assertWPError( $actual );
$this->assertSame( 'privacy_request_error', $actual->get_error_code() );
$actual = _wp_privacy_completed_request( PHP_INT_MAX );
$this->assertWPError( $actual );
$this->assertSame( 'privacy_request_error', $actual->get_error_code() );
}
/**
* The function should mark a request as completed.
*
* @ticket 43913
*/
public function test_wp_privacy_completed_request_should_mark_request_completed() {
$this->assertSame( 'request-pending', get_post_status( self::$request_id ) );
$this->assertSame( self::$request_id, _wp_privacy_completed_request( self::$request_id ) );
$this->assertSame( 'request-completed', get_post_status( self::$request_id ) );
}
/**
* The function should log the request timestamp.
*
* @ticket 43913
*/
public function test_wp_privacy_completed_request_should_log_request_timestamp() {
$this->assertEmpty( get_post_meta( self::$request_id, '_wp_user_request_completed_timestamp', true ) );
$this->assertSame( self::$request_id, _wp_privacy_completed_request( self::$request_id ) );
$this->assertNotEmpty( get_post_meta( self::$request_id, '_wp_user_request_completed_timestamp', true ) );
}
}