diff options
author | Douwe Maan <douwe@gitlab.com> | 2019-01-15 16:28:07 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2019-01-15 16:28:07 +0000 |
commit | 267ce96e36ecec169b02410bfea85e6d31715910 (patch) | |
tree | e7d70dac55244f460541886115aad3f7e758b664 | |
parent | 9cd5c5f5359cdebc2ae9ba1d20d2e79bd18edce2 (diff) | |
parent | 96a49c79aa16e2d67063474a6a63920346542da4 (diff) | |
download | gitlab-ce-267ce96e36ecec169b02410bfea85e6d31715910.tar.gz |
Merge branch '44780-wiki-page-with-a-dot-inside-title-slug-leads-to-404-in-the-api' into 'master'
Support Wiki pages with dots in slugs
Closes #44780
See merge request gitlab-org/gitlab-ce!24383
-rw-r--r-- | changelogs/unreleased/api-wiki-dot-slug.yml | 5 | ||||
-rw-r--r-- | lib/api/wikis.rb | 6 | ||||
-rw-r--r-- | spec/factories/wiki_pages.rb | 2 | ||||
-rw-r--r-- | spec/requests/api/wikis_spec.rb | 2 |
4 files changed, 11 insertions, 4 deletions
diff --git a/changelogs/unreleased/api-wiki-dot-slug.yml b/changelogs/unreleased/api-wiki-dot-slug.yml new file mode 100644 index 00000000000..82c76fa7450 --- /dev/null +++ b/changelogs/unreleased/api-wiki-dot-slug.yml @@ -0,0 +1,5 @@ +--- +title: 'API: Support dots in wiki slugs' +merge_request: 24383 +author: Robert Schilling +type: fixed diff --git a/lib/api/wikis.rb b/lib/api/wikis.rb index 302b2797a34..ef0e3decc2c 100644 --- a/lib/api/wikis.rb +++ b/lib/api/wikis.rb @@ -22,7 +22,9 @@ module API end end - resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do + WIKI_ENDPOINT_REQUIREMENTS = API::NAMESPACE_OR_PROJECT_REQUIREMENTS.merge(slug: API::NO_SLASH_URL_PART_REGEX) + + resource :projects, requirements: WIKI_ENDPOINT_REQUIREMENTS do desc 'Get a list of wiki pages' do success Entities::WikiPageBasic end @@ -103,7 +105,7 @@ module API requires :file, type: ::API::Validations::Types::SafeFile, desc: 'The attachment file to be uploaded' optional :branch, type: String, desc: 'The name of the branch' end - post ":id/wikis/attachments", requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do + post ":id/wikis/attachments" do authorize! :create_wiki, user_project result = ::Wikis::CreateAttachmentService.new(user_project, diff --git a/spec/factories/wiki_pages.rb b/spec/factories/wiki_pages.rb index 2335b5118dd..ae257d769e8 100644 --- a/spec/factories/wiki_pages.rb +++ b/spec/factories/wiki_pages.rb @@ -5,7 +5,7 @@ FactoryBot.define do transient do attrs do { - title: 'Title', + title: 'Title.with.dot', content: 'Content for wiki page', format: 'markdown' } diff --git a/spec/requests/api/wikis_spec.rb b/spec/requests/api/wikis_spec.rb index f5092e8e2b5..6109829aad1 100644 --- a/spec/requests/api/wikis_spec.rb +++ b/spec/requests/api/wikis_spec.rb @@ -22,7 +22,7 @@ describe API::Wikis do context 'when wiki has pages' do let!(:pages) do [create(:wiki_page, wiki: project_wiki, attrs: { title: 'page1', content: 'content of page1' }), - create(:wiki_page, wiki: project_wiki, attrs: { title: 'page2', content: 'content of page2' })] + create(:wiki_page, wiki: project_wiki, attrs: { title: 'page2.with.dot', content: 'content of page2' })] end it 'returns the list of wiki pages without content' do |