spec/chef/cookbooks/package/libraries/config/gitlab_spec.rb (67 lines of code) (raw):
require 'chef_helper'
RSpec.describe Gitlab do
context 'when using an attribute_block' do
it 'sets top level attributes to the provided root' do
Gitlab.attribute_block('gitlab') do
expect(Gitlab.attribute('test_attribute')[:parent]).to eq 'gitlab'
end
expect(Gitlab['test_attribute']).not_to be_nil
expect(Gitlab.sanitized_config['gitlab']).to include('test_attribute')
end
end
it 'sets top level attributes when no parent is provided' do
Gitlab.attribute('test_attribute')
expect(Gitlab['test_attribute']).not_to be_nil
expect(Gitlab.sanitized_config).to include('test_attribute')
end
it 'properly defines roles' do
role = Gitlab.role('test_node')
expect(Gitlab['test_node_role']).not_to be_nil
expect(Gitlab.sanitized_config['roles']).to include('test_node')
expect(role).to include(manage_services: true)
end
it 'supports overriding role default configuration' do
role = Gitlab.role('test_node', manage_services: false)
expect(Gitlab['test_node_role']).not_to be_nil
expect(role).to include(manage_services: false)
end
it 'supports overriding attribute default configuration' do
attribute = Gitlab.attribute('test_attribute', parent: 'example', priority: 40, enable: false, default: '')
expect(Gitlab['test_attribute']).to eq('')
expect(attribute).to include(parent: 'example', priority: 40, enable: false)
end
it 'disables ee attributes when EE is not enabled' do
allow(Gitlab).to receive(:[]).and_call_original
allow(Gitlab).to receive(:[]).with('edition').and_return(:ce)
expect(Gitlab.ee_attribute('test_attribute')[:ee]).to eq true
expect(Gitlab['test_attribute']).not_to be_nil
expect(Gitlab.sanitized_config).not_to include('test_attribute')
end
it 'enables ee attributes when EE is enabled' do
allow(Gitlab).to receive(:[]).and_call_original
allow(Gitlab).to receive(:[]).with('edition').and_return(:ee)
expect(Gitlab.ee_attribute('test_attribute')[:ee]).to eq true
expect(Gitlab['test_attribute']).not_to be_nil
expect(Gitlab.sanitized_config).to include('test_attribute')
end
it 'sorts attributes by sequence' do
Gitlab.attribute('last', priority: 99)
Gitlab.attribute('other1')
Gitlab.attribute('first', priority: -99)
Gitlab.attribute('other2')
expect(Gitlab.send(:sorted_settings).first[0]).to eq 'first'
expect(Gitlab.send(:sorted_settings).last[0]).to eq 'last'
end
it 'filters ee settings when sorting' do
Gitlab.attribute('test_attribute1')
Gitlab.attribute('test_attribute2', ee: true)
allow(Gitlab).to receive(:[]).and_call_original
allow(Gitlab).to receive(:[]).with('edition').and_return(:ce)
expect(Gitlab.send(:sorted_settings).map(&:first)).to include('test_attribute1')
expect(Gitlab.send(:sorted_settings).map(&:first)).not_to include('test_attribute2')
end
it 'allows passing a block to the attribute use method' do
attribute = Gitlab.attribute('test_attribute').use { 'test' }
expect(attribute.handler).to eq('test')
end
end