94 lines
3.0 KiB
Perl
94 lines
3.0 KiB
Perl
##############################################
|
|
# Test for xmlrpc call to Bug.legal_values() #
|
|
##############################################
|
|
|
|
use strict;
|
|
use warnings;
|
|
use lib qw(lib);
|
|
use Test::More tests => 193;
|
|
use QA::Util;
|
|
my ($xmlrpc, $jsonrpc, $config) = 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 = $xmlrpc->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 => "Can't use as a field name",
|
|
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 ($jsonrpc, $xmlrpc) {
|
|
$rpc->bz_run_tests(tests => \@all_tests, method => 'Bug.legal_values',
|
|
post_success => \&post_success);
|
|
}
|