diff options
author | rpereira2 <rpereira@gitlab.com> | 2019-08-23 16:55:26 +0530 |
---|---|---|
committer | rpereira2 <rpereira@gitlab.com> | 2019-08-23 17:23:01 +0530 |
commit | edb0cd080f98cfa96ddbca665a7a9c34bf62fbcc (patch) | |
tree | d237a1c37f13f361abe94ab16f44216b788bc1d2 | |
parent | e4050e17c0c7ed6c057bad4d6176103159233062 (diff) | |
download | gitlab-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.
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) |