Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/project_services/gitlab_ci_service.rb20
-rw-r--r--app/services/projects/fork_service.rb2
-rw-r--r--app/workers/fork_registration_worker.rb (renamed from app/workers/fork_registrator_worker.rb)4
-rw-r--r--spec/models/project_services/gitlab_ci_service_spec.rb21
-rw-r--r--spec/services/projects/fork_service_spec.rb14
-rw-r--r--spec/workers/fork_registration_worker_spec.rb10
6 files changed, 59 insertions, 12 deletions
diff --git a/app/models/project_services/gitlab_ci_service.rb b/app/models/project_services/gitlab_ci_service.rb
index d66a1331951..0f9838a575d 100644
--- a/app/models/project_services/gitlab_ci_service.rb
+++ b/app/models/project_services/gitlab_ci_service.rb
@@ -18,6 +18,8 @@
#
class GitlabCiService < CiService
+ API_PREFIX = "api/v1"
+
prop_accessor :project_url, :token
validates :project_url, presence: true, if: :activated?
validates :token, presence: true, if: :activated?
@@ -59,7 +61,7 @@ class GitlabCiService < CiService
end
end
- def register_fork(new_project, user_token)
+ def fork_registration(new_project, private_token)
params = {
id: new_project.id,
name_with_namespace: new_project.name_with_namespace,
@@ -69,12 +71,12 @@ class GitlabCiService < CiService
}
HTTParty.post(
- register_fork_path,
+ fork_registration_path,
body: {
project_id: project.id,
project_token: token,
- user_token: user_token,
- data: params.to_yaml},
+ private_token: private_token,
+ data: params },
verify: false
)
end
@@ -95,10 +97,6 @@ class GitlabCiService < CiService
project_url + "?ref=" + project.default_branch
end
- def register_fork_path
- project_url.sub(/projects\/\d*/, 'api/v1/forks')
- end
-
def status_img_path
project_url + "/status.png?ref=" + project.default_branch
end
@@ -121,4 +119,10 @@ class GitlabCiService < CiService
{ type: 'text', name: 'project_url', placeholder: 'http://ci.gitlabhq.com/projects/3' }
]
end
+
+ private
+
+ def fork_registration_path
+ project_url.sub(/projects\/\d*/, "#{API_PREFIX}/forks")
+ end
end
diff --git a/app/services/projects/fork_service.rb b/app/services/projects/fork_service.rb
index b5150fefc4c..4ec98696a65 100644
--- a/app/services/projects/fork_service.rb
+++ b/app/services/projects/fork_service.rb
@@ -50,7 +50,7 @@ module Projects
end
if @from_project.gitlab_ci?
- ForkRegistratorWorker.perform_async(@from_project.id, project.id, @current_user.private_token)
+ ForkRegistrationWorker.perform_async(@from_project.id, project.id, @current_user.private_token)
end
rescue => ex
project.errors.add(:base, 'Fork transaction failed.')
diff --git a/app/workers/fork_registrator_worker.rb b/app/workers/fork_registration_worker.rb
index 49d040d65ee..fffa8b3a659 100644
--- a/app/workers/fork_registrator_worker.rb
+++ b/app/workers/fork_registration_worker.rb
@@ -1,4 +1,4 @@
-class ForkRegistratorWorker
+class ForkRegistrationWorker
include Sidekiq::Worker
sidekiq_options queue: :default
@@ -7,6 +7,6 @@ class ForkRegistratorWorker
from_project = Project.find(from_project_id)
to_project = Project.find(to_project_id)
- from_project.gitlab_ci_service.register_fork(to_project, private_token)
+ from_project.gitlab_ci_service.fork_registration(to_project, private_token)
end
end
diff --git a/spec/models/project_services/gitlab_ci_service_spec.rb b/spec/models/project_services/gitlab_ci_service_spec.rb
index 610f33c5823..6a557d839ca 100644
--- a/spec/models/project_services/gitlab_ci_service_spec.rb
+++ b/spec/models/project_services/gitlab_ci_service_spec.rb
@@ -46,4 +46,25 @@ describe GitlabCiService do
it { expect(@service.build_page("2ab7834c", 'master')).to eq("http://ci.gitlab.org/projects/2/refs/master/commits/2ab7834c")}
end
end
+
+ describe "Fork registration" do
+ before do
+ @old_project = create(:empty_project)
+ @project = create(:empty_project)
+ @user = create(:user)
+
+ @service = GitlabCiService.new
+ @service.stub(
+ service_hook: true,
+ project_url: 'http://ci.gitlab.org/projects/2',
+ token: 'verySecret',
+ project: @old_project
+ )
+ end
+
+ it "performs http reuquest to ci" do
+ stub_request(:post, "http://ci.gitlab.org/api/v1/forks")
+ @service.fork_registration(@project, @user.private_token)
+ end
+ end
end
diff --git a/spec/services/projects/fork_service_spec.rb b/spec/services/projects/fork_service_spec.rb
index e55a2e3f8a0..c9025bdf133 100644
--- a/spec/services/projects/fork_service_spec.rb
+++ b/spec/services/projects/fork_service_spec.rb
@@ -40,6 +40,17 @@ describe Projects::ForkService do
expect(@to_project.errors[:base]).not_to include("Fork transaction failed.")
end
end
+
+ context 'GitLab CI is enabled' do
+ it "calls fork registrator for CI" do
+ @from_project.build_missing_services
+ @from_project.gitlab_ci_service.update_attributes(active: true)
+
+ expect(ForkRegistrationWorker).to receive(:perform_async)
+
+ fork_project(@from_project, @to_user)
+ end
+ end
end
describe :fork_to_namespace do
@@ -89,7 +100,8 @@ describe Projects::ForkService do
def fork_project(from_project, user, fork_success = true, params = {})
context = Projects::ForkService.new(from_project, user, params)
- shell = double('gitlab_shell').stub(fork_repository: fork_success)
+ shell = double('gitlab_shell')
+ shell.stub(fork_repository: fork_success)
context.stub(gitlab_shell: shell)
context.execute
end
diff --git a/spec/workers/fork_registration_worker_spec.rb b/spec/workers/fork_registration_worker_spec.rb
new file mode 100644
index 00000000000..cc6f574b29c
--- /dev/null
+++ b/spec/workers/fork_registration_worker_spec.rb
@@ -0,0 +1,10 @@
+
+require 'spec_helper'
+
+describe ForkRegistrationWorker do
+ context "as a resque worker" do
+ it "reponds to #perform" do
+ expect(ForkRegistrationWorker.new).to respond_to(:perform)
+ end
+ end
+end