summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/github_import/project_creator_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/github_import/project_creator_spec.rb')
-rw-r--r--spec/lib/gitlab/github_import/project_creator_spec.rb54
1 files changed, 40 insertions, 14 deletions
diff --git a/spec/lib/gitlab/github_import/project_creator_spec.rb b/spec/lib/gitlab/github_import/project_creator_spec.rb
index 0f363b8b0aa..014ee462e5c 100644
--- a/spec/lib/gitlab/github_import/project_creator_spec.rb
+++ b/spec/lib/gitlab/github_import/project_creator_spec.rb
@@ -2,33 +2,59 @@ require 'spec_helper'
describe Gitlab::GithubImport::ProjectCreator, lib: true do
let(:user) { create(:user) }
+ let(:namespace) { create(:group, owner: user) }
+
let(:repo) do
OpenStruct.new(
login: 'vim',
name: 'vim',
- private: true,
full_name: 'asd/vim',
- clone_url: "https://gitlab.com/asd/vim.git",
- owner: OpenStruct.new(login: "john")
+ clone_url: 'https://gitlab.com/asd/vim.git'
)
end
- let(:namespace) { create(:group, owner: user) }
- let(:token) { "asdffg" }
- let(:access_params) { { github_access_token: token } }
+
+ subject(:service) { described_class.new(repo, namespace, user, github_access_token: 'asdffg') }
before do
namespace.add_owner(user)
+ allow_any_instance_of(Project).to receive(:add_import_job)
end
- it 'creates project' do
- allow_any_instance_of(Project).to receive(:add_import_job)
+ describe '#execute' do
+ it 'creates a project' do
+ expect { service.execute }.to change(Project, :count).by(1)
+ end
+
+ it 'handle GitHub credentials' do
+ project = service.execute
+
+ expect(project.import_url).to eq('https://asdffg@gitlab.com/asd/vim.git')
+ expect(project.safe_import_url).to eq('https://*****@gitlab.com/asd/vim.git')
+ expect(project.import_data.credentials).to eq(user: 'asdffg', password: nil)
+ end
+
+ context 'when Github project is private' do
+ it 'sets project visibility to private' do
+ repo.private = true
+
+ project = service.execute
+
+ expect(project.visibility_level).to eq(Gitlab::VisibilityLevel::PRIVATE)
+ end
+ end
+
+ context 'when Github project is public' do
+ before do
+ allow_any_instance_of(ApplicationSetting).to receive(:default_project_visibility).and_return(Gitlab::VisibilityLevel::INTERNAL)
+ end
+
+ it 'sets project visibility to the default project visibility' do
+ repo.private = false
- project_creator = Gitlab::GithubImport::ProjectCreator.new(repo, namespace, user, access_params)
- project = project_creator.execute
+ project = service.execute
- expect(project.import_url).to eq("https://asdffg@gitlab.com/asd/vim.git")
- expect(project.safe_import_url).to eq("https://*****@gitlab.com/asd/vim.git")
- expect(project.import_data.credentials).to eq(user: "asdffg", password: nil)
- expect(project.visibility_level).to eq(Gitlab::VisibilityLevel::PRIVATE)
+ expect(project.visibility_level).to eq(Gitlab::VisibilityLevel::INTERNAL)
+ end
+ end
end
end