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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
##############################################
# Test for xmlrpc call to Bug.legal_values() #
##############################################
use 5.14.0;
use strict;
use warnings;
use FindBin qw($RealBin);
use lib "$RealBin/../lib", "$RealBin/../../local/lib/perl5";
use Test::More tests => 269;
use QA::Util;
my ($config, @clients) = get_rpc_clients();
use constant INVALID_PRODUCT_ID => -1;
use constant INVALID_FIELD_NAME => 'invalid_field';
use constant GLOBAL_FIELDS =>
qw(bug_severity bug_status op_sys priority rep_platform resolution
cf_qa_status cf_single_select);
use constant PRODUCT_FIELDS => qw(version target_milestone component);
my $products = $clients[0]->bz_get_products();
my $public_product = $products->{'Another Product'};
my $private_product = $products->{'QA-Selenium-TEST'};
my @all_tests;
for my $field (GLOBAL_FIELDS) {
push(@all_tests,
{ args => { field => $field },
test => "Logged-out user can get $field values" });
}
for my $field (PRODUCT_FIELDS) {
my @tests = (
{ args => { field => $field },
error => "argument was not set",
test => "$field can't be accessed without a value for 'product'",
},
{ args => { product_id => INVALID_PRODUCT_ID, field => $field },
error => "does not exist",
test => "$field cannot be accessed with an invalid product id",
},
{ args => { product_id => $private_product, field => $field },
error => "you don't have access",
test => "Logged-out user cannot access $field in private product"
},
{ args => { product_id => $public_product, field => $field },
test => "Logged-out user can access $field in a public product",
},
{ user => 'unprivileged',
args => { product_id => $private_product, field => $field },
error => "you don't have access",
test => "Unprivileged user cannot access $field in private product",
},
{ user => 'unprivileged',
args => { product_id => $public_product, field => $field },
test => "Logged-in user can access $field in public product",
},
{ user => 'QA_Selenium_TEST',
args => { product_id => $private_product, field => $field },
test => "Privileged user can access $field in a private product",
},
);
push(@all_tests, @tests);
}
my @extra_tests = (
{ args => { product_id => $private_product, },
error => "requires a field argument",
test => "Passing product_id without 'field' throws an error",
},
{ args => { field => INVALID_FIELD_NAME },
error => "Can't use \"" . INVALID_FIELD_NAME . "\" as a field name",
test => 'Invalid field name'
},
);
push(@all_tests, @extra_tests);
sub post_success {
my ($call) = @_;
cmp_ok(scalar @{ $call->result->{'values'} }, '>', 0,
'Got one or more values');
}
foreach my $rpc (@clients) {
$rpc->bz_run_tests(tests => \@all_tests, method => 'Bug.legal_values',
post_success => \&post_success);
}
|