diff --git a/src/wp-admin/includes/class-wp-site-health.php b/src/wp-admin/includes/class-wp-site-health.php index de0d7cd8da332..51562a02fe112 100644 --- a/src/wp-admin/includes/class-wp-site-health.php +++ b/src/wp-admin/includes/class-wp-site-health.php @@ -1905,7 +1905,7 @@ public function get_test_insecure_registration() { $default_role = get_option( 'default_role' ); $result = array( - 'label' => __( 'Open Registration with privileged default role' ), + 'label' => __( 'New users are not given a privileged role' ), 'status' => 'good', 'badge' => array( 'label' => __( 'Security' ), @@ -1917,7 +1917,8 @@ public function get_test_insecure_registration() { ); if ( $users_can_register && in_array( $default_role, array( 'editor', 'administrator' ), true ) ) { - $result['description'] = __( 'Registration is open to anyone, and the default role is set to a privileged role.' ); + $result['label'] = __( 'Open registration with a privileged default role' ); + $result['description'] = '
' . __( 'Registration is open to anyone, and the default role is set to a privileged role.' ) . '
'; $result['status'] = 'critical'; $result['actions'] = sprintf( '', diff --git a/tests/phpunit/tests/admin/wpSiteHealthGetTestInsecureRegistration.php b/tests/phpunit/tests/admin/wpSiteHealthGetTestInsecureRegistration.php new file mode 100644 index 0000000000000..402dff0a4161f --- /dev/null +++ b/tests/phpunit/tests/admin/wpSiteHealthGetTestInsecureRegistration.php @@ -0,0 +1,109 @@ +set_registration( $users_can_register ); + update_option( 'default_role', $default_role ); + + $result = ( new WP_Site_Health() )->get_test_insecure_registration(); + + $this->assertSame( $expected_status, $result['status'] ); + $this->assertSame( 'insecure_registration', $result['test'] ); + } + + /** + * Data provider. + * + * @return array', $result['description'], 'The description should be wrapped in a paragraph like other Site Health results.' ); + $this->assertStringEndsWith( '
', $result['description'] ); + $this->assertStringContainsString( admin_url( 'options-general.php' ), $result['actions'] ); + } + + /** + * Opens or closes registration. + * + * On multisite, the `users_can_register` option is filtered to follow the + * network's `registration` setting, see users_can_register_signup_filter(). + * + * @param int $users_can_register Whether anyone can register. + */ + private function set_registration( $users_can_register ) { + if ( is_multisite() ) { + update_site_option( 'registration', $users_can_register ? 'user' : 'none' ); + } else { + update_option( 'users_can_register', $users_can_register ); + } + } +}