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 |
- |
|
|