3 use PHPUnit\Framework\MockObject\MockObject;
4 use PHPUnit\Framework\TestCase;
5 require_once(
'UserLogin.php');
6 require_once(
'CuAdmin.php');
7 require_once(
'User.php');
9 require_once(
'cu_credentials.i');
10 require_once(
'hcuEnv.i');
22 private $creditUnion =
'CRUISECU';
23 private $userName =
'Methuselah';
24 private $password =
'password';
39 $this->cuAdminData = [
40 'cu' => $this->creditUnion,
46 'lastupdate' =>
'Fri May 23 04:32 PM 2008',
49 'pname' =>
'We are Testy',
54 "confidence" =>
'HIGH',
55 'cuuser_group_id' => 31,
56 'email' =>
'homer@homecu.net',
58 'flog' =>
'2013/09/16 12:34:56',
61 'llog' =>
'2016/07/08 11:29:56',
62 'mfaquest' =>
'{"answers":{"54":"Boise","64":"Boise","65":"Boise"},"challenge":0}',
64 'passwd' =>
'$2y$10$QfUKW3O8wmyK9E.2A5DhveiSDasbBUOY6rhM53H2Fe0bkWRY83En.',
65 'pchange' =>
'2019-06-11T12:34:56.123456Z',
66 'primary_account' =>
'admin',
69 'user_name' =>
'Methuselah',
75 $classCuAdmin =
new ReflectionClass(CuAdmin::class);
76 $this->cuAdminLoad = $classCuAdmin->getMethod(
'Load');
77 $this->cuAdminLoad->setAccessible(
true);
79 $classUser =
new ReflectionClass(User::class);
80 $this->userLoad = $classUser->getMethod(
'Load');
81 $this->userLoad->setAccessible(
true);
89 $this->cuAdminRepo = $this
90 ->getMockBuilder(CuAdminRepo::class)
91 ->setMethods([
'Read'])
94 ->expects(static::any())
96 ->with($this->creditUnion)
97 ->willReturn($this->cuAdminData);
98 $this->userRepo = $this
99 ->getMockBuilder(UserRepo::class)
100 ->setMethods([
'Read'])
103 ->expects(static::any())
105 ->with($this->userName)
106 ->willReturn($this->userData);
108 $user =
new User($this->userName, $this->creditUnion, $this->userRepo);
109 $cuAdmin =
new CuAdmin($this->creditUnion, $this->cuAdminRepo);
112 static::assertInstanceOf(
'UserLogin', $login);
121 $this->cuAdminRepo = $this
122 ->getMockBuilder(CuAdminRepo::class)
123 ->setMethods([
'Read'])
125 $this->userRepo = $this
126 ->getMockBuilder(UserRepo::class)
127 ->setMethods([
'Read'])
130 ->expects(static::any())
132 ->with($this->creditUnion)
133 ->will(static::returnCallback(
function(){
return $this->cuAdminData;}));
135 ->expects(static::any())
137 ->with($this->userName)
138 ->will(static::returnCallback(
function(){
return $this->userData;}));
140 $cuAdmin =
new CuAdmin($this->creditUnion, $this->cuAdminRepo);
141 $user =
new User($this->userName, $this->creditUnion, $this->userRepo);
144 $login->ValidateUser($this->password);
147 static::assertFalse($login->IsAccountLocked());
150 $this->userData[
'failedremain'] = 0;
151 $this->userLoad->invoke($user);
152 static::assertTrue($login->IsAccountLocked());
155 $this->userData[
'fchange'] =
'Y';
156 $this->userData[
'fremain'] = 0;
157 $this->userLoad->invoke($user);
158 static::assertTrue($login->IsAccountLocked());
161 $this->cuAdminData[
'flagset3'] = CuAdmin::CU3_MFA_AUTHCODE;
162 $this->data[
'userflags'] = User::MEM_FORCE_RESET;
163 $this->data[
'fremain'] = 0;
164 $this->cuAdminLoad->invoke($cuAdmin);
165 $this->userLoad->invoke($user);
166 static::assertTrue($login->IsAccountLocked());
169 $this->cuAdminData[
'flagset3'] = CuAdmin::CU3_MFA_AUTHCODE;
170 $this->cuAdminData[
'min_chlng_qst'] = 10;
171 $this->cuAdminLoad->invoke($cuAdmin);
172 $this->userData[
'fremain'] = 0;
173 $this->userLoad->invoke($user);
174 static::assertTrue($login->IsAccountLocked());
177 $this->cuAdminData[
'flagset2'] = CuAdmin::CU2_ALIAS_REQ;
178 $this->cuAdminLoad->invoke($cuAdmin);
179 $this->userData[
'user_name'] =
'12345';
180 $this->userData[
'fremain'] = 0;
181 $this->userLoad->invoke($user);
182 static::assertTrue($login->IsAccountLocked());
191 $this->cuAdminRepo = $this
192 ->getMockBuilder(CuAdminRepo::class)
193 ->setMethods([
'Read'])
195 $this->userRepo = $this
196 ->getMockBuilder(UserRepo::class)
197 ->setMethods([
'Read'])
200 ->expects(static::any())
202 ->with($this->creditUnion)
203 ->will(static::returnCallback(
function(){
return $this->cuAdminData;}));
205 ->expects(static::any())
207 ->with($this->userName)
208 ->will(static::returnCallback(
function(){
return $this->userData;}));
210 $user =
new User($this->userName, $this->creditUnion, $this->userRepo);
211 $cuAdmin =
new CuAdmin($this->creditUnion, $this->cuAdminRepo);
213 static::assertFalse($login->IsValidDeviceCookie($this->creditUnion));
221 $this->cuAdminRepo = $this
222 ->getMockBuilder(CuAdminRepo::class)
223 ->setMethods([
'Read'])
225 $this->userRepo = $this
226 ->getMockBuilder(UserRepo::class)
227 ->setMethods([
'Read'])
230 ->expects(static::any())
232 ->with($this->userName)
233 ->willReturn($this->userData);
235 ->expects(static::any())
237 ->with($this->creditUnion)
238 ->willReturn($this->cuAdminData);
240 $user =
new User($this->userName, $this->creditUnion, $this->userRepo);
241 $cuAdmin =
new CuAdmin($this->creditUnion, $this->cuAdminRepo);
243 static::assertTrue($login->ValidateUser($this->password));
244 static::assertFalse($login->ValidateUser(
'notpassword'));
253 $this->cuAdminRepo = $this
254 ->getMockBuilder(CuAdminRepo::class)
255 ->setMethods([
'Read'])
257 $this->userRepo = $this
258 ->getMockBuilder(UserRepo::class)
259 ->setMethods([
'Read'])
262 ->expects(static::any())
264 ->with($this->creditUnion)
265 ->will(static::returnCallback(
function(){
return $this->cuAdminData;}));
267 ->expects(static::any())
269 ->with($this->userName)
270 ->will(static::returnCallback(
function(){
return $this->userData;}));
272 $user =
new User($this->userName, $this->creditUnion, $this->userRepo);
273 $cuAdmin =
new CuAdmin($this->creditUnion, $this->cuAdminRepo);
275 static::assertTrue($login->IsMFAMode());
278 $this->cuAdminData[
'flagset3'] = 131079;
279 $this->cuAdminLoad->invoke($cuAdmin);
280 $this->userLoad->invoke($user);
281 static::assertFalse($login->IsMFAMode());
testIsValidDeviceCookie()