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

(-)a/t/db_dependent/Koha/Pseudonymization.t (-1 / +71 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
3
# Copyright 2019 Koha Development team
4
#
5
# This file is part of Koha
6
#
7
# Koha is free software; you can redistribute it and/or modify it
8
# under the terms of the GNU General Public License as published by
9
# the Free Software Foundation; either version 3 of the License, or
10
# (at your option) any later version.
11
#
12
# Koha is distributed in the hope that it will be useful, but
13
# WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
# GNU General Public License for more details.
16
#
17
# You should have received a copy of the GNU General Public License
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20
use Modern::Perl;
21
22
use Test::More tests => 1;
23
24
use Koha::Database;
25
use Koha::Patrons;
26
27
use t::lib::TestBuilder;
28
use t::lib::Mocks;
29
30
my $schema  = Koha::Database->new->schema;
31
my $builder = t::lib::TestBuilder->new;
32
33
subtest 'Koha::Anonymized::Patrons tests' => sub {
34
35
    plan tests => 9;
36
37
    $schema->storage->txn_begin;
38
39
    t::lib::Mocks::mock_config( 'key', '$2a$08$9lmorEKnwQloheaCLFIfje' );
40
41
    my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
42
    my $patron_info = $patron->unblessed;
43
    delete $patron_info->{borrowernumber};
44
    $patron->delete;
45
46
    t::lib::Mocks::mock_preference( 'Pseudonymization', 0 );
47
    $patron = Koha::Patron->new($patron_info)->store;
48
    my $anonymized = Koha::Anonymized::Patrons->find_from_borrowernumber( $patron->borrowernumber );
49
    is( $anonymized, undef, 'No anonymized patron if Pseudonymization is off' );
50
    $patron->delete;
51
52
    t::lib::Mocks::mock_preference( 'Pseudonymization', 1 );
53
    t::lib::Mocks::mock_preference( 'PseudonymizationPatronFields', 'branchcode,categorycode,sort1' );
54
    $patron     = Koha::Patron->new($patron_info)->store;
55
    $anonymized = Koha::Anonymized::Patrons->find_from_borrowernumber( $patron->borrowernumber );
56
    like( $anonymized->hashed_borrowernumber, qr{^\$2a\$08\$}, "The hashed_borrowernumber must be a bcrypt hash" );
57
    is( $anonymized->branchcode,   $patron_info->{branchcode}, "branchcode should be copied" );
58
    is( $anonymized->categorycode, $patron_info->{categorycode}, "categorycode should be copied" );
59
    is( $anonymized->sort1,        $patron_info->{sort1}, "sort1 should be copied" );
60
    is( $anonymized->country,      undef, "country should not be copied" );
61
    is( $anonymized->sort2,        undef, "sort2 should not be copied" );
62
63
    my $hashed_borrowernumber = $anonymized->hashed_borrowernumber;
64
    $patron->sort1("another sort1")->store;
65
    $anonymized = Koha::Anonymized::Patrons->find_from_borrowernumber( $patron->borrowernumber );
66
    is( $anonymized->hashed_borrowernumber, $hashed_borrowernumber, "On update original hash should be preserved" );
67
    is( $patron->sort1, "another sort1", "correctly updated" );
68
    $patron->delete;
69
70
    $schema->storage->txn_rollback;
71
};

Return to bug 24151