diff options
author | Stan Hu <stanhu@gmail.com> | 2019-08-27 22:48:24 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2019-08-28 00:18:33 -0700 |
commit | 29ce13e9992c296fbb2c4ad2706f53e491143d3e (patch) | |
tree | adb1e4f4885c4d205c5d2161bf12b8795a56ce17 /spec/lib/gitlab | |
parent | 2ad1621c7f7bb7b749f2f4f8d89d84a0f2fbc9f7 (diff) | |
download | gitlab-ce-29ce13e9992c296fbb2c4ad2706f53e491143d3e.tar.gz |
Fix moving issues API failing when text includes commit URLssh-fix-issue-move-api
When a issue is moved from one project to another, all associated
Markdown text is rewritten in the context of the new project. If the
note contained a link to a commit URL, `CommitRewriter#rewrite` would
fail because `Commit#link_reference_pattern` would match `nil` `commit`
values in the HTML generated from the Markdown. These `nil` values were
passed along to `Project#commits_by` because `Commit#reference_valid?`
was always returning `true`.
To prevent this issue from happening, we tighten up the check for
`Commit#reference_valid?` to look for valid SHA values.
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/66666
Diffstat (limited to 'spec/lib/gitlab')
-rw-r--r-- | spec/lib/gitlab/gfm/reference_rewriter_spec.rb | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/spec/lib/gitlab/gfm/reference_rewriter_spec.rb b/spec/lib/gitlab/gfm/reference_rewriter_spec.rb index 4d2f08f95fc..790b0428d19 100644 --- a/spec/lib/gitlab/gfm/reference_rewriter_spec.rb +++ b/spec/lib/gitlab/gfm/reference_rewriter_spec.rb @@ -102,6 +102,23 @@ describe Gitlab::Gfm::ReferenceRewriter do end end + context 'with a commit' do + let(:old_project) { create(:project, :repository, name: 'old-project', group: group) } + let(:commit) { old_project.commit } + + context 'reference to an absolute URL to a commit' do + let(:text) { Gitlab::UrlBuilder.build(commit) } + + it { is_expected.to eq(text) } + end + + context 'reference to a commit' do + let(:text) { commit.id } + + it { is_expected.to eq("#{old_project_ref}@#{text}") } + end + end + context 'reference contains project milestone' do let!(:milestone) do create(:milestone, title: '9.0', project: old_project) |