bugzilla-4intranet/qa/t/webservice_bug_legal_values.t

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);
}