spec/chef/cookbooks/gitlab-ee/recipes/geo-secondary_disable_spec.rb (69 lines of code) (raw):
require 'chef_helper'
RSpec.describe 'gitlab-ee::geo-secondary_disable' do
let(:chef_run) { ChefSpec::SoloRunner.new(step_into: %w(templatesymlink)).converge('gitlab-ee::default') }
let(:database_yml_template) { chef_run.template('/var/opt/gitlab/gitlab-rails/etc/database.yml') }
let(:database_yml_file_content) { ChefSpec::Renderer.new(chef_run, database_yml_template).content }
let(:database_yml) { YAML.safe_load(database_yml_file_content, aliases: true, symbolize_names: true) }
before do
allow(Gitlab).to receive(:[]).and_call_original
end
describe 'when geo_secondary_role is disabled' do
before do
stub_gitlab_rb(geo_secondary_role: { enable: false })
end
context 'database.yml' do
shared_examples 'removes Geo database settings' do
it 'renders database.yml without geo database' do
expect(database_yml[:production].keys).not_to include(:geo)
end
context 'with geo database specified' do
before do
stub_gitlab_rb(
gitlab_rails: {
databases: {
geo: {
enable: true,
db_connect_timeout: 50
}
}
}
)
end
it 'renders database.yml without geo database' do
expect(database_yml[:production].keys).not_to include(:geo)
end
end
end
context 'when gitlab_rails is enabled' do
before do
stub_gitlab_rb(
gitlab_rails: {
enable: true
}
)
end
include_examples "removes Geo database settings"
end
context 'when geo-logcursor is enabled' do
before do
stub_gitlab_rb(
geo_logcursor: {
enable: true
}
)
end
include_examples "removes Geo database settings"
end
context 'when gitlab_rails and geo-logcursor are disabled' do
before do
stub_gitlab_rb(geo_postgresql: { enable: true },
gitlab_rails: { enable: false },
geo_logcursor: { enable: false })
end
it 'does not render the database.yml file' do
expect(chef_run).not_to create_templatesymlink('Removes the geo database settings from database.yml and create a symlink to Rails root')
end
end
end
end
end