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
path: root/spec
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-12-14 18:07:56 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-12-14 18:07:56 +0300
commit016af097cb1fa872fdc28a786d16315e55cd2701 (patch)
tree76f97f90a8048685efb3eb0c543b3a75d99be6ee /spec
parent00b8ecb72c9f77d864aff3572f028613f45af03c (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
-rw-r--r--spec/controllers/projects/jobs_controller_spec.rb4
-rw-r--r--spec/factories/serverless/domain_cluster.rb10
-rw-r--r--spec/models/clusters/applications/knative_spec.rb4
-rw-r--r--spec/models/deployment_spec.rb25
-rw-r--r--spec/models/pages_domain_spec.rb18
-rw-r--r--spec/models/serverless/domain_cluster_spec.rb22
-rw-r--r--spec/requests/api/deployments_spec.rb4
-rw-r--r--spec/services/deployments/create_service_spec.rb87
-rw-r--r--spec/services/deployments/update_service_spec.rb6
9 files changed, 122 insertions, 58 deletions
diff --git a/spec/controllers/projects/jobs_controller_spec.rb b/spec/controllers/projects/jobs_controller_spec.rb
index 3e0a894e72e..edef24f6595 100644
--- a/spec/controllers/projects/jobs_controller_spec.rb
+++ b/spec/controllers/projects/jobs_controller_spec.rb
@@ -5,7 +5,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
include ApiHelpers
include HttpIOHelpers
- let(:project) { create(:project, :public) }
+ let(:project) { create(:project, :public, :repository) }
let(:pipeline) { create(:ci_pipeline, project: project) }
let(:user) { create(:user) }
@@ -511,7 +511,7 @@ describe Projects::JobsController, :clean_gitlab_redis_shared_state do
def get_show_json
expect { get_show(id: job.id, format: :json) }
- .to change { Gitlab::GitalyClient.get_request_count }.by(1) # ListCommitsByOid
+ .to change { Gitlab::GitalyClient.get_request_count }.by_at_most(2)
end
def get_show(**extra_params)
diff --git a/spec/factories/serverless/domain_cluster.rb b/spec/factories/serverless/domain_cluster.rb
new file mode 100644
index 00000000000..290d3fc152e
--- /dev/null
+++ b/spec/factories/serverless/domain_cluster.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+FactoryBot.define do
+ factory :serverless_domain_cluster, class: Serverless::DomainCluster do
+ pages_domain { create(:pages_domain) }
+ knative { create(:clusters_applications_knative) }
+ creator { create(:user) }
+ uuid { SecureRandom.hex(7) }
+ end
+end
diff --git a/spec/models/clusters/applications/knative_spec.rb b/spec/models/clusters/applications/knative_spec.rb
index f1ce447a0d8..5b45dc078de 100644
--- a/spec/models/clusters/applications/knative_spec.rb
+++ b/spec/models/clusters/applications/knative_spec.rb
@@ -16,6 +16,10 @@ describe Clusters::Applications::Knative do
allow(ClusterWaitForIngressIpAddressWorker).to receive(:perform_async)
end
+ describe 'associations' do
+ it { is_expected.to have_one(:serverless_domain_cluster).class_name('Serverless::DomainCluster').with_foreign_key('clusters_applications_knative_id').inverse_of(:knative) }
+ end
+
describe 'when cloud run is enabled' do
let(:cluster) { create(:cluster, :provided_by_gcp, :cloud_run_enabled) }
let(:knative_cloud_run) { create(:clusters_applications_knative, cluster: cluster) }
diff --git a/spec/models/deployment_spec.rb b/spec/models/deployment_spec.rb
index 522a27954e2..33e4cd34aa5 100644
--- a/spec/models/deployment_spec.rb
+++ b/spec/models/deployment_spec.rb
@@ -474,4 +474,29 @@ describe Deployment do
end
end
end
+
+ context '#update_status' do
+ let(:deploy) { create(:deployment, status: :running) }
+
+ it 'changes the status' do
+ deploy.update_status('success')
+
+ expect(deploy).to be_success
+ end
+
+ it 'schedules SuccessWorker and FinishedWorker when finishing a deploy' do
+ expect(Deployments::SuccessWorker).to receive(:perform_async)
+ expect(Deployments::FinishedWorker).to receive(:perform_async)
+
+ deploy.update_status('success')
+ end
+
+ it 'updates finished_at when transitioning to a finished status' do
+ Timecop.freeze do
+ deploy.update_status('success')
+
+ expect(deploy.read_attribute(:finished_at)).to eq(Time.now)
+ end
+ end
+ end
end
diff --git a/spec/models/pages_domain_spec.rb b/spec/models/pages_domain_spec.rb
index 4b65bf032d1..b1df13e8c2a 100644
--- a/spec/models/pages_domain_spec.rb
+++ b/spec/models/pages_domain_spec.rb
@@ -175,6 +175,16 @@ describe PagesDomain do
it { is_expected.to validate_presence_of(:verification_code) }
end
+ describe 'default values' do
+ it 'defaults wildcard to false' do
+ expect(subject.wildcard).to eq(false)
+ end
+
+ it 'defaults domain_type to project' do
+ expect(subject.domain_type).to eq('project')
+ end
+ end
+
describe '#verification_code' do
subject { pages_domain.verification_code }
@@ -305,6 +315,14 @@ describe PagesDomain do
end
describe '#update_daemon' do
+ context 'when domain_type is instance' do
+ it 'does nothing' do
+ expect(Projects::UpdatePagesConfigurationService).not_to receive(:new)
+
+ create(:pages_domain, domain_type: :instance)
+ end
+ end
+
it 'runs when the domain is created' do
domain = build(:pages_domain)
diff --git a/spec/models/serverless/domain_cluster_spec.rb b/spec/models/serverless/domain_cluster_spec.rb
new file mode 100644
index 00000000000..73d7d64d35e
--- /dev/null
+++ b/spec/models/serverless/domain_cluster_spec.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Serverless::DomainCluster do
+ subject { create(:serverless_domain_cluster) }
+
+ describe 'validations' do
+ it { is_expected.to validate_presence_of(:pages_domain) }
+ it { is_expected.to validate_presence_of(:knative) }
+ it { is_expected.to validate_presence_of(:uuid) }
+
+ it { is_expected.to validate_uniqueness_of(:uuid) }
+ it { is_expected.to validate_length_of(:uuid).is_equal_to(14) }
+ end
+
+ describe 'associations' do
+ it { is_expected.to belong_to(:pages_domain) }
+ it { is_expected.to belong_to(:knative) }
+ it { is_expected.to belong_to(:creator).optional }
+ end
+end
diff --git a/spec/requests/api/deployments_spec.rb b/spec/requests/api/deployments_spec.rb
index 6e78b747a8c..3dc8e5749d4 100644
--- a/spec/requests/api/deployments_spec.rb
+++ b/spec/requests/api/deployments_spec.rb
@@ -147,7 +147,7 @@ describe API::Deployments do
expect(response).to have_gitlab_http_status(500)
end
- it 'links any merged merge requests to the deployment' do
+ it 'links any merged merge requests to the deployment', :sidekiq_inline do
mr = create(
:merge_request,
:merged,
@@ -199,7 +199,7 @@ describe API::Deployments do
expect(json_response['ref']).to eq('master')
end
- it 'links any merged merge requests to the deployment' do
+ it 'links any merged merge requests to the deployment', :sidekiq_inline do
mr = create(
:merge_request,
:merged,
diff --git a/spec/services/deployments/create_service_spec.rb b/spec/services/deployments/create_service_spec.rb
index e41c8259ea9..6ab1f8635f7 100644
--- a/spec/services/deployments/create_service_spec.rb
+++ b/spec/services/deployments/create_service_spec.rb
@@ -3,67 +3,54 @@
require 'spec_helper'
describe Deployments::CreateService do
- let(:environment) do
- double(
- :environment,
- deployment_platform: double(:platform, cluster_id: 1),
- project_id: 2,
- id: 3
- )
- end
-
- let(:user) { double(:user) }
+ let(:user) { create(:user) }
describe '#execute' do
- let(:service) { described_class.new(environment, user, {}) }
-
- it 'does not run the AfterCreateService service if the deployment is not persisted' do
- deploy = double(:deployment, persisted?: false)
+ let(:project) { create(:project, :repository) }
+ let(:environment) { create(:environment, project: project) }
- expect(service)
- .to receive(:create_deployment)
- .and_return(deploy)
+ it 'creates a deployment' do
+ service = described_class.new(
+ environment,
+ user,
+ sha: 'b83d6e391c22777fca1ed3012fce84f633d7fed0',
+ ref: 'master',
+ tag: false,
+ status: 'success'
+ )
- expect(Deployments::AfterCreateService)
- .not_to receive(:new)
+ expect(Deployments::SuccessWorker).to receive(:perform_async)
+ expect(Deployments::FinishedWorker).to receive(:perform_async)
- expect(service.execute).to eq(deploy)
+ expect(service.execute).to be_persisted
end
- it 'runs the AfterCreateService service if the deployment is persisted' do
- deploy = double(:deployment, persisted?: true)
- after_service = double(:after_create_service)
-
- expect(service)
- .to receive(:create_deployment)
- .and_return(deploy)
-
- expect(Deployments::AfterCreateService)
- .to receive(:new)
- .with(deploy)
- .and_return(after_service)
+ it 'does not change the status if no status is given' do
+ service = described_class.new(
+ environment,
+ user,
+ sha: 'b83d6e391c22777fca1ed3012fce84f633d7fed0',
+ ref: 'master',
+ tag: false
+ )
- expect(after_service)
- .to receive(:execute)
+ expect(Deployments::SuccessWorker).not_to receive(:perform_async)
+ expect(Deployments::FinishedWorker).not_to receive(:perform_async)
- expect(service.execute).to eq(deploy)
+ expect(service.execute).to be_persisted
end
end
- describe '#create_deployment' do
- it 'creates a deployment' do
- environment = build(:environment)
- service = described_class.new(environment, user, {})
-
- expect(environment.deployments)
- .to receive(:create)
- .with(an_instance_of(Hash))
-
- service.create_deployment
+ describe '#deployment_attributes' do
+ let(:environment) do
+ double(
+ :environment,
+ deployment_platform: double(:platform, cluster_id: 1),
+ project_id: 2,
+ id: 3
+ )
end
- end
- describe '#deployment_attributes' do
it 'only includes attributes that we want to persist' do
service = described_class.new(
environment,
@@ -72,8 +59,7 @@ describe Deployments::CreateService do
tag: true,
sha: '123',
foo: 'bar',
- on_stop: 'stop',
- status: 'running'
+ on_stop: 'stop'
)
expect(service.deployment_attributes).to eq(
@@ -84,8 +70,7 @@ describe Deployments::CreateService do
tag: true,
sha: '123',
user: user,
- on_stop: 'stop',
- status: 'running'
+ on_stop: 'stop'
)
end
end
diff --git a/spec/services/deployments/update_service_spec.rb b/spec/services/deployments/update_service_spec.rb
index 8a918d28ffd..471e90de467 100644
--- a/spec/services/deployments/update_service_spec.rb
+++ b/spec/services/deployments/update_service_spec.rb
@@ -34,9 +34,9 @@ describe Deployments::UpdateService do
expect(deploy).to be_canceled
end
- it 'returns false when the status is not supported' do
- expect(described_class.new(deploy, status: 'kittens').execute)
- .to be_falsey
+ it 'raises ArgumentError if the status is invalid' do
+ expect { described_class.new(deploy, status: 'kittens').execute }
+ .to raise_error(ArgumentError)
end
it 'links merge requests when changing the status to success', :sidekiq_inline do