Tests für access-String-Auswertung des Menüs.
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Wed, 1 Aug 2018 14:50:20 +0000 (16:50 +0200)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 13 Aug 2018 09:37:53 +0000 (11:37 +0200)
t/menu/parse_access_string.t [new file with mode: 0644]

diff --git a/t/menu/parse_access_string.t b/t/menu/parse_access_string.t
new file mode 100644 (file)
index 0000000..f1cbd42
--- /dev/null
@@ -0,0 +1,62 @@
+use strict;
+
+use Test::More;
+
+use lib 't';
+use Support::TestSetup;
+
+Support::TestSetup::login();
+
+use_ok 'SL::Menu';
+
+#my $menu = SL::Menu->new('user');
+my $menu = 'SL::Menu';
+
+my %node;
+$node{id} = 'test_node';
+
+$node{access} = 'sales_quotation_edit';
+ok($menu->parse_access_string(\%node), 'simple parse granted');
+
+$node{access} = 'no such right';
+ok(!$menu->parse_access_string(\%node), 'simple parse not granted');
+
+$node{access} = 'sales_quotation_edit)';
+eval {$menu->parse_access_string(\%node); ok(0, 'detect missing opening parenthesis'); 1} or do { ok(1, 'detect missing opening parenthesis'); };
+
+$node{access} = '(sales_quotation_edit';
+eval {$menu->parse_access_string(\%node); ok(0, 'detect missing closing parenthesis'); 1} or do { ok(1, 'detect missing closing parenthesis'); };
+
+$node{access} = 'sales_quotation_edit-';
+eval {$menu->parse_access_string(\%node); ok(0, 'detect unrecognized token'); 1} or do { ok(1, 'detect unrecognized token'); };
+
+$node{access} = 'sales_order_edit & sales_quotation_edit';
+ok($menu->parse_access_string(\%node), 'grant and grant');
+
+$node{access} = 'no_such_right & sales_quotation_edit';
+ok(!$menu->parse_access_string(\%node), 'not grant and grant');
+
+$node{access} = 'no_such_right & no_such_right';
+ok(!$menu->parse_access_string(\%node), 'not grant and not grant');
+
+$node{access} = 'sales_order_edit|sales_quotation_edit';
+ok($menu->parse_access_string(\%node), 'grant or grant');
+
+$node{access} = 'no_such_right | sales_quotation_edit';
+ok($menu->parse_access_string(\%node), 'not grant or grant');
+
+$node{access} = 'no_such_right | no_such_right';
+ok(!$menu->parse_access_string(\%node), 'not grant or not grant');
+
+$node{access} = '(sales_quotation_edit & sales_order_edit | (no_such_right & sales_order_edit))';
+ok($menu->parse_access_string(\%node), 'parenthesis 1');
+
+$node{access} = '(no_such_right & sales_order_edit | (no_such_right & sales_order_edit))';
+ok(!$menu->parse_access_string(\%node), 'parenthesis 2');
+
+$node{access} = 'sales_quotation_edit & client/feature_experimental';
+ok($menu->parse_access_string(\%node), 'client');
+
+done_testing;
+
+1;