summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrpereira2 <rpereira@gitlab.com>2019-08-23 16:55:26 +0530
committerrpereira2 <rpereira@gitlab.com>2019-08-23 17:23:01 +0530
commitedb0cd080f98cfa96ddbca665a7a9c34bf62fbcc (patch)
treed237a1c37f13f361abe94ab16f44216b788bc1d2
parente4050e17c0c7ed6c057bad4d6176103159233062 (diff)
downloadgitlab-ce-56883-migration.tar.gz
Create a stub_config spec helper and use it56883-migration
- Also correct Migrateable to Migratable. - Use stub_application_setting in migration spec.
-rw-r--r--db/post_migrate/20190809072552_set_self_monitoring_project_alerting_token.rb6
-rw-r--r--lib/gitlab/database_importers/self_monitoring/project/create_service.rb34
-rw-r--r--spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb31
-rw-r--r--spec/migrations/add_gitlab_instance_administration_project_spec.rb32
-rw-r--r--spec/support/helpers/stub_configuration.rb4
5 files changed, 45 insertions, 62 deletions
diff --git a/db/post_migrate/20190809072552_set_self_monitoring_project_alerting_token.rb b/db/post_migrate/20190809072552_set_self_monitoring_project_alerting_token.rb
index 1a3ebb33915..0c4faebc548 100644
--- a/db/post_migrate/20190809072552_set_self_monitoring_project_alerting_token.rb
+++ b/db/post_migrate/20190809072552_set_self_monitoring_project_alerting_token.rb
@@ -3,7 +3,7 @@
class SetSelfMonitoringProjectAlertingToken < ActiveRecord::Migration[5.2]
DOWNTIME = false
- module Migrateable
+ module Migratable
module Alerting
class ProjectAlertingSetting < ApplicationRecord
self.table_name = 'project_alerting_settings'
@@ -54,7 +54,7 @@ class SetSelfMonitoringProjectAlertingToken < ActiveRecord::Migration[5.2]
def up
Gitlab.ee do
- project = Migrateable::ApplicationSetting.current_without_cache&.instance_administration_project
+ project = Migratable::ApplicationSetting.current_without_cache&.instance_administration_project
if project
setup_alertmanager_token(project)
@@ -64,7 +64,7 @@ class SetSelfMonitoringProjectAlertingToken < ActiveRecord::Migration[5.2]
def down
Gitlab.ee do
- Migrateable::ApplicationSetting.current_without_cache
+ Migratable::ApplicationSetting.current_without_cache
&.instance_administration_project
&.alerting_setting
&.destroy!
diff --git a/lib/gitlab/database_importers/self_monitoring/project/create_service.rb b/lib/gitlab/database_importers/self_monitoring/project/create_service.rb
index bdc117077fe..164854e1e1a 100644
--- a/lib/gitlab/database_importers/self_monitoring/project/create_service.rb
+++ b/lib/gitlab/database_importers/self_monitoring/project/create_service.rb
@@ -4,39 +4,7 @@ module Gitlab
module DatabaseImporters
module SelfMonitoring
module Project
- module Stepable
- extend ActiveSupport::Concern
-
- def steps
- self.class._all_steps
- end
-
- def execute_steps
- initial_result = {}
-
- steps.inject(initial_result) do |previous_result, callback|
- result = method(callback).call
-
- if result[:status] == :error
- result[:failed_step] = callback
-
- break result
- end
-
- previous_result.merge(result)
- end
- end
-
- class_methods do
- def _all_steps
- @_all_steps ||= []
- end
-
- def steps(*methods)
- _all_steps.concat methods
- end
- end
- end
+ include Stepable
class CreateService < ::BaseService
include Stepable
diff --git a/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb b/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb
index c5e7ee8826c..9bd0d800086 100644
--- a/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb
+++ b/spec/lib/gitlab/database_importers/self_monitoring/project/create_service_spec.rb
@@ -7,14 +7,14 @@ describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService do
let(:result) { subject.execute! }
let(:prometheus_settings) do
- OpenStruct.new(
+ {
enable: true,
listen_address: 'localhost:9090'
- )
+ }
end
before do
- allow(Gitlab.config).to receive(:prometheus).and_return(prometheus_settings)
+ stub_config(prometheus: prometheus_settings)
end
context 'without application_settings' do
@@ -176,8 +176,11 @@ describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService do
end
context 'with non default prometheus address' do
- before do
- prometheus_settings.listen_address = 'https://localhost:9090'
+ let(:prometheus_settings) do
+ {
+ enable: true,
+ listen_address: 'https://localhost:9090'
+ }
end
it_behaves_like 'has prometheus service', 'https://localhost:9090'
@@ -195,8 +198,11 @@ describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService do
end
context 'when prometheus setting is disabled in gitlab.yml' do
- before do
- prometheus_settings.enable = false
+ let(:prometheus_settings) do
+ {
+ enable: false,
+ listen_address: 'http://localhost:9090'
+ }
end
it 'does not configure prometheus' do
@@ -206,9 +212,7 @@ describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService do
end
context 'when prometheus listen address is blank in gitlab.yml' do
- before do
- prometheus_settings.listen_address = ''
- end
+ let(:prometheus_settings) { { enable: true, listen_address: '' } }
it 'does not configure prometheus' do
expect(result).to include(status: :success)
@@ -246,8 +250,11 @@ describe Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService do
end
context 'when prometheus manual configuration cannot be saved' do
- before do
- prometheus_settings.listen_address = 'httpinvalid://localhost:9090'
+ let(:prometheus_settings) do
+ {
+ enable: true,
+ listen_address: 'httpinvalid://localhost:9090'
+ }
end
it 'returns error' do
diff --git a/spec/migrations/add_gitlab_instance_administration_project_spec.rb b/spec/migrations/add_gitlab_instance_administration_project_spec.rb
index 3f67a76cb5c..08e20a4e8ff 100644
--- a/spec/migrations/add_gitlab_instance_administration_project_spec.rb
+++ b/spec/migrations/add_gitlab_instance_administration_project_spec.rb
@@ -15,16 +15,16 @@ describe AddGitlabInstanceAdministrationProject, :migration do
end
let(:prometheus_settings) do
- OpenStruct.new(
+ {
enable: true,
listen_address: 'localhost:9090'
- )
+ }
end
before do
stub_env('IN_MEMORY_APPLICATION_SETTINGS', 'false')
- allow(Gitlab.config).to receive(:prometheus).and_return(prometheus_settings)
+ stub_config(prometheus: prometheus_settings)
end
describe 'down' do
@@ -70,7 +70,7 @@ describe AddGitlabInstanceAdministrationProject, :migration do
let!(:user) { users.create!(admin: true, email: 'admin1@example.com', projects_limit: 10, state: :active) }
before do
- application_setting.update!(allow_local_requests_from_web_hooks_and_services: true)
+ stub_application_setting(allow_local_requests_from_web_hooks_and_services: true)
end
shared_examples 'has prometheus service' do |listen_address|
@@ -88,7 +88,7 @@ describe AddGitlabInstanceAdministrationProject, :migration do
it_behaves_like 'has prometheus service', 'http://localhost:9090'
- it 'creates group' do
+ it 'creates GitLab Instance Administrator group' do
migrate!
expect(group).to be_persisted
@@ -173,7 +173,7 @@ describe AddGitlabInstanceAdministrationProject, :migration do
notification_level: NotificationSetting.levels[:global]
)
- application_setting.update!(instance_administration_project_id: project.id)
+ stub_application_setting(instance_administration_project: project)
migrate!
@@ -183,7 +183,7 @@ describe AddGitlabInstanceAdministrationProject, :migration do
context 'when local requests from hooks and services are not allowed' do
before do
- application_setting.update!(allow_local_requests_from_web_hooks_and_services: false)
+ stub_application_setting(allow_local_requests_from_web_hooks_and_services: false)
end
it_behaves_like 'has prometheus service', 'http://localhost:9090'
@@ -201,8 +201,11 @@ describe AddGitlabInstanceAdministrationProject, :migration do
end
context 'with non default prometheus address' do
- before do
- prometheus_settings.listen_address = 'https://localhost:9090'
+ let(:prometheus_settings) do
+ {
+ enable: true,
+ listen_address: 'https://localhost:9090'
+ }
end
it_behaves_like 'has prometheus service', 'https://localhost:9090'
@@ -221,8 +224,11 @@ describe AddGitlabInstanceAdministrationProject, :migration do
end
context 'when prometheus setting is disabled in gitlab.yml' do
- before do
- prometheus_settings.enable = false
+ let(:prometheus_settings) do
+ {
+ enable: false,
+ listen_address: 'localhost:9090'
+ }
end
it 'does not configure prometheus' do
@@ -233,9 +239,7 @@ describe AddGitlabInstanceAdministrationProject, :migration do
end
context 'when prometheus listen address is blank in gitlab.yml' do
- before do
- prometheus_settings.listen_address = ''
- end
+ let(:prometheus_settings) { { enable: true, listen_address: '' } }
it 'does not configure prometheus' do
migrate!
diff --git a/spec/support/helpers/stub_configuration.rb b/spec/support/helpers/stub_configuration.rb
index c8b2bf040e6..dec7898d8d2 100644
--- a/spec/support/helpers/stub_configuration.rb
+++ b/spec/support/helpers/stub_configuration.rb
@@ -30,6 +30,10 @@ module StubConfiguration
allow(Gitlab.config.gitlab).to receive_messages(to_settings(messages))
end
+ def stub_config(messages)
+ allow(Gitlab.config).to receive_messages(to_settings(messages))
+ end
+
def stub_default_url_options(host: "localhost", protocol: "http")
url_options = { host: host, protocol: protocol }
allow(Rails.application.routes).to receive(:default_url_options).and_return(url_options)