diff options
author | Valery Sizov <vsv2711@gmail.com> | 2015-04-06 16:36:56 +0300 |
---|---|---|
committer | Valery Sizov <vsv2711@gmail.com> | 2015-04-06 19:45:16 +0300 |
commit | bafec400f153153cad3920ff128e5ba4ccc8ebf7 (patch) | |
tree | bc1f4893abeea2f224ada8af654adb643f403336 | |
parent | 9c2301808b2d96d41d8972d114c9f77dd2b2471f (diff) | |
download | gitlab-ce-bafec400f153153cad3920ff128e5ba4ccc8ebf7.tar.gz |
CI forking: tests
-rw-r--r-- | app/models/project_services/gitlab_ci_service.rb | 20 | ||||
-rw-r--r-- | app/services/projects/fork_service.rb | 2 | ||||
-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.rb | 21 | ||||
-rw-r--r-- | spec/services/projects/fork_service_spec.rb | 14 | ||||
-rw-r--r-- | spec/workers/fork_registration_worker_spec.rb | 10 |
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 |