diff options
Diffstat (limited to 'qa/t/webservice_bug_get.t')
-rw-r--r-- | qa/t/webservice_bug_get.t | 187 |
1 files changed, 105 insertions, 82 deletions
diff --git a/qa/t/webservice_bug_get.t b/qa/t/webservice_bug_get.t index cad5c3893..c87346c08 100644 --- a/qa/t/webservice_bug_get.t +++ b/qa/t/webservice_bug_get.t @@ -23,124 +23,147 @@ my $xmlrpc = $clients[0]; our $creation_time = DateTime->now(); our ($public_bug, $private_bug) = $xmlrpc->bz_create_test_bugs('private'); my $private_id = $private_bug->{id}; -my $public_id = $public_bug->{id}; +my $public_id = $public_bug->{id}; -my $base_url = $config->{browser_url} . "/" - . $config->{bugzilla_installation} . '/'; +my $base_url + = $config->{browser_url} . "/" . $config->{bugzilla_installation} . '/'; # Set a few fields on the private bug, including setting up # a dependency relationship. $xmlrpc->bz_log_in(PRIVATE_BUG_USER); -$xmlrpc->bz_call_success('Bug.update', { - ids => [$private_id], - blocks => { set => [$public_id] }, - dupe_of => $public_id, +$xmlrpc->bz_call_success( + 'Bug.update', + { + ids => [$private_id], + blocks => {set => [$public_id]}, + dupe_of => $public_id, is_creator_accessible => 0, - keywords => { set => ['test-keyword-1', 'test-keyword-2'] }, - see_also => { add => ["${base_url}show_bug.cgi?id=$public_id", - "https://bugzilla-dev.allizom.org/show_bug.cgi?id=123456"] }, - cf_qa_status => ['in progress', 'verified'], + keywords => {set => ['test-keyword-1', 'test-keyword-2']}, + see_also => { + add => [ + "${base_url}show_bug.cgi?id=$public_id", + "https://bugzilla-dev.allizom.org/show_bug.cgi?id=123456" + ] + }, + cf_qa_status => ['in progress', 'verified'], cf_single_select => 'two', -}, 'Update the private bug'); + }, + 'Update the private bug' +); $xmlrpc->bz_call_success('User.logout'); -$private_bug->{blocks} = [$public_id]; -$private_bug->{dupe_of} = $public_id; -$private_bug->{status} = 'RESOLVED'; -$private_bug->{is_open} = 0; -$private_bug->{resolution} = 'DUPLICATE'; +$private_bug->{blocks} = [$public_id]; +$private_bug->{dupe_of} = $public_id; +$private_bug->{status} = 'RESOLVED'; +$private_bug->{is_open} = 0; +$private_bug->{resolution} = 'DUPLICATE'; $private_bug->{is_creator_accessible} = 0; -$private_bug->{is_cc_accessible} = 1; -$private_bug->{keywords} = ['test-keyword-1', 'test-keyword-2']; -$private_bug->{see_also} = ["${base_url}show_bug.cgi?id=$public_id", - "https://bugzilla-dev.allizom.org/show_bug.cgi?id=123456"]; +$private_bug->{is_cc_accessible} = 1; +$private_bug->{keywords} = ['test-keyword-1', 'test-keyword-2']; +$private_bug->{see_also} = [ + "${base_url}show_bug.cgi?id=$public_id", + "https://bugzilla-dev.allizom.org/show_bug.cgi?id=123456" +]; $private_bug->{cf_qa_status} = ['in progress', 'verified']; $private_bug->{cf_single_select} = 'two'; -$public_bug->{depends_on} = [$private_id]; -$public_bug->{dupe_of} = undef; -$public_bug->{resolution} = ''; -$public_bug->{is_open} = 1; +$public_bug->{depends_on} = [$private_id]; +$public_bug->{dupe_of} = undef; +$public_bug->{resolution} = ''; +$public_bug->{is_open} = 1; $public_bug->{is_creator_accessible} = 1; -$public_bug->{is_cc_accessible} = 1; -$public_bug->{keywords} = []; +$public_bug->{is_cc_accessible} = 1; +$public_bug->{keywords} = []; + # Local Bugzilla bugs are automatically updated. -$public_bug->{see_also} = ["${base_url}show_bug.cgi?id=$private_id"]; -$public_bug->{cf_qa_status} = []; +$public_bug->{see_also} = ["${base_url}show_bug.cgi?id=$private_id"]; +$public_bug->{cf_qa_status} = []; $public_bug->{cf_single_select} = '---'; # Fill in the timetracking fields on the public bug. $xmlrpc->bz_log_in('admin'); -$xmlrpc->bz_call_success('Bug.update', { - ids => [$public_id], - deadline => '2038-01-01', +$xmlrpc->bz_call_success( + 'Bug.update', + { + ids => [$public_id], + deadline => '2038-01-01', estimated_time => '10.0', remaining_time => '5.0', -}); + } +); $xmlrpc->bz_call_success('User.logout'); # Populate other fields. -$public_bug->{classification} = 'Unclassified'; +$public_bug->{classification} = 'Unclassified'; $private_bug->{classification} = 'Unclassified'; -$private_bug->{groups} = ['QA-Selenium-TEST']; -$public_bug->{groups} = []; +$private_bug->{groups} = ['QA-Selenium-TEST']; +$public_bug->{groups} = []; # The user filing $private_bug doesn't have permission to set the status # or qa_contact, so they differ from normal $public_bug values. $private_bug->{qa_contact} = $config->{PRIVATE_BUG_USER . '_user_login'}; sub post_success { - my ($call, $t, $rpc) = @_; - - is(scalar @{ $call->result->{bugs} }, 1, "Got exactly one bug"); - my $bug = $call->result->{bugs}->[0]; - - if ($t->{user} && $t->{user} eq 'admin') { - ok(exists $bug->{estimated_time} && exists $bug->{remaining_time}, - 'Admin correctly gets time-tracking fields'); - is($bug->{deadline}, '2038-01-01', 'deadline is correct'); - cmp_ok($bug->{estimated_time}, '==', '10.0', - 'estimated_time is correct'); - cmp_ok($bug->{remaining_time}, '==', '5.0', - 'remaining_time is correct'); - } - else { - ok(!exists $bug->{estimated_time} && !exists $bug->{remaining_time}, - 'Time-tracking fields are not returned to non-privileged users'); - } - - if ($t->{user}) { - ok($bug->{update_token}, 'Update token returned for logged-in user'); - } - else { - ok(!exists $bug->{update_token}, - 'Update token not returned for logged-out users'); - } - - my $expect = $bug->{id} == $private_bug->{id} ? $private_bug : $public_bug; - - my @fields = sort keys %$expect; - push(@fields, 'creation_time', 'last_change_time'); - - $rpc->bz_test_bug(\@fields, $bug, $expect, $t, $creation_time); + my ($call, $t, $rpc) = @_; + + is(scalar @{$call->result->{bugs}}, 1, "Got exactly one bug"); + my $bug = $call->result->{bugs}->[0]; + + if ($t->{user} && $t->{user} eq 'admin') { + ok(exists $bug->{estimated_time} && exists $bug->{remaining_time}, + 'Admin correctly gets time-tracking fields'); + is($bug->{deadline}, '2038-01-01', 'deadline is correct'); + cmp_ok($bug->{estimated_time}, '==', '10.0', 'estimated_time is correct'); + cmp_ok($bug->{remaining_time}, '==', '5.0', 'remaining_time is correct'); + } + else { + ok( + !exists $bug->{estimated_time} && !exists $bug->{remaining_time}, + 'Time-tracking fields are not returned to non-privileged users' + ); + } + + if ($t->{user}) { + ok($bug->{update_token}, 'Update token returned for logged-in user'); + } + else { + ok(!exists $bug->{update_token}, + 'Update token not returned for logged-out users'); + } + + my $expect = $bug->{id} == $private_bug->{id} ? $private_bug : $public_bug; + + my @fields = sort keys %$expect; + push(@fields, 'creation_time', 'last_change_time'); + + $rpc->bz_test_bug(\@fields, $bug, $expect, $t, $creation_time); } my @tests = ( - @{ bug_tests($public_id, $private_id) }, - { args => { ids => [$public_id], - include_fields => ['id', 'summary', 'groups'] }, - test => 'include_fields', + @{bug_tests($public_id, $private_id)}, + { + args => {ids => [$public_id], include_fields => ['id', 'summary', 'groups']}, + test => 'include_fields', + }, + { + args => + {ids => [$public_id], exclude_fields => ['assigned_to', 'cf_qa_status']}, + test => 'exclude_fields' + }, + { + args => { + ids => [$public_id], + include_fields => ['id', 'summary', 'groups'], + exclude_fields => ['summary'] }, - { args => { ids => [$public_id], - exclude_fields => ['assigned_to', 'cf_qa_status'] }, - test => 'exclude_fields' }, - { args => { ids => [$public_id], - include_fields => ['id', 'summary', 'groups'], - exclude_fields => ['summary'] }, - test => 'exclude_fields overrides include_fields' }, + test => 'exclude_fields overrides include_fields' + }, ); foreach my $rpc (@clients) { - $rpc->bz_run_tests(tests => \@tests, method => 'Bug.get', - post_success => \&post_success); + $rpc->bz_run_tests( + tests => \@tests, + method => 'Bug.get', + post_success => \&post_success + ); } |