forked from CakeDC/users
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGoogleAuthenticatorComponentTest.php
More file actions
128 lines (113 loc) · 3.96 KB
/
Copy pathGoogleAuthenticatorComponentTest.php
File metadata and controls
128 lines (113 loc) · 3.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<?php
namespace CakeDC\Users\Test\TestCase\Controller\Component;
use CakeDC\Users\Controller\Component\GoogleAuthenticatorComponent;
use CakeDC\Users\Exception\MissingEmailException;
use CakeDC\Users\Exception\UserNotFoundException;
use Cake\Controller\Controller;
use Cake\Core\Configure;
use Cake\Core\Plugin;
use Cake\Database\Exception;
use Cake\Event\Event;
use Cake\Network\Request;
use Cake\Network\Session;
use Cake\ORM\Entity;
use Cake\Routing\Exception\MissingRouteException;
use Cake\Routing\Router;
use Cake\TestSuite\TestCase;
use Cake\Utility\Security;
class GoogleAuthenticatorComponentTest extends TestCase
{
public $fixtures = [
'plugin.CakeDC/Users.users'
];
/**
* setUp method
*
* @return void
*/
public function setUp()
{
parent::setUp();
$this->backupUsersConfig = Configure::read('Users');
Router::reload();
Plugin::routes('CakeDC/Users');
Router::connect('/route/*', [
'plugin' => 'CakeDC/Users',
'controller' => 'Users',
'action' => 'requestResetPassword'
]);
Router::connect('/notAllowed/*', [
'plugin' => 'CakeDC/Users',
'controller' => 'Users',
'action' => 'edit'
]);
Security::salt('YJfIxfs2guVoUubWDYhG93b0qyJfIxfs2guwvniR2G0FgaC9mi');
Configure::write('App.namespace', 'Users');
Configure::write('Users.GoogleAuthenticator.login', true);
$this->request = $this->getMockBuilder('Cake\Network\Request')
->setMethods(['is', 'method'])
->getMock();
$this->request->expects($this->any())->method('is')->will($this->returnValue(true));
$this->response = $this->getMockBuilder('Cake\Network\Response')
->setMethods(['stop'])
->getMock();
$this->Controller = new Controller($this->request, $this->response);
$this->Registry = $this->Controller->components();
$this->Controller->GoogleAuthenticator = new GoogleAuthenticatorComponent($this->Registry);
}
/**
* tearDown method
*
* @return void
*/
public function tearDown()
{
parent::tearDown();
$_SESSION = [];
unset($this->Controller, $this->GoogleAuthenticator);
Configure::write('Users', $this->backupUsersConfig);
Configure::write('Users.GoogleAuthenticator.login', false);
}
/**
* Test initialize
*
*/
public function testInitialize()
{
$this->Registry->unload('GoogleAuthenticator');
$this->Controller->GoogleAuthenticator = new GoogleAuthenticatorComponent($this->Registry);
$this->assertInstanceOf('CakeDC\Users\Controller\Component\GoogleAuthenticatorComponent', $this->Controller->GoogleAuthenticator);
}
/**
* test base64 qr-code returned from component
* @return void
*/
public function testgetQRCodeImageAsDataUri()
{
$this->Controller->GoogleAuthenticator->initialize([]);
$result = $this->Controller->GoogleAuthenticator->getQRCodeImageAsDataUri('test@localhost.com', '123123');
$this->assertContains('data:image/png;base64', $result);
}
/**
* Making sure we return secret
* @return void
*/
public function testCreateSecret()
{
$this->Controller->GoogleAuthenticator->initialize([]);
$result = $this->Controller->GoogleAuthenticator->createSecret();
$this->assertNotEmpty($result);
}
/**
* Testing code verification in the component
* @return void
*/
public function testVerifyCode()
{
$this->Controller->GoogleAuthenticator->initialize([]);
$secret = $this->Controller->GoogleAuthenticator->createSecret();
$verificationCode = $this->Controller->GoogleAuthenticator->tfa->getCode($secret);
$verified = $this->Controller->GoogleAuthenticator->verifyCode($secret, $verificationCode);
$this->assertTrue($verified);
}
}