File: AccessKeys.t

package info (click to toggle)
znuny 6.5.18-1
  • links: PTS
  • area: non-free
  • in suites: forky, sid
  • size: 205,344 kB
  • sloc: perl: 1,038,694; xml: 74,551; javascript: 65,276; sql: 23,574; sh: 417; makefile: 63
file content (82 lines) | stat: -rw-r--r-- 2,220 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# --
# Copyright (C) 2001-2021 OTRS AG, https://otrs.com/
# Copyright (C) 2021 Znuny GmbH, https://znuny.org/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --

use strict;
use warnings;
use utf8;

use Kernel::System::VariableCheck qw(:all);

use vars (qw($Self));

my $ConfigObject    = $Kernel::OM->Get('Kernel::Config');
my $SysConfigObject = $Kernel::OM->Get('Kernel::System::SysConfig');
my $HelperObject    = $Kernel::OM->Get('Kernel::System::UnitTest::Helper');

# Get all frontend modules with access key definitions.
my @Modules = $SysConfigObject->ConfigurationSearch(
    Search           => 'AccessKey',
    Category         => 'All',
    IncludeInvisible => 1,
);

# Check used access keys.
my %UsedAccessKeys;

my $Error;

MODULE:
for my $Module (@Modules) {
    my %SysConfig = $SysConfigObject->SettingGet(
        Name => $Module,
    );

    next MODULE if !IsHashRefWithData( $SysConfig{DefaultValue} );
    next MODULE if !defined $SysConfig{DefaultValue}->{AccessKey};
    next MODULE if !length $SysConfig{DefaultValue}->{AccessKey};

    my $AccessKey      = $SysConfig{DefaultValue}->{AccessKey};
    my $AccessKeyLower = lc $AccessKey;

    my $Name = $SysConfig{DefaultValue}->{Link} || $SysConfig{DefaultValue}->{Module} || '';
    my $Frontend;

    if ( $Module =~ /CustomerFrontend/i ) {
        $Frontend = 'CUSTOMER FRONTEND';
    }
    elsif ( $Module =~ /PublicFrontend/i ) {
        $Frontend = 'PUBLIC FRONTEND';
    }
    else {
        $Frontend = 'AGENT FRONTEND';
    }

    $Self->False(
        $UsedAccessKeys{$Frontend}->{$AccessKeyLower},
        "[$Frontend] Check if access key '$AccessKey' already exists ($Name)",
    );

    if ( !$Error && $UsedAccessKeys{$Frontend}->{$AccessKeyLower} ) {
        if ( !$Error ) {
            $Error = 1;
        }

        next MODULE;
    }

    $UsedAccessKeys{$Frontend}->{$AccessKeyLower} = $Name;
}

$Self->False(
    $Error,
    "List of all defined access keys: \n"
        . $Kernel::OM->Get('Kernel::System::YAML')->Dump( Data => \%UsedAccessKeys )
);

1;