Merge "Selenium: replace UserLoginPage with BlankPage where possible"
[lhc/web/wiklou.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 = null, $enableEmail = null
57 ) {
58 $this->setMwGlobals( 'wgHiddenPrefs', $hiddenPref );
59 $this->setMwGlobals( 'wgEnableEmail', $enableEmail );
60 parent::testLoadFromSubmission( $args, $data, $expectState );
61 }
62
63 public function provideLoadFromSubmission() {
64 $unhidden = [];
65 $hidden = [ 'realname' ];
66
67 return [
68 'Empty request, unhidden, email enabled' => [
69 [],
70 [],
71 false,
72 $unhidden,
73 true
74 ],
75 'email + realname, unhidden, email enabled' => [
76 [],
77 $data = [ 'email' => 'Email', 'realname' => 'Name' ],
78 $data,
79 $unhidden,
80 true
81 ],
82 'email empty, unhidden, email enabled' => [
83 [],
84 $data = [ 'email' => '', 'realname' => 'Name' ],
85 $data,
86 $unhidden,
87 true
88 ],
89 'email omitted, unhidden, email enabled' => [
90 [],
91 [ 'realname' => 'Name' ],
92 false,
93 $unhidden,
94 true
95 ],
96 'realname empty, unhidden, email enabled' => [
97 [],
98 $data = [ 'email' => 'Email', 'realname' => '' ],
99 $data,
100 $unhidden,
101 true
102 ],
103 'realname omitted, unhidden, email enabled' => [
104 [],
105 [ 'email' => 'Email' ],
106 false,
107 $unhidden,
108 true
109 ],
110 'Empty request, hidden, email enabled' => [
111 [],
112 [],
113 false,
114 $hidden,
115 true
116 ],
117 'email + realname, hidden, email enabled' => [
118 [],
119 [ 'email' => 'Email', 'realname' => 'Name' ],
120 [ 'email' => 'Email' ],
121 $hidden,
122 true
123 ],
124 'email empty, hidden, email enabled' => [
125 [],
126 $data = [ 'email' => '', 'realname' => 'Name' ],
127 [ 'email' => '' ],
128 $hidden,
129 true
130 ],
131 'email omitted, hidden, email enabled' => [
132 [],
133 [ 'realname' => 'Name' ],
134 false,
135 $hidden,
136 true
137 ],
138 'realname empty, hidden, email enabled' => [
139 [],
140 $data = [ 'email' => 'Email', 'realname' => '' ],
141 [ 'email' => 'Email' ],
142 $hidden,
143 true
144 ],
145 'realname omitted, hidden, email enabled' => [
146 [],
147 [ 'email' => 'Email' ],
148 [ 'email' => 'Email' ],
149 $hidden,
150 true
151 ],
152 'email + realname, unhidden, email disabled' => [
153 [],
154 [ 'email' => 'Email', 'realname' => 'Name' ],
155 [ 'realname' => 'Name' ],
156 $unhidden,
157 false
158 ],
159 'email omitted, unhidden, email disabled' => [
160 [],
161 [ 'realname' => 'Name' ],
162 [ 'realname' => 'Name' ],
163 $unhidden,
164 false
165 ],
166 'email empty, unhidden, email disabled' => [
167 [],
168 [ 'email' => '', 'realname' => 'Name' ],
169 [ 'realname' => 'Name' ],
170 $unhidden,
171 false
172 ],
173 ];
174 }
175 }