diff options
author | Toon Claes <toon@gitlab.com> | 2017-03-09 16:39:09 +0100 |
---|---|---|
committer | Toon Claes <toon@gitlab.com> | 2017-03-10 10:03:03 +0100 |
commit | c92808ed323d70c6af00cd19fb5e4ed35ce9957d (patch) | |
tree | 4992cd77091121d4e4a1546d880634abc408a0d0 /spec | |
parent | 7a7f487775d4ed3de5698064b90af6da6488a59b (diff) | |
download | gitlab-ce-c92808ed323d70c6af00cd19fb5e4ed35ce9957d.tar.gz |
Fix for creating a project through API when import_url is niltc-fix-project-create-500
The API was returning 500 when `nil` is passed for the `import_url`.
In fact, it was `Gitlab::UrlSanitizer.valid?` which was throwing a
`NoMethodError` when `nil` value was passed.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/lib/gitlab/url_sanitizer_spec.rb | 8 | ||||
-rw-r--r-- | spec/requests/api/projects_spec.rb | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/spec/lib/gitlab/url_sanitizer_spec.rb b/spec/lib/gitlab/url_sanitizer_spec.rb index 2cb74629da8..3fd361de458 100644 --- a/spec/lib/gitlab/url_sanitizer_spec.rb +++ b/spec/lib/gitlab/url_sanitizer_spec.rb @@ -70,4 +70,12 @@ describe Gitlab::UrlSanitizer, lib: true do expect(sanitizer.full_url).to eq('user@server:project.git') end end + + describe '.valid?' do + it 'validates url strings' do + expect(described_class.valid?(nil)).to be(false) + expect(described_class.valid?('valid@project:url.git')).to be(true) + expect(described_class.valid?('123://invalid:url')).to be(false) + end + end end diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index 77f79cd5bc7..b4b23617498 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -424,6 +424,14 @@ describe API::Projects, api: true do expect(json_response['only_allow_merge_if_all_discussions_are_resolved']).to be_truthy end + it 'ignores import_url when it is nil' do + project = attributes_for(:project, { import_url: nil }) + + post api('/projects', user), project + + expect(response).to have_http_status(201) + end + context 'when a visibility level is restricted' do let(:project_param) { attributes_for(:project, visibility: 'public') } |