summaryrefslogtreecommitdiffstats
path: root/extensions/Push/t/ReviewBoard.t
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/Push/t/ReviewBoard.t')
-rw-r--r--extensions/Push/t/ReviewBoard.t225
1 files changed, 0 insertions, 225 deletions
diff --git a/extensions/Push/t/ReviewBoard.t b/extensions/Push/t/ReviewBoard.t
deleted file mode 100644
index c752e34ef..000000000
--- a/extensions/Push/t/ReviewBoard.t
+++ /dev/null
@@ -1,225 +0,0 @@
-#!/usr/bin/perl -T
-# 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.
-use strict;
-use warnings;
-use lib qw( . lib local/lib/perl5 );
-
-use Test::More;
-use Bugzilla;
-use Bugzilla::Extension;
-use Bugzilla::Attachment;
-use Scalar::Util 'blessed';
-
-BEGIN {
- eval {
- require Test::LWP::UserAgent;
- require Test::MockObject;
- };
- if ($@) {
- plan skip_all =>
- 'Tests require Test::LWP::UserAgent and Test::MockObject';
- exit;
- }
-}
-
-BEGIN {
- Bugzilla->extensions; # load all of them
- use_ok 'Bugzilla::Extension::Push::Connector::ReviewBoard::Client';
- use_ok 'Bugzilla::Extension::Push::Constants';
-}
-
-my ($push) = grep { blessed($_) eq 'Bugzilla::Extension::Push' } @{Bugzilla->extensions };
-my $connectors = $push->_get_instance->connectors;
-my $con = $connectors->by_name('ReviewBoard');
-
-my $ua_204 = Test::LWP::UserAgent->new;
-$ua_204->map_response(
- qr{https://reviewboard-dev\.allizom\.org/api/review-requests/\d+},
- HTTP::Response->new('204'));
-
-my $ua_404 = Test::LWP::UserAgent->new;
-$ua_404->map_response(
- qr{https://reviewboard-dev\.allizom\.org/api/review-requests/\d+},
- HTTP::Response->new('404', undef, undef, q[{ "err": { "code": 100, "msg": "Object does not exist" }, "stat": "fail" }]));
-
-# forbidden
-my $ua_403 = Test::LWP::UserAgent->new;
-$ua_403->map_response(
- qr{https://reviewboard-dev\.allizom\.org/api/review-requests/\d+},
- HTTP::Response->new('403', undef, undef, q[ {"err":{"code":101,"msg":"You don't have permission for this"},"stat":"fail"}]));
-
-# not logged in
-my $ua_401 = Test::LWP::UserAgent->new;
-$ua_401->map_response(
- qr{https://reviewboard-dev\.allizom\.org/api/review-requests/\d+},
- HTTP::Response->new('401', undef, undef, q[ { "err": { "code": 103, "msg": "You are not logged in" }, "stat": "fail" } ]));
-
-# not logged in
-my $ua_500 = Test::LWP::UserAgent->new;
-$ua_500->map_response(
- qr{https://reviewboard-dev\.allizom\.org/api/review-requests/\d+},
- HTTP::Response->new('500'));
-
-$con->client->{useragent} = $ua_204;
-$con->config->{base_uri} = 'https://reviewboard-dev.allizom.org';
-$con->client->{base_uri} = 'https://reviewboard-dev.allizom.org';
-
-{
- my $msg = message(
- event => {
- routing_key => 'attachment.modify:is_private',
- target => 'attachment',
- },
- attachment => {
- is_private => 1,
- content_type => 'text/plain',
- bug => { id => 1, is_private => 0 },
- },
- );
-
- ok(not($con->should_send($msg)), "text/plain message should not be sent");
-}
-
-my $data = slurp("extensions/Push/t/rblink.txt");
-Bugzilla::User::DEFAULT_USER->{userid} = 42;
-Bugzilla->set_user(Bugzilla::User->super_user);
-diag " " . Bugzilla::User->super_user->id;
-
-my $dbh = Bugzilla->dbh;
-$dbh->bz_start_transaction;
-my $timestamp = $dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)');
-my $bug = Bugzilla::Bug->new({id => 9000});
-my $attachment = Bugzilla::Attachment->create({
- bug => $bug,
- creation_ts => $timestamp,
- data => $data,
- attach_size => length($data),
- description => "rblink.txt",
- filename => "rblink.txt",
- isprivate => 1,
- ispatch => 0,
- mimetype => 'text/x-review-board-request'
-});
-diag "".$attachment->id;
-$dbh->bz_commit_transaction;
-
-{
- my $msg = message(
- event => {
- routing_key => 'attachment.modify:cc,is_private',
- target => 'attachment',
- },
- attachment => {
- id => $attachment->id,
- is_private => 1,
- content_type => 'text/x-review-board-request',
- bug => { id => $bug->id, is_private => 0 },
- },
- );
- ok($con->should_send($msg), "rb attachment should be sent");
-
- {
- my ($rv, $err) = $con->send($msg);
- is($rv, PUSH_RESULT_OK, "good push result");
- diag $err if $err;
- }
-
- {
- local $con->client->{useragent} = $ua_404;
- my ($rv, $err) = $con->send($msg);
- is($rv, PUSH_RESULT_OK, "good push result for 404");
- diag $err if $err;
- }
-
-
- {
- local $con->client->{useragent} = $ua_403;
- my ($rv, $err) = $con->send($msg);
- is($rv, PUSH_RESULT_TRANSIENT, "transient error on 403");
- diag $err if $err;
- }
-
-
- {
- local $con->client->{useragent} = $ua_401;
- my ($rv, $err) = $con->send($msg);
- is($rv, PUSH_RESULT_TRANSIENT, "transient error on 401");
- diag $err if $err;
- }
-
- {
- local $con->client->{useragent} = $ua_500;
- my ($rv, $err) = $con->send($msg);
- is($rv, PUSH_RESULT_TRANSIENT, "transient error on 500");
- diag $err if $err;
- }
-}
-
-{
- my $msg = message(
- event => {
- routing_key => 'bug.modify:is_private',
- target => 'bug',
- },
- bug => {
- is_private => 1,
- id => $bug->id,
- },
- );
-
- ok($con->should_send($msg), "rb attachment should be sent");
- my ($rv, $err) = $con->send($msg);
- is($rv, PUSH_RESULT_OK, "good push result");
-
- {
- local $con->client->{useragent} = $ua_404;
- my ($rv, $err) = $con->send($msg);
- is($rv, PUSH_RESULT_OK, "good push result for 404");
- }
-
- {
- local $con->client->{useragent} = $ua_403;
- my ($rv, $err) = $con->send($msg);
- is($rv, PUSH_RESULT_TRANSIENT, "transient error on 404");
- diag $err if $err;
- }
-
-
- {
- local $con->client->{useragent} = $ua_401;
- my ($rv, $err) = $con->send($msg);
- is($rv, PUSH_RESULT_TRANSIENT, "transient error on 401");
- diag $err if $err;
- }
-
- {
- local $con->client->{useragent} = $ua_401;
- my ($rv, $err) = $con->send($msg);
- is($rv, PUSH_RESULT_TRANSIENT, "transient error on 401");
- diag $err if $err;
- }
-}
-
-sub message {
- my $msg_data = { @_ };
-
- return Test::MockObject->new
- ->set_always( routing_key => $msg_data->{event}{routing_key} )
- ->set_always( payload_decoded => $msg_data );
-}
-
-sub slurp {
- my $file = shift;
- local $/ = undef;
- open my $fh, '<', $file or die "unable to open $file";
- my $s = readline $fh;
- close $fh;
- return $s;
-}
-
-done_testing;