Merge branch 'feature/improve_wiki_page_events' into 'master'
Include Wiki attributes in Wiki page events webhook The hook data we are sending is not 100% correct (we send details of the project, but should also send details of the "ProjectWiki" attributes like URLs and repositories relative to the wiki itself). This is a follow up to #17506 Fixes #17507 See merge request !4138
This commit is contained in:
commit
c12c77eb25
5 changed files with 38 additions and 10 deletions
|
@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date.
|
|||
|
||||
v 8.9.0 (unreleased)
|
||||
- Allow enabling wiki page events from Webhook management UI
|
||||
- Fix wiki page events' webhook to point to the wiki repository
|
||||
- Allow forking projects with restricted visibility level
|
||||
- Improve note validation to prevent errors when creating invalid note via API
|
||||
- Remove project notification settings associated with deleted projects
|
||||
|
|
|
@ -27,6 +27,10 @@ class ProjectWiki
|
|||
@project.path_with_namespace + ".wiki"
|
||||
end
|
||||
|
||||
def web_url
|
||||
Gitlab::Routing.url_helpers.namespace_project_wiki_url(@project.namespace, @project, :home)
|
||||
end
|
||||
|
||||
def url_to_repo
|
||||
gitlab_shell.url_to_repo(path_with_namespace)
|
||||
end
|
||||
|
@ -142,6 +146,16 @@ class ProjectWiki
|
|||
wiki
|
||||
end
|
||||
|
||||
def hook_attrs
|
||||
{
|
||||
web_url: web_url,
|
||||
git_ssh_url: ssh_url_to_repo,
|
||||
git_http_url: http_url_to_repo,
|
||||
path_with_namespace: path_with_namespace,
|
||||
default_branch: default_branch
|
||||
}
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def init_repo(path_with_namespace)
|
||||
|
|
|
@ -6,9 +6,8 @@ module WikiPages
|
|||
object_kind: page.class.name.underscore,
|
||||
user: current_user.hook_attrs,
|
||||
project: @project.hook_attrs,
|
||||
object_attributes: page.hook_attrs,
|
||||
# DEPRECATED
|
||||
repository: @project.hook_attrs.slice(:name, :url, :description, :homepage)
|
||||
wiki: @project.wiki.hook_attrs,
|
||||
object_attributes: page.hook_attrs
|
||||
}
|
||||
|
||||
page_url = Gitlab::UrlBuilder.build(page)
|
||||
|
|
|
@ -720,7 +720,7 @@ X-Gitlab-Event: Wiki Page Hook
|
|||
"description": "This is awesome",
|
||||
"web_url": "http://example.com/root/awesome-project",
|
||||
"avatar_url": null,
|
||||
"git_ssh_url": "git@example.com:root/test-project.git",
|
||||
"git_ssh_url": "git@example.com:root/awesome-project.git",
|
||||
"git_http_url": "http://example.com/root/awesome-project.git",
|
||||
"namespace": "root",
|
||||
"visibility_level": 0,
|
||||
|
@ -731,6 +731,13 @@ X-Gitlab-Event: Wiki Page Hook
|
|||
"ssh_url": "git@example.com:root/awesome-project.git",
|
||||
"http_url": "http://example.com/root/awesome-project.git"
|
||||
},
|
||||
"wiki": {
|
||||
"web_url": "http://example.com/root/awesome-project/wikis/home",
|
||||
"git_ssh_url": "git@example.com:root/awesome-project.wiki.git",
|
||||
"git_http_url": "http://example.com/root/awesome-project.wiki.git",
|
||||
"path_with_namespace": "root/awesome-project.wiki",
|
||||
"default_branch": "master"
|
||||
},
|
||||
"object_attributes": {
|
||||
"title": "Awesome",
|
||||
"content": "awesome content goes here",
|
||||
|
@ -739,12 +746,6 @@ X-Gitlab-Event: Wiki Page Hook
|
|||
"slug": "awesome",
|
||||
"url": "http://example.com/root/awesome-project/wikis/awesome",
|
||||
"action": "create"
|
||||
},
|
||||
"repository": {
|
||||
"name": "awesome-project",
|
||||
"url": "git@example.com:root/awesome-project.git",
|
||||
"description": "test",
|
||||
"homepage": "http://example.com/root/awesome-project"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
|
|
@ -16,6 +16,12 @@ describe ProjectWiki, models: true do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#web_url' do
|
||||
it 'returns the full web URL to the wiki' do
|
||||
expect(subject.web_url).to eq("#{Gitlab.config.gitlab.url}/#{project.path_with_namespace}/wikis/home")
|
||||
end
|
||||
end
|
||||
|
||||
describe "#url_to_repo" do
|
||||
it "returns the correct ssh url to the repo" do
|
||||
expect(subject.url_to_repo).to eq(gitlab_shell.url_to_repo(subject.path_with_namespace))
|
||||
|
@ -257,6 +263,13 @@ describe ProjectWiki, models: true do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#hook_attrs' do
|
||||
it 'returns a hash with values' do
|
||||
expect(subject.hook_attrs).to be_a Hash
|
||||
expect(subject.hook_attrs.keys).to contain_exactly(:web_url, :git_ssh_url, :git_http_url, :path_with_namespace, :default_branch)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def create_temp_repo(path)
|
||||
|
|
Loading…
Reference in a new issue