]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1477894 - get_attachment_revisions() should be returning an empty list, instead...
authordklawren <dklawren@users.noreply.github.com>
Tue, 24 Jul 2018 16:39:02 +0000 (12:39 -0400)
committerGitHub <noreply@github.com>
Tue, 24 Jul 2018 16:39:02 +0000 (12:39 -0400)
extensions/PhabBugz/lib/Revision.pm
extensions/PhabBugz/lib/Util.pm
t/phabbugz.t

index 9004542205e5e719daaec7ece5ea32cabcd4c4a3..4e82fa500f41734b320bb692a2f679af8a6244bc 100644 (file)
@@ -93,6 +93,8 @@ sub new_from_query {
           : "";
         return $class->new($result);
     }
+
+    return undef;
 }
 
 sub BUILDARGS {
index 214bc3fb7a6af71b9065037232df59929117675b..99668289ad8e7ca78d7b2b384895eb1be330bc3c 100644 (file)
@@ -146,9 +146,10 @@ sub get_attachment_revisions {
 
     my @revisions;
     foreach my $revision_id (@revision_ids) {
-        push @revisions, Bugzilla::Extension::PhabBugz::Revision->new_from_query({
+        my $revision = Bugzilla::Extension::PhabBugz::Revision->new_from_query({
             ids => [ $revision_id ]
         });
+        push @revisions, $revision if $revision;
     }
 
     return \@revisions;
index 6100898518622e9e4ad49c19115c47839292b48a..ba2f35e1d459d9b1372b68d00e697364aeb46890 100644 (file)
@@ -62,7 +62,8 @@ local Bugzilla->params->{phabricator_base_uri} = 'http://fake.fabricator.tld';
 
 my $Bugzilla = mock 'Bugzilla' => (
     override => [
-        'dbh' => sub { mock() },
+        'dbh'  => sub { mock() },
+        'user' => sub { Bugzilla::User->new({ name => 'phab-bot@bmo.tld' }) },
     ],
 );
 
@@ -168,9 +169,53 @@ do {
             'post' => sub {
                 my ($self, $url, $params) = @_;
                 if ($url =~ /differential\.revision\.search/) {
-                    my $data = decode_json($params->{params});
-                    my $content = '{"error_info":null,"error_code":null,"result":{"cursor":{"after":null,"order":null,"limit":100,"before":null},"query":{"queryKey":"all"},"maps":{},"data":[]}}';
-                    return mock { is_error => 0, content => $content};
+                    my $content = <<JSON;
+{
+    "error_info": null,
+    "error_code": null,
+    "result": {
+        "data": [
+            {
+                "id": 9999,
+                "type": "DREV",
+                "phid": "PHID-DREV-uozm3ggfp7e7uoqegmc3",
+                "fields": {
+                    "title": "Added .arcconfig",
+                    "summary": "Added .arcconfig",
+                    "authorPHID": "PHID-USER-4wigy3sh5fc5t74vapwm",
+                    "dateCreated": 1507666113,
+                    "dateModified": 1508514027,
+                    "policy": {
+                        "view": "public",
+                        "edit": "admin"
+                    },
+                    "bugzilla.bug-id": "23",
+                    "status": {
+                        "value": "needs-review",
+                        "name": "Needs Review",
+                        "closed": false,
+                        "color.ansi": "magenta"
+                    }
+                },
+                "attachments": {
+                    "reviewers": {
+                        "reviewers": []
+                    },
+                    "subscribers": {
+                        "subscriberPHIDs": [],
+                        "subscriberCount": 0,
+                        "viewerIsSubscribed": true
+                    },
+                    "projects": {
+                        "projectPHIDs": []
+                    }
+                }
+            }
+        ]
+    }
+}
+JSON
+                    return mock { is_error => 0, content => $content };
                 }
                 else {
                     return mock { is_error => 1, message => "bad request" };
@@ -183,13 +228,14 @@ do {
         attachments => [
             mock {
                 contenttype => 'text/x-phabricator-request',
-                filename => 'phabricator-D9999',
+                filename => 'phabricator-D9999-url.txt',
             },
         ]
     };
     my $revisions = get_attachment_revisions($bug);
     is(ref($revisions), 'ARRAY', 'it is an array ref');
     isa_ok($revisions->[0], 'Bugzilla::Extension::PhabBugz::Revision');
+    is($revisions->[0]->bug_id, 23, 'Bugzila ID is 23');
     ok( try { $revisions->[0]->update }, 'update revision');
 
 };