X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/d57edfddd6c01f0ed6b1a84019649cdf6cddd5f8..83d871ca0d985c6d586b323bf96161afb510ebf6:/tests/phpunit/includes/auth/UserDataAuthenticationRequestTest.php diff --git a/tests/phpunit/includes/auth/UserDataAuthenticationRequestTest.php b/tests/phpunit/includes/auth/UserDataAuthenticationRequestTest.php new file mode 100644 index 00000000..7dea123c --- /dev/null +++ b/tests/phpunit/includes/auth/UserDataAuthenticationRequestTest.php @@ -0,0 +1,176 @@ +setMwGlobals( 'wgHiddenPrefs', [] ); + } + + /** + * @dataProvider providePopulateUser + * @param string $email Email to set + * @param string $realname Realname to set + * @param StatusValue $expect Expected return + */ + public function testPopulateUser( $email, $realname, $expect ) { + $user = new \User(); + $user->setEmail( 'default@example.com' ); + $user->setRealName( 'Fake Name' ); + + $req = new UserDataAuthenticationRequest; + $req->email = $email; + $req->realname = $realname; + $this->assertEquals( $expect, $req->populateUser( $user ) ); + if ( $expect->isOk() ) { + $this->assertSame( $email ?: 'default@example.com', $user->getEmail() ); + $this->assertSame( $realname ?: 'Fake Name', $user->getRealName() ); + } + } + + public static function providePopulateUser() { + $good = \StatusValue::newGood(); + return [ + [ 'email@example.com', 'Real Name', $good ], + [ 'email@example.com', '', $good ], + [ '', 'Real Name', $good ], + [ '', '', $good ], + [ 'invalid-email', 'Real Name', \StatusValue::newFatal( 'invalidemailaddress' ) ], + ]; + } + + /** + * @dataProvider provideLoadFromSubmission + */ + public function testLoadFromSubmission( + array $args, array $data, $expectState /* $hiddenPref, $enableEmail */ + ) { + list( $args, $data, $expectState, $hiddenPref, $enableEmail ) = func_get_args(); + $this->setMwGlobals( 'wgHiddenPrefs', $hiddenPref ); + $this->setMwGlobals( 'wgEnableEmail', $enableEmail ); + parent::testLoadFromSubmission( $args, $data, $expectState ); + } + + public function provideLoadFromSubmission() { + $unhidden = []; + $hidden = [ 'realname' ]; + + return [ + 'Empty request, unhidden, email enabled' => [ + [], + [], + false, + $unhidden, + true + ], + 'email + realname, unhidden, email enabled' => [ + [], + $data = [ 'email' => 'Email', 'realname' => 'Name' ], + $data, + $unhidden, + true + ], + 'email empty, unhidden, email enabled' => [ + [], + $data = [ 'email' => '', 'realname' => 'Name' ], + $data, + $unhidden, + true + ], + 'email omitted, unhidden, email enabled' => [ + [], + [ 'realname' => 'Name' ], + false, + $unhidden, + true + ], + 'realname empty, unhidden, email enabled' => [ + [], + $data = [ 'email' => 'Email', 'realname' => '' ], + $data, + $unhidden, + true + ], + 'realname omitted, unhidden, email enabled' => [ + [], + [ 'email' => 'Email' ], + false, + $unhidden, + true + ], + 'Empty request, hidden, email enabled' => [ + [], + [], + false, + $hidden, + true + ], + 'email + realname, hidden, email enabled' => [ + [], + [ 'email' => 'Email', 'realname' => 'Name' ], + [ 'email' => 'Email' ], + $hidden, + true + ], + 'email empty, hidden, email enabled' => [ + [], + $data = [ 'email' => '', 'realname' => 'Name' ], + [ 'email' => '' ], + $hidden, + true + ], + 'email omitted, hidden, email enabled' => [ + [], + [ 'realname' => 'Name' ], + false, + $hidden, + true + ], + 'realname empty, hidden, email enabled' => [ + [], + $data = [ 'email' => 'Email', 'realname' => '' ], + [ 'email' => 'Email' ], + $hidden, + true + ], + 'realname omitted, hidden, email enabled' => [ + [], + [ 'email' => 'Email' ], + [ 'email' => 'Email' ], + $hidden, + true + ], + 'email + realname, unhidden, email disabled' => [ + [], + [ 'email' => 'Email', 'realname' => 'Name' ], + [ 'realname' => 'Name' ], + $unhidden, + false + ], + 'email omitted, unhidden, email disabled' => [ + [], + [ 'realname' => 'Name' ], + [ 'realname' => 'Name' ], + $unhidden, + false + ], + 'email empty, unhidden, email disabled' => [ + [], + [ 'email' => '', 'realname' => 'Name' ], + [ 'realname' => 'Name' ], + $unhidden, + false + ], + ]; + } +}