Commit 42607a7f authored by Robert Speicher's avatar Robert Speicher

Merge branch 'brammeleman/3047-add-assignee-data-to-isuable-hook-data' into 'master'

Add assignee data to Issuables' hook_data

Originally opened at !1633 by @brammeleman.

Fixes #3047. Fixes #2475.

See merge request !2724
parents 51998fdd d146d9fd
...@@ -387,6 +387,7 @@ v 8.1.0 ...@@ -387,6 +387,7 @@ v 8.1.0
- Improved performance of the trending projects page - Improved performance of the trending projects page
- Remove CI migration task - Remove CI migration task
- Improved performance of finding projects by their namespace - Improved performance of finding projects by their namespace
- Add assignee data to Issuables' hook_data (Bram Daams)
- Fix bug where transferring a project would result in stale commit links (Stan Hu) - Fix bug where transferring a project would result in stale commit links (Stan Hu)
- Fix build trace updating - Fix build trace updating
- Include full path of source and target branch names in New Merge Request page (Stan Hu) - Include full path of source and target branch names in New Merge Request page (Stan Hu)
......
...@@ -126,7 +126,7 @@ module Issuable ...@@ -126,7 +126,7 @@ module Issuable
end end
def to_hook_data(user) def to_hook_data(user)
{ hook_data = {
object_kind: self.class.name.underscore, object_kind: self.class.name.underscore,
user: user.hook_attrs, user: user.hook_attrs,
repository: { repository: {
...@@ -137,6 +137,9 @@ module Issuable ...@@ -137,6 +137,9 @@ module Issuable
}, },
object_attributes: hook_attrs object_attributes: hook_attrs
} }
hook_data.merge!(assignee: assignee.hook_attrs) if assignee
hook_data
end end
def label_names def label_names
......
...@@ -8,8 +8,8 @@ Web hooks can be used to update an external issue tracker, trigger CI builds, up ...@@ -8,8 +8,8 @@ Web hooks can be used to update an external issue tracker, trigger CI builds, up
## SSL Verification ## SSL Verification
By default, the SSL certificate of the webhook endpoint is verified based on By default, the SSL certificate of the webhook endpoint is verified based on
an internal list of Certificate Authorities, an internal list of Certificate Authorities,
which means the certificate cannot be self-signed. which means the certificate cannot be self-signed.
You can turn this off in the web hook settings in your GitLab projects. You can turn this off in the web hook settings in your GitLab projects.
...@@ -76,7 +76,6 @@ X-Gitlab-Event: Push Hook ...@@ -76,7 +76,6 @@ X-Gitlab-Event: Push Hook
} }
], ],
"total_commits_count": 4 "total_commits_count": 4
} }
``` ```
...@@ -158,6 +157,11 @@ X-Gitlab-Event: Issue Hook ...@@ -158,6 +157,11 @@ X-Gitlab-Event: Issue Hook
"iid": 23, "iid": 23,
"url": "http://example.com/diaspora/issues/23", "url": "http://example.com/diaspora/issues/23",
"action": "open" "action": "open"
},
"assignee": {
"name": "User1",
"username": "user1",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40\u0026d=identicon"
} }
} }
``` ```
...@@ -322,7 +326,12 @@ X-Gitlab-Event: Note Hook ...@@ -322,7 +326,12 @@ X-Gitlab-Event: Note Hook
"email": "john@example.com" "email": "john@example.com"
} }
}, },
"work_in_progress": false "work_in_progress": false,
"assignee": {
"name": "User1",
"username": "user1",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40\u0026d=identicon"
}
} }
} }
``` ```
...@@ -397,7 +406,7 @@ X-Gitlab-Event: Note Hook ...@@ -397,7 +406,7 @@ X-Gitlab-Event: Note Hook
**Request body:** **Request body:**
``` ```json
{ {
"object_kind": "note", "object_kind": "note",
"user": { "user": {
...@@ -510,7 +519,12 @@ X-Gitlab-Event: Merge Request Hook ...@@ -510,7 +519,12 @@ X-Gitlab-Event: Merge Request Hook
}, },
"work_in_progress": false, "work_in_progress": false,
"url": "http://example.com/diaspora/merge_requests/1", "url": "http://example.com/diaspora/merge_requests/1",
"action": "open" "action": "open",
"assignee": {
"name": "User1",
"username": "user1",
"avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=40\u0026d=identicon"
}
} }
} }
``` ```
......
...@@ -79,6 +79,16 @@ describe Issue, "Issuable" do ...@@ -79,6 +79,16 @@ describe Issue, "Issuable" do
expect(hook_data[:repository][:description]).to eq(issue.project.description) expect(hook_data[:repository][:description]).to eq(issue.project.description)
expect(hook_data[:repository][:homepage]).to eq(issue.project.web_url) expect(hook_data[:repository][:homepage]).to eq(issue.project.web_url)
expect(hook_data[:object_attributes]).to eq(issue.hook_attrs) expect(hook_data[:object_attributes]).to eq(issue.hook_attrs)
expect(hook_data).to_not have_key(:assignee)
end
context "issue is assigned" do
before { issue.update_attribute(:assignee, user) }
it "returns correct hook data" do
expect(hook_data[:object_attributes]['assignee_id']).to eq(user.id)
expect(hook_data[:assignee]).to eq(user.hook_attrs)
end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment