Users: Provide a full user object when checking for a spammy multisite user
`is_user_spammy()` falls back to the current user if one is not provided. There is no current user during authentication, so the result is always `false`. Pass a user to fill the void. Adds tests for `wp_authenticate_spam_check()`. Props websupporter. Fixes #36546. git-svn-id: https://develop.svn.wordpress.org/trunk@37316 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
ff8553ea6b
commit
534f0e92a0
@ -302,7 +302,7 @@ function wp_authenticate_spam_check( $user ) {
|
||||
* @param bool $spammed Whether the user is considered a spammer.
|
||||
* @param WP_User $user User to check against.
|
||||
*/
|
||||
$spammed = apply_filters( 'check_is_user_spammed', is_user_spammy(), $user );
|
||||
$spammed = apply_filters( 'check_is_user_spammed', is_user_spammy( $user ), $user );
|
||||
|
||||
if ( $spammed )
|
||||
return new WP_Error( 'spammer_account', __( '<strong>ERROR</strong>: Your account has been marked as a spammer.' ) );
|
||||
|
46
tests/phpunit/tests/user/wpAuthenticateSpamCheck.php
Normal file
46
tests/phpunit/tests/user/wpAuthenticateSpamCheck.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @group user
|
||||
*/
|
||||
class Tests_User_WpAuthenticateSpamCheck extends WP_UnitTestCase {
|
||||
function test_wp_authenticate_spam_check_returns_user_when_single_site() {
|
||||
if ( is_multisite() ) {
|
||||
$this->markTestSkipped( 'This test applies to single site only.' );
|
||||
}
|
||||
|
||||
$user_id = self::factory()->user->create( array( 'role' => 'contributor' ) );
|
||||
$user = new WP_User( $user_id );
|
||||
$actual_user = wp_authenticate_spam_check( $user );
|
||||
wp_delete_user( $user_id );
|
||||
|
||||
$this->assertEquals( $user->user_login, $actual_user->user_login );
|
||||
}
|
||||
|
||||
function test_wp_authenticate_spam_check_returns_user_when_not_flagged() {
|
||||
if ( ! is_multisite() ) {
|
||||
$this->markTestSkipped( 'This test applies to multisite only.' );
|
||||
}
|
||||
|
||||
$user_id = self::factory()->user->create( array( 'role' => 'contributor' ) );
|
||||
$user = new WP_User( $user_id );
|
||||
$actual_user = wp_authenticate_spam_check( $user );
|
||||
wpmu_delete_user( $user_id );
|
||||
|
||||
$this->assertEquals( $user->user_login, $actual_user->user_login );
|
||||
}
|
||||
|
||||
function test_wp_authenticate_spam_check_returns_wp_error_when_flagged() {
|
||||
if ( ! is_multisite() ) {
|
||||
$this->markTestSkipped( 'This test applies to multisite only.' );
|
||||
}
|
||||
|
||||
$user_id = self::factory()->user->create( array( 'role' => 'contributor' ) );
|
||||
update_user_status( $user_id, 'spam', 1 );
|
||||
$user = new WP_User( $user_id );
|
||||
$actual_user = wp_authenticate_spam_check( $user );
|
||||
wpmu_delete_user( $user_id );
|
||||
|
||||
$this->assertInstanceOf( 'WP_Error', $actual_user );
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user