spec/gitlab/qa/component/gitaly_spec.rb (70 lines of code) (raw):
# frozen_string_literal: true
module Gitlab
module QA
describe Component::Gitaly do
subject(:gitaly_component) { described_class.new }
let(:full_ce_address) { 'registry.gitlab.com/foo/gitlab/gitlab-ce' }
let(:full_ce_address_with_complex_tag) { "#{full_ce_address}:omnibus-7263a2" }
describe '#release' do
context 'with no release' do
it 'defaults to CE' do
expect(gitaly_component.release.to_s).to eq 'gitlab/gitlab-ce:nightly'
end
end
end
describe '#release=' do
before do
gitaly_component.release = release
end
context 'when release is a Release object' do
let(:release) { Release.new('EE') }
it 'returns a correct release' do
expect(gitaly_component.release.to_s).to eq 'gitlab/gitlab-ee:nightly'
end
end
context 'when release is a string' do
context 'with a simple tag' do
let(:release) { full_ce_address_with_complex_tag }
it 'returns a correct release' do
expect(gitaly_component.release.to_s).to eq full_ce_address_with_complex_tag
end
end
end
end
describe '#name' do
before do
gitaly_component.release = Release.new('CE')
end
it 'returns a unique name' do
expect(gitaly_component.name).to match(/\Agitaly-(\w+){8}\z/)
end
end
describe '#reconfigure' do
let(:docker) { spy('docker') }
before do
stub_const('Gitlab::QA::Support::ShellCommand', docker)
gitaly_component.name = "gitaly-#{SecureRandom.hex(4)}"
end
it 'configures omnibus by writing gitlab.rb' do
gitaly_component.reconfigure
config = gitaly_component.gitaly_omnibus_configuration
expect(docker).to have_received(:new).with(
eq("docker exec #{gitaly_component.name} bash -c \"echo \\\"#{config}\\\" > /etc/gitlab/gitlab.rb;\""),
anything
)
end
end
describe '#serverhooks' do
let(:docker_engine) { spy('docker engine') }
let(:test_name) { "test-server-hooks-#{SecureRandom.hex(5)}" }
before do
stub_const('Gitlab::QA::Docker::Engine', docker_engine)
end
it 'adds git server hooks to the gitlab container' do
gitaly_component.name = test_name
expect(Support::ConfigScripts).to receive(:add_git_server_hooks).with(docker_engine, test_name)
gitaly_component.process_exec_commands
end
end
end
end
end