+++ /dev/null
-#!/usr/bin/perl
-# 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 5.10.1;
-use lib qw( . lib local/lib/perl5 );
-BEGIN { $ENV{LOG4PERL_CONFIG_FILE} = 'log4perl-t.conf' }
-use Test2::V0;
-
-our @EMAILS;
-
-BEGIN {
- require Bugzilla::Mailer;
- no warnings 'redefine';
- *Bugzilla::Mailer::MessageToMTA = sub {
- push @EMAILS, [@_];
- };
-}
-use Bugzilla::Test::MockDB;
-use Bugzilla::Test::MockParams;
-use Bugzilla::Test::Util qw(create_user);
-use Test2::Tools::Mock;
-use Try::Tiny;
-use JSON::MaybeXS;
-use Bugzilla::Constants;
-use URI;
-use File::Basename;
-use Digest::SHA qw(sha1_hex);
-use Data::Dumper;
-
-use ok 'Bugzilla::Extension::PhabBugz::Feed';
-use ok 'Bugzilla::Extension::PhabBugz::Constants', 'PHAB_AUTOMATION_USER';
-use ok 'Bugzilla::Config', 'SetParam';
-can_ok('Bugzilla::Extension::PhabBugz::Feed', qw( group_query feed_query user_query ));
-
-SetParam(phabricator_base_uri => 'http://fake.phabricator.tld/');
-SetParam(mailfrom => 'bugzilla-daemon');
-Bugzilla->error_mode(ERROR_MODE_TEST);
-my $nobody = create_user('nobody@mozilla.org', '*');
-my $phab_bot = create_user(PHAB_AUTOMATION_USER, '*');
-
-# Steve Rogers is the revision author
-my $steve = create_user('steverogers@avengers.org', '*', realname => 'Steve Rogers :steve');
-
-# Bucky Barns is the reviewer
-my $bucky = create_user('bucky@avengers.org', '*', realname => 'Bucky Barns :bucky');
-
-my $firefox = Bugzilla::Product->create(
- {
- name => 'Firefox',
- description => 'Fake firefox product',
- version => 'Unspecified',
- },
-);
-
-my $general = Bugzilla::Component->create(
- {
- product =>$firefox,
- name => 'General',
- description => 'The most general description',
- initialowner => { id => $nobody->id },
- }
-);
-
-Bugzilla->set_user($steve);
-my $bug = Bugzilla::Bug->create(
- {
- short_desc => 'test bug',
- product => $firefox,
- component => $general->name,
- bug_severity => 'normal',
- op_sys => 'Unspecified',
- rep_platform => 'Unspecified',
- version => 'Unspecified',
- comment => 'first post',
- priority => 'P1',
- }
-);
-
-my $recipients = { changer => $steve };
-Bugzilla::BugMail::Send($bug->bug_id, $recipients);
-@EMAILS = ();
-
-my $revision = Bugzilla::Extension::PhabBugz::Revision->new(
- {
- id => 1,
- phid => 'PHID-DREV-uozm3ggfp7e7uoqegmc3',
- type => 'DREV',
- fields => {
- title => "title",
- summary => "the summary of the revision",
- status => { value => "not sure" },
- dateCreated => time() - (60 * 60),
- dateModified => time() - (60 * 5),
- authorPHID => 'authorPHID',
- policy => {
- view => 'policy.view',
- edit => 'policy.edit',
- },
- 'bugzilla.bug-id' => $bug->id,
- },
- attachments => {
- projects => { projectPHIDs => [] },
- reviewers => {
- reviewers => [ ],
- },
- subscribers => {
- subscriberPHIDs => [],
- subscriberCount => 1,
- viewerIsSubscribed => 1,
- }
- },
- reviews => [
- {
- user => new_phab_user($bucky),
- status => 'accepted',
- }
- ]
- }
-);
-my $PhabRevisionMock = mock 'Bugzilla::Extension::PhabBugz::Revision' => (
- override => [
- make_public => sub { },
- update => sub { },
- ]
-);
-my $PhabUserMock = mock 'Bugzilla::Extension::PhabBugz::User' => (
- override => [
- match => sub {
- my ($class, $query) = @_;
- if ($query && $query->{phids} && $query->{phids}[0]) {
- my $phid = $query->{phids}[0];
- if ($phid eq 'authorPHID') {
- return [ new_phab_user($steve, $phid) ];
- }
- }
- },
- ]
-);
-
-
-my $feed = Bugzilla::Extension::PhabBugz::Feed->new;
-my $changer = new_phab_user($bucky);
-@EMAILS = ();
-$feed->process_revision_change(
- $revision, $changer, "story text"
-);
-
-# The first comment, and the comment made when the attachment is attached
-# are made by Steve.
-# The review comment is made by Bucky.
-
-my $sth = Bugzilla->dbh->prepare("select profiles.login_name, thetext from longdescs join profiles on who = userid");
-$sth->execute;
-while (my $row = $sth->fetchrow_hashref) {
- if ($row->{thetext} =~ /first post/i) {
- is($row->{login_name}, $steve->login, 'first post author');
- }
- elsif ($row->{thetext} =~ /the summary of the revision/i) {
- is($row->{login_name}, $steve->login, 'the first attachment comment');
- }
- elsif ($row->{thetext} =~ /has approved the revision/i) {
- is($row->{login_name}, $bucky->login);
- }
-}
-
-diag Dumper(\@EMAILS);
-
-done_testing;
-
-sub new_phab_user {
- my ($bug_user, $phid) = @_;
-
- return Bugzilla::Extension::PhabBugz::User->new(
- {
- id => $bug_user->id * 1000,
- type => "USER",
- phid => $phid // "PHID-USER-" . ( $bug_user->id * 1000 ),
- fields => {
- username => $bug_user->nick,
- realName => $bug_user->name,
- dateCreated => time() - 60 * 60 * 24,
- dateModified => time(),
- roles => [],
- policy => {
- view => 'view',
- edit => 'edit',
- },
- },
- attachments => {
- 'external-accounts' => {
- 'external-accounts' => [
- {
- type => 'bmo',
- id => $bug_user->id,
- }
- ]
- }
- }
- }
- );
-
-
-}
\ No newline at end of file