202 lines
6.5 KiB
Ruby
202 lines
6.5 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
RSpec.shared_examples 'when regex matching everything is specified' do
|
||
|
|service_response_extra: {}, supports_caching: false, delete_expectations:|
|
||
|
let(:params) do
|
||
|
{ 'name_regex_delete' => '.*' }
|
||
|
end
|
||
|
|
||
|
it_behaves_like 'removing the expected tags',
|
||
|
service_response_extra: service_response_extra,
|
||
|
supports_caching: supports_caching,
|
||
|
delete_expectations: delete_expectations
|
||
|
|
||
|
context 'with deprecated name_regex param' do
|
||
|
let(:params) do
|
||
|
{ 'name_regex' => '.*' }
|
||
|
end
|
||
|
|
||
|
it_behaves_like 'removing the expected tags',
|
||
|
service_response_extra: service_response_extra,
|
||
|
supports_caching: supports_caching,
|
||
|
delete_expectations: delete_expectations
|
||
|
end
|
||
|
end
|
||
|
|
||
|
RSpec.shared_examples 'when delete regex matching specific tags is used' do
|
||
|
|service_response_extra: {}, supports_caching: false|
|
||
|
let(:params) do
|
||
|
{ 'name_regex_delete' => 'C|D' }
|
||
|
end
|
||
|
|
||
|
it_behaves_like 'removing the expected tags',
|
||
|
service_response_extra: service_response_extra,
|
||
|
supports_caching: supports_caching,
|
||
|
delete_expectations: [%w[C D]]
|
||
|
end
|
||
|
|
||
|
RSpec.shared_examples 'when delete regex matching specific tags is used with overriding allow regex' do
|
||
|
|service_response_extra: {}, supports_caching: false|
|
||
|
let(:params) do
|
||
|
{
|
||
|
'name_regex_delete' => 'C|D',
|
||
|
'name_regex_keep' => 'C'
|
||
|
}
|
||
|
end
|
||
|
|
||
|
it_behaves_like 'removing the expected tags',
|
||
|
service_response_extra: service_response_extra,
|
||
|
supports_caching: supports_caching,
|
||
|
delete_expectations: [%w[D]]
|
||
|
|
||
|
context 'with name_regex_delete overriding deprecated name_regex' do
|
||
|
let(:params) do
|
||
|
{
|
||
|
'name_regex' => 'C|D',
|
||
|
'name_regex_delete' => 'D'
|
||
|
}
|
||
|
end
|
||
|
|
||
|
it_behaves_like 'removing the expected tags',
|
||
|
service_response_extra: service_response_extra,
|
||
|
supports_caching: supports_caching,
|
||
|
delete_expectations: [%w[D]]
|
||
|
end
|
||
|
end
|
||
|
|
||
|
RSpec.shared_examples 'with allow regex value' do
|
||
|
|service_response_extra: {}, supports_caching: false, delete_expectations:|
|
||
|
let(:params) do
|
||
|
{
|
||
|
'name_regex_delete' => '.*',
|
||
|
'name_regex_keep' => 'B.*'
|
||
|
}
|
||
|
end
|
||
|
|
||
|
it_behaves_like 'removing the expected tags',
|
||
|
service_response_extra: service_response_extra,
|
||
|
supports_caching: supports_caching,
|
||
|
delete_expectations: delete_expectations
|
||
|
end
|
||
|
|
||
|
RSpec.shared_examples 'when keeping only N tags' do
|
||
|
|service_response_extra: {}, supports_caching: false, delete_expectations:|
|
||
|
let(:params) do
|
||
|
{
|
||
|
'name_regex' => 'A|B.*|C',
|
||
|
'keep_n' => 1
|
||
|
}
|
||
|
end
|
||
|
|
||
|
it 'sorts tags by date' do
|
||
|
delete_expectations.each { |expectation| expect_delete(expectation) }
|
||
|
expect_no_caching unless supports_caching
|
||
|
|
||
|
expect(service).to receive(:order_by_date_desc).at_least(:once).and_call_original
|
||
|
|
||
|
is_expected.to eq(expected_service_response(deleted: delete_expectations.flatten).merge(service_response_extra))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
RSpec.shared_examples 'when not keeping N tags' do
|
||
|
|service_response_extra: {}, supports_caching: false, delete_expectations:|
|
||
|
let(:params) do
|
||
|
{ 'name_regex' => 'A|B.*|C' }
|
||
|
end
|
||
|
|
||
|
it 'does not sort tags by date' do
|
||
|
delete_expectations.each { |expectation| expect_delete(expectation) }
|
||
|
expect_no_caching unless supports_caching
|
||
|
|
||
|
expect(service).not_to receive(:order_by_date_desc)
|
||
|
|
||
|
is_expected.to eq(expected_service_response(deleted: delete_expectations.flatten).merge(service_response_extra))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
RSpec.shared_examples 'when removing keeping only 3' do
|
||
|
|service_response_extra: {}, supports_caching: false, delete_expectations:|
|
||
|
let(:params) do
|
||
|
{ 'name_regex_delete' => '.*',
|
||
|
'keep_n' => 3 }
|
||
|
end
|
||
|
|
||
|
it_behaves_like 'removing the expected tags',
|
||
|
service_response_extra: service_response_extra,
|
||
|
supports_caching: supports_caching,
|
||
|
delete_expectations: delete_expectations
|
||
|
end
|
||
|
|
||
|
RSpec.shared_examples 'when removing older than 1 day' do
|
||
|
|service_response_extra: {}, supports_caching: false, delete_expectations:|
|
||
|
let(:params) do
|
||
|
{
|
||
|
'name_regex_delete' => '.*',
|
||
|
'older_than' => '1 day'
|
||
|
}
|
||
|
end
|
||
|
|
||
|
it_behaves_like 'removing the expected tags',
|
||
|
service_response_extra: service_response_extra,
|
||
|
supports_caching: supports_caching,
|
||
|
delete_expectations: delete_expectations
|
||
|
end
|
||
|
|
||
|
RSpec.shared_examples 'when combining all parameters' do
|
||
|
|service_response_extra: {}, supports_caching: false, delete_expectations:|
|
||
|
let(:params) do
|
||
|
{
|
||
|
'name_regex_delete' => '.*',
|
||
|
'keep_n' => 1,
|
||
|
'older_than' => '1 day'
|
||
|
}
|
||
|
end
|
||
|
|
||
|
it_behaves_like 'removing the expected tags',
|
||
|
service_response_extra: service_response_extra,
|
||
|
supports_caching: supports_caching,
|
||
|
delete_expectations: delete_expectations
|
||
|
end
|
||
|
|
||
|
RSpec.shared_examples 'when running a container_expiration_policy' do
|
||
|
|service_response_extra: {}, supports_caching: false, delete_expectations:|
|
||
|
let(:user) { nil }
|
||
|
|
||
|
context 'with valid container_expiration_policy param' do
|
||
|
let(:params) do
|
||
|
{
|
||
|
'name_regex_delete' => '.*',
|
||
|
'keep_n' => 1,
|
||
|
'older_than' => '1 day',
|
||
|
'container_expiration_policy' => true
|
||
|
}
|
||
|
end
|
||
|
|
||
|
it 'removes the expected tags' do
|
||
|
delete_expectations.each { |expectation| expect_delete(expectation, container_expiration_policy: true) }
|
||
|
expect_no_caching unless supports_caching
|
||
|
|
||
|
is_expected.to eq(expected_service_response(deleted: delete_expectations.flatten).merge(service_response_extra))
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
RSpec.shared_examples 'not removing anything' do |service_response_extra: {}, supports_caching: false|
|
||
|
it 'does not remove anything' do
|
||
|
expect(Projects::ContainerRepository::DeleteTagsService).not_to receive(:new)
|
||
|
expect_no_caching unless supports_caching
|
||
|
|
||
|
is_expected.to eq(expected_service_response(deleted: []).merge(service_response_extra))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
RSpec.shared_examples 'removing the expected tags' do
|
||
|
|service_response_extra: {}, supports_caching: false, delete_expectations:|
|
||
|
it 'removes the expected tags' do
|
||
|
delete_expectations.each { |expectation| expect_delete(expectation) }
|
||
|
expect_no_caching unless supports_caching
|
||
|
|
||
|
is_expected.to eq(expected_service_response(deleted: delete_expectations.flatten).merge(service_response_extra))
|
||
|
end
|
||
|
end
|