From 815a8a00f7253fa67711609b589beec73cbcee05 Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Tue, 26 Jul 2022 14:34:56 +0200
Subject: [PATCH] Bug 30588: Adjust existing selenium tests
Sponsored-by: Rijksmuseum, Netherlands
---
t/db_dependent/selenium/authentication_2fa.t | 66 ++++++++++++++++----
1 file changed, 53 insertions(+), 13 deletions(-)
diff --git a/t/db_dependent/selenium/authentication_2fa.t b/t/db_dependent/selenium/authentication_2fa.t
index c48b8b1ffa2..a917e191f86 100755
--- a/t/db_dependent/selenium/authentication_2fa.t
+++ b/t/db_dependent/selenium/authentication_2fa.t
@@ -46,7 +46,7 @@ SKIP: {
my $driver = $s->driver;
subtest 'Setup' => sub {
- plan tests => 10;
+ plan tests => 12;
my $mainpage = $s->base_url . q|mainpage.pl|;
$driver->get($mainpage);
@@ -63,22 +63,50 @@ SKIP: {
$driver->get($s->base_url . q|members/two_factor_auth.pl|);
like( $driver->get_title, qr(Two-factor authentication), 'Must be on the page with the pref on' );
- is( $driver->find_element('//div[@class="two-factor-status"]')->get_text(), 'Status: Disabled', '2FA is disabled' );
+ is(
+ $driver->find_element( '//div[@id="registration-status-disabled"]/div[@class="two-factor-status"]' )->get_text,
+ 'Status: Disabled',
+ '2FA is disabled'
+ );
- $driver->find_element('//form[@id="two-factor-auth"]//input[@type="submit"]')->click;
+ is(
+ $driver->find_element( '//div[@id="registration-status-enabled"]/div[@class="two-factor-status"]' )->get_text,
+ '', # 'Status: Enabled' is not shown
+ '2FA is disabled'
+ );
+
+ $driver->find_element('//*[@id="enable-2FA"]')->click;
+ $s->wait_for_ajax;
ok($driver->find_element('//img[@id="qr_code"]'), 'There is a QR code');
- $s->fill_form({pin_code => 'wrong_code'});
- $s->submit_form;
+ $driver->find_element('//*[@id="pin_code"]')->send_keys('wrong_code');
+ $driver->find_element('//*[@id="register-2FA"]')->click;
+ $s->wait_for_ajax;
ok($driver->find_element('//div[@class="dialog error"][contains(text(), "Invalid PIN code")]'));
is( $patron->get_from_storage->secret, undef, 'secret is not set in DB yet' );
- my $secret32 = $driver->find_element('//form[@id="two-factor-auth"]//input[@name="secret32"]')->get_value();
+ my $secret32 = $driver->find_element('//*[@id="secret32"]')->get_value();
my $auth = Koha::Auth::TwoFactorAuth->new({patron => $patron, secret32 => $secret32});
my $code = $auth->code();
- $s->fill_form({pin_code => $code});
- $s->submit_form;
- is( $driver->find_element('//div[@class="two-factor-status"]')->get_text(), 'Status: Enabled', '2FA is enabled' );
+ $driver->find_element('//*[@id="pin_code"]')->clear;
+ $driver->find_element('//*[@id="pin_code"]')->send_keys($code);
+ $driver->find_element('//*[@id="register-2FA"]')->click;
+ # Wait for the response then go to the page, don't wait for the redirect
+ $s->wait_for_ajax;
+ $driver->capture_screenshot('selenium_failure_2.png');
+ $driver->get($s->base_url . q|members/two_factor_auth.pl|);
+ is(
+ $driver->find_element( '//div[@id="registration-status-disabled"]/div[@class="two-factor-status"]' )->get_text,
+ '', # 'Status: Disabled' is not shown
+ '2FA is enabled'
+ );
+
+ is(
+ $driver->find_element( '//div[@id="registration-status-enabled"]/div[@class="two-factor-status"]' )->get_text,
+ 'Status: Enabled',
+ '2FA is enabled'
+ );
+
$patron = $patron->get_from_storage;
is( $patron->decoded_secret, $secret32, 'encrypted secret is set in DB' );
@@ -202,7 +230,7 @@ SKIP: {
};
subtest "Disable" => sub {
- plan tests => 4;
+ plan tests => 6;
my $mainpage = $s->base_url . q|mainpage.pl|;
$driver->get( $mainpage . q|?logout.x=1| );
@@ -217,7 +245,13 @@ SKIP: {
$driver->get( $s->base_url . q|members/two_factor_auth.pl| );
is(
- $driver->find_element('//div[@class="two-factor-status"]')->get_text(),
+ $driver->find_element( '//div[@id="registration-status-disabled"]/div[@class="two-factor-status"]' )->get_text,
+ '', # 'Status: Disabled' is not shown
+ '2FA is enabled'
+ );
+
+ is(
+ $driver->find_element( '//div[@id="registration-status-enabled"]/div[@class="two-factor-status"]' )->get_text,
'Status: Enabled',
'2FA is enabled'
);
@@ -225,9 +259,15 @@ SKIP: {
$driver->find_element('//form[@id="two-factor-auth"]//input[@type="submit"]')->click;
is(
- $driver->find_element('//div[@class="two-factor-status"]')->get_text(),
+ $driver->find_element( '//div[@id="registration-status-disabled"]/div[@class="two-factor-status"]' )->get_text,
'Status: Disabled',
- '2FA has been disabled'
+ '2FA is disabled'
+ );
+
+ is(
+ $driver->find_element( '//div[@id="registration-status-enabled"]/div[@class="two-factor-status"]' )->get_text,
+ '', # 'Status: Enabled' is not shown
+ '2FA is disabled'
);
$patron = $patron->get_from_storage;
--
2.25.1