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
|
@ -17,6 +17,7 @@ v 8.6.0 (unreleased)
|
||||||
- Add support for cross-project label references
|
- Add support for cross-project label references
|
||||||
- Update documentation to reflect Guest role not being enforced on internal projects
|
- Update documentation to reflect Guest role not being enforced on internal projects
|
||||||
- Allow search for logged out users
|
- 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
|
- Don't show Issues/MRs from archived projects in Groups view
|
||||||
- Increase the notes polling timeout over time (Roberto Dip)
|
- Increase the notes polling timeout over time (Roberto Dip)
|
||||||
- Show labels in dashboard and group milestone views
|
- Show labels in dashboard and group milestone views
|
||||||
|
|
|
@ -76,7 +76,7 @@ module Gitlab
|
||||||
project.issues.create!(
|
project.issues.create!(
|
||||||
description: body,
|
description: body,
|
||||||
title: issue["title"],
|
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)
|
author_id: gl_user_id(project, reporter)
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
|
@ -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 New Issue