]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - tests/phpunit/includes/auth/UserDataAuthenticationRequestTest.php
MediaWiki 1.30.2-scripts
[autoinstallsdev/mediawiki.git] / tests / phpunit / includes / auth / UserDataAuthenticationRequestTest.php
1 <?php
2
3 namespace MediaWiki\Auth;
4
5 /**
6  * @group AuthManager
7  * @covers MediaWiki\Auth\UserDataAuthenticationRequest
8  */
9 class UserDataAuthenticationRequestTest extends AuthenticationRequestTestCase {
10
11         protected function getInstance( array $args = [] ) {
12                 return new UserDataAuthenticationRequest;
13         }
14
15         protected function setUp() {
16                 parent::setUp();
17                 $this->setMwGlobals( 'wgHiddenPrefs', [] );
18         }
19
20         /**
21          * @dataProvider providePopulateUser
22          * @param string $email Email to set
23          * @param string $realname Realname to set
24          * @param StatusValue $expect Expected return
25          */
26         public function testPopulateUser( $email, $realname, $expect ) {
27                 $user = new \User();
28                 $user->setEmail( 'default@example.com' );
29                 $user->setRealName( 'Fake Name' );
30
31                 $req = new UserDataAuthenticationRequest;
32                 $req->email = $email;
33                 $req->realname = $realname;
34                 $this->assertEquals( $expect, $req->populateUser( $user ) );
35                 if ( $expect->isOk() ) {
36                         $this->assertSame( $email ?: 'default@example.com', $user->getEmail() );
37                         $this->assertSame( $realname ?: 'Fake Name', $user->getRealName() );
38                 }
39         }
40
41         public static function providePopulateUser() {
42                 $good = \StatusValue::newGood();
43                 return [
44                         [ 'email@example.com', 'Real Name', $good ],
45                         [ 'email@example.com', '', $good ],
46                         [ '', 'Real Name', $good ],
47                         [ '', '', $good ],
48                         [ 'invalid-email', 'Real Name', \StatusValue::newFatal( 'invalidemailaddress' ) ],
49                 ];
50         }
51
52         /**
53          * @dataProvider provideLoadFromSubmission
54          */
55         public function testLoadFromSubmission(
56                 array $args, array $data, $expectState /* $hiddenPref, $enableEmail */
57         ) {
58                 list( $args, $data, $expectState, $hiddenPref, $enableEmail ) = func_get_args();
59                 $this->setMwGlobals( 'wgHiddenPrefs', $hiddenPref );
60                 $this->setMwGlobals( 'wgEnableEmail', $enableEmail );
61                 parent::testLoadFromSubmission( $args, $data, $expectState );
62         }
63
64         public function provideLoadFromSubmission() {
65                 $unhidden = [];
66                 $hidden = [ 'realname' ];
67
68                 return [
69                         'Empty request, unhidden, email enabled' => [
70                                 [],
71                                 [],
72                                 false,
73                                 $unhidden,
74                                 true
75                         ],
76                         'email + realname, unhidden, email enabled' => [
77                                 [],
78                                 $data = [ 'email' => 'Email', 'realname' => 'Name' ],
79                                 $data,
80                                 $unhidden,
81                                 true
82                         ],
83                         'email empty, unhidden, email enabled' => [
84                                 [],
85                                 $data = [ 'email' => '', 'realname' => 'Name' ],
86                                 $data,
87                                 $unhidden,
88                                 true
89                         ],
90                         'email omitted, unhidden, email enabled' => [
91                                 [],
92                                 [ 'realname' => 'Name' ],
93                                 false,
94                                 $unhidden,
95                                 true
96                         ],
97                         'realname empty, unhidden, email enabled' => [
98                                 [],
99                                 $data = [ 'email' => 'Email', 'realname' => '' ],
100                                 $data,
101                                 $unhidden,
102                                 true
103                         ],
104                         'realname omitted, unhidden, email enabled' => [
105                                 [],
106                                 [ 'email' => 'Email' ],
107                                 false,
108                                 $unhidden,
109                                 true
110                         ],
111                         'Empty request, hidden, email enabled' => [
112                                 [],
113                                 [],
114                                 false,
115                                 $hidden,
116                                 true
117                         ],
118                         'email + realname, hidden, email enabled' => [
119                                 [],
120                                 [ 'email' => 'Email', 'realname' => 'Name' ],
121                                 [ 'email' => 'Email' ],
122                                 $hidden,
123                                 true
124                         ],
125                         'email empty, hidden, email enabled' => [
126                                 [],
127                                 $data = [ 'email' => '', 'realname' => 'Name' ],
128                                 [ 'email' => '' ],
129                                 $hidden,
130                                 true
131                         ],
132                         'email omitted, hidden, email enabled' => [
133                                 [],
134                                 [ 'realname' => 'Name' ],
135                                 false,
136                                 $hidden,
137                                 true
138                         ],
139                         'realname empty, hidden, email enabled' => [
140                                 [],
141                                 $data = [ 'email' => 'Email', 'realname' => '' ],
142                                 [ 'email' => 'Email' ],
143                                 $hidden,
144                                 true
145                         ],
146                         'realname omitted, hidden, email enabled' => [
147                                 [],
148                                 [ 'email' => 'Email' ],
149                                 [ 'email' => 'Email' ],
150                                 $hidden,
151                                 true
152                         ],
153                         'email + realname, unhidden, email disabled' => [
154                                 [],
155                                 [ 'email' => 'Email', 'realname' => 'Name' ],
156                                 [ 'realname' => 'Name' ],
157                                 $unhidden,
158                                 false
159                         ],
160                         'email omitted, unhidden, email disabled' => [
161                                 [],
162                                 [ 'realname' => 'Name' ],
163                                 [ 'realname' => 'Name' ],
164                                 $unhidden,
165                                 false
166                         ],
167                         'email empty, unhidden, email disabled' => [
168                                 [],
169                                 [ 'email' => '', 'realname' => 'Name' ],
170                                 [ 'realname' => 'Name' ],
171                                 $unhidden,
172                                 false
173                         ],
174                 ];
175         }
176 }