Merge branch 'iurisilvio/gitlab-ce-bitbucket_closed' into 'master'
Fix bug where Bitbucket 'closed' issues were imported as 'opened' _Originally opened at !2930 by @iurisilvio._ - - - Bitbucket has an undocumented status `closed`. https://confluence.atlassian.com/bitbucket/issues-resource-296095191.html Related to https://gitlab.com/gitlab-com/support-forum/issues/559 See merge request !2973
This commit is contained in:
commit
500337c4b2
3 changed files with 90 additions and 1 deletions
|
@ -17,6 +17,7 @@ v 8.6.0 (unreleased)
|
|||
- Add support for cross-project label references
|
||||
- Update documentation to reflect Guest role not being enforced on internal projects
|
||||
- Allow search for logged out users
|
||||
- Fix bug where Bitbucket `closed` issues were imported as `opened` (Iuri de Silvio)
|
||||
- Don't show Issues/MRs from archived projects in Groups view
|
||||
- Increase the notes polling timeout over time (Roberto Dip)
|
||||
- Show labels in dashboard and group milestone views
|
||||
|
|
|
@ -76,7 +76,7 @@ module Gitlab
|
|||
project.issues.create!(
|
||||
description: body,
|
||||
title: issue["title"],
|
||||
state: %w(resolved invalid duplicate wontfix).include?(issue["status"]) ? 'closed' : 'opened',
|
||||
state: %w(resolved invalid duplicate wontfix closed).include?(issue["status"]) ? 'closed' : 'opened',
|
||||
author_id: gl_user_id(project, reporter)
|
||||
)
|
||||
end
|
||||
|
|
88
spec/lib/gitlab/bitbucket_import/importer_spec.rb
Normal file
88
spec/lib/gitlab/bitbucket_import/importer_spec.rb
Normal file
|
@ -0,0 +1,88 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::BitbucketImport::Importer, lib: true do
|
||||
before do
|
||||
Gitlab.config.omniauth.providers << OpenStruct.new(app_id: "asd123", app_secret: "asd123", name: "bitbucket")
|
||||
end
|
||||
|
||||
let(:statuses) do
|
||||
[
|
||||
"open",
|
||||
"resolved",
|
||||
"on hold",
|
||||
"invalid",
|
||||
"duplicate",
|
||||
"wontfix",
|
||||
"closed" # undocumented status
|
||||
]
|
||||
end
|
||||
let(:sample_issues_statuses) do
|
||||
issues = []
|
||||
|
||||
statuses.map.with_index do |status, index|
|
||||
issues << {
|
||||
local_id: index,
|
||||
status: status,
|
||||
title: "Issue #{index}",
|
||||
content: "Some content to issue #{index}"
|
||||
}
|
||||
end
|
||||
|
||||
issues
|
||||
end
|
||||
|
||||
let(:project_identifier) { 'namespace/repo' }
|
||||
let(:data) do
|
||||
{
|
||||
bb_session: {
|
||||
bitbucket_access_token: "123456",
|
||||
bitbucket_access_token_secret: "secret"
|
||||
}
|
||||
}
|
||||
end
|
||||
let(:project) do
|
||||
create(
|
||||
:project,
|
||||
import_source: project_identifier,
|
||||
import_data: ProjectImportData.new(data: data)
|
||||
)
|
||||
end
|
||||
let(:importer) { Gitlab::BitbucketImport::Importer.new(project) }
|
||||
let(:issues_statuses_sample_data) do
|
||||
{
|
||||
count: sample_issues_statuses.count,
|
||||
issues: sample_issues_statuses
|
||||
}
|
||||
end
|
||||
|
||||
context 'issues statuses' do
|
||||
before do
|
||||
stub_request(
|
||||
:get,
|
||||
"https://bitbucket.org/api/1.0/repositories/#{project_identifier}"
|
||||
).to_return(status: 200, body: { has_issues: true }.to_json)
|
||||
|
||||
stub_request(
|
||||
:get,
|
||||
"https://bitbucket.org/api/1.0/repositories/#{project_identifier}/issues?limit=50&sort=utc_created_on&start=0"
|
||||
).to_return(status: 200, body: issues_statuses_sample_data.to_json)
|
||||
|
||||
sample_issues_statuses.each_with_index do |issue, index|
|
||||
stub_request(
|
||||
:get,
|
||||
"https://bitbucket.org/api/1.0/repositories/#{project_identifier}/issues/#{issue[:local_id]}/comments"
|
||||
).to_return(
|
||||
status: 200,
|
||||
body: [{ author_info: { username: "username" }, utc_created_on: index }].to_json
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
it 'map statuses to open or closed' do
|
||||
importer.execute
|
||||
|
||||
expect(project.issues.where(state: "closed").size).to eq(5)
|
||||
expect(project.issues.where(state: "opened").size).to eq(2)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue