View | Details | Raw Unified | Return to bug 30588
Collapse All | Expand All

(-)a/t/db_dependent/selenium/authentication_2fa.t (-14 / +53 lines)
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
- 

Return to bug 30588