Merge "Remove unused HashRing::newWithoutLocation() method"
[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, $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 }