|
Lines 46-52
SKIP: {
Link Here
|
| 46 |
my $driver = $s->driver; |
46 |
my $driver = $s->driver; |
| 47 |
|
47 |
|
| 48 |
subtest 'Setup' => sub { |
48 |
subtest 'Setup' => sub { |
| 49 |
plan tests => 10; |
49 |
plan tests => 12; |
| 50 |
|
50 |
|
| 51 |
my $mainpage = $s->base_url . q|mainpage.pl|; |
51 |
my $mainpage = $s->base_url . q|mainpage.pl|; |
| 52 |
$driver->get($mainpage); |
52 |
$driver->get($mainpage); |
|
Lines 63-84
SKIP: {
Link Here
|
| 63 |
$driver->get($s->base_url . q|members/two_factor_auth.pl|); |
63 |
$driver->get($s->base_url . q|members/two_factor_auth.pl|); |
| 64 |
like( $driver->get_title, qr(Two-factor authentication), 'Must be on the page with the pref on' ); |
64 |
like( $driver->get_title, qr(Two-factor authentication), 'Must be on the page with the pref on' ); |
| 65 |
|
65 |
|
| 66 |
is( $driver->find_element('//div[@class="two-factor-status"]')->get_text(), 'Status: Disabled', '2FA is disabled' ); |
66 |
is( |
|
|
67 |
$driver->find_element( '//div[@id="registration-status-disabled"]/div[@class="two-factor-status"]' )->get_text, |
| 68 |
'Status: Disabled', |
| 69 |
'2FA is disabled' |
| 70 |
); |
| 67 |
|
71 |
|
| 68 |
$driver->find_element('//form[@id="two-factor-auth"]//input[@type="submit"]')->click; |
72 |
is( |
|
|
73 |
$driver->find_element( '//div[@id="registration-status-enabled"]/div[@class="two-factor-status"]' )->get_text, |
| 74 |
'', # 'Status: Enabled' is not shown |
| 75 |
'2FA is disabled' |
| 76 |
); |
| 77 |
|
| 78 |
$driver->find_element('//*[@id="enable-2FA"]')->click; |
| 79 |
$s->wait_for_ajax; |
| 69 |
ok($driver->find_element('//img[@id="qr_code"]'), 'There is a QR code'); |
80 |
ok($driver->find_element('//img[@id="qr_code"]'), 'There is a QR code'); |
| 70 |
|
81 |
|
| 71 |
$s->fill_form({pin_code => 'wrong_code'}); |
82 |
$driver->find_element('//*[@id="pin_code"]')->send_keys('wrong_code'); |
| 72 |
$s->submit_form; |
83 |
$driver->find_element('//*[@id="register-2FA"]')->click; |
|
|
84 |
$s->wait_for_ajax; |
| 73 |
ok($driver->find_element('//div[@class="dialog error"][contains(text(), "Invalid PIN code")]')); |
85 |
ok($driver->find_element('//div[@class="dialog error"][contains(text(), "Invalid PIN code")]')); |
| 74 |
is( $patron->get_from_storage->secret, undef, 'secret is not set in DB yet' ); |
86 |
is( $patron->get_from_storage->secret, undef, 'secret is not set in DB yet' ); |
| 75 |
|
87 |
|
| 76 |
my $secret32 = $driver->find_element('//form[@id="two-factor-auth"]//input[@name="secret32"]')->get_value(); |
88 |
my $secret32 = $driver->find_element('//*[@id="secret32"]')->get_value(); |
| 77 |
my $auth = Koha::Auth::TwoFactorAuth->new({patron => $patron, secret32 => $secret32}); |
89 |
my $auth = Koha::Auth::TwoFactorAuth->new({patron => $patron, secret32 => $secret32}); |
| 78 |
my $code = $auth->code(); |
90 |
my $code = $auth->code(); |
| 79 |
$s->fill_form({pin_code => $code}); |
91 |
$driver->find_element('//*[@id="pin_code"]')->clear; |
| 80 |
$s->submit_form; |
92 |
$driver->find_element('//*[@id="pin_code"]')->send_keys($code); |
| 81 |
is( $driver->find_element('//div[@class="two-factor-status"]')->get_text(), 'Status: Enabled', '2FA is enabled' ); |
93 |
$driver->find_element('//*[@id="register-2FA"]')->click; |
|
|
94 |
# Wait for the response then go to the page, don't wait for the redirect |
| 95 |
$s->wait_for_ajax; |
| 96 |
$driver->capture_screenshot('selenium_failure_2.png'); |
| 97 |
$driver->get($s->base_url . q|members/two_factor_auth.pl|); |
| 98 |
is( |
| 99 |
$driver->find_element( '//div[@id="registration-status-disabled"]/div[@class="two-factor-status"]' )->get_text, |
| 100 |
'', # 'Status: Disabled' is not shown |
| 101 |
'2FA is enabled' |
| 102 |
); |
| 103 |
|
| 104 |
is( |
| 105 |
$driver->find_element( '//div[@id="registration-status-enabled"]/div[@class="two-factor-status"]' )->get_text, |
| 106 |
'Status: Enabled', |
| 107 |
'2FA is enabled' |
| 108 |
); |
| 109 |
|
| 82 |
$patron = $patron->get_from_storage; |
110 |
$patron = $patron->get_from_storage; |
| 83 |
is( $patron->decoded_secret, $secret32, 'encrypted secret is set in DB' ); |
111 |
is( $patron->decoded_secret, $secret32, 'encrypted secret is set in DB' ); |
| 84 |
|
112 |
|
|
Lines 202-208
SKIP: {
Link Here
|
| 202 |
}; |
230 |
}; |
| 203 |
|
231 |
|
| 204 |
subtest "Disable" => sub { |
232 |
subtest "Disable" => sub { |
| 205 |
plan tests => 4; |
233 |
plan tests => 6; |
| 206 |
|
234 |
|
| 207 |
my $mainpage = $s->base_url . q|mainpage.pl|; |
235 |
my $mainpage = $s->base_url . q|mainpage.pl|; |
| 208 |
$driver->get( $mainpage . q|?logout.x=1| ); |
236 |
$driver->get( $mainpage . q|?logout.x=1| ); |
|
Lines 217-223
SKIP: {
Link Here
|
| 217 |
$driver->get( $s->base_url . q|members/two_factor_auth.pl| ); |
245 |
$driver->get( $s->base_url . q|members/two_factor_auth.pl| ); |
| 218 |
|
246 |
|
| 219 |
is( |
247 |
is( |
| 220 |
$driver->find_element('//div[@class="two-factor-status"]')->get_text(), |
248 |
$driver->find_element( '//div[@id="registration-status-disabled"]/div[@class="two-factor-status"]' )->get_text, |
|
|
249 |
'', # 'Status: Disabled' is not shown |
| 250 |
'2FA is enabled' |
| 251 |
); |
| 252 |
|
| 253 |
is( |
| 254 |
$driver->find_element( '//div[@id="registration-status-enabled"]/div[@class="two-factor-status"]' )->get_text, |
| 221 |
'Status: Enabled', |
255 |
'Status: Enabled', |
| 222 |
'2FA is enabled' |
256 |
'2FA is enabled' |
| 223 |
); |
257 |
); |
|
Lines 225-233
SKIP: {
Link Here
|
| 225 |
$driver->find_element('//form[@id="two-factor-auth"]//input[@type="submit"]')->click; |
259 |
$driver->find_element('//form[@id="two-factor-auth"]//input[@type="submit"]')->click; |
| 226 |
|
260 |
|
| 227 |
is( |
261 |
is( |
| 228 |
$driver->find_element('//div[@class="two-factor-status"]')->get_text(), |
262 |
$driver->find_element( '//div[@id="registration-status-disabled"]/div[@class="two-factor-status"]' )->get_text, |
| 229 |
'Status: Disabled', |
263 |
'Status: Disabled', |
| 230 |
'2FA has been disabled' |
264 |
'2FA is disabled' |
|
|
265 |
); |
| 266 |
|
| 267 |
is( |
| 268 |
$driver->find_element( '//div[@id="registration-status-enabled"]/div[@class="two-factor-status"]' )->get_text, |
| 269 |
'', # 'Status: Enabled' is not shown |
| 270 |
'2FA is disabled' |
| 231 |
); |
271 |
); |
| 232 |
|
272 |
|
| 233 |
$patron = $patron->get_from_storage; |
273 |
$patron = $patron->get_from_storage; |
| 234 |
- |
|
|