blob: 1ab88ec0fffc05cb3686ff0eee2d6f9e7737025a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'Project > Settings > Packages and registries > Container registry tag expiration policy',
feature_category: :groups_and_projects do
let_it_be(:user) { create(:user) }
let_it_be(:project, reload: true) { create(:project, namespace: user.namespace) }
let(:container_registry_enabled) { true }
let(:container_registry_enabled_on_project) { ProjectFeature::ENABLED }
subject { visit cleanup_image_tags_project_settings_packages_and_registries_path(project) }
before do
project.project_feature.update!(container_registry_access_level: container_registry_enabled_on_project)
project.container_expiration_policy.update!(enabled: true)
sign_in(user)
stub_container_registry_config(enabled: container_registry_enabled)
end
context 'as owner', :js do
it 'shows active tab on sidebar' do
subject
expect(find('.sidebar-top-level-items > li.active')).to have_content('Settings')
expect(find('.sidebar-sub-level-items > li.active:not(.fly-out-top-item)'))
.to have_content('Packages and registries')
end
it 'shows available section' do
subject
expect(find('.breadcrumbs')).to have_content('Cleanup policies')
section = find('[data-testid="container-expiration-policy-project-settings"]')
expect(section).to have_text 'Cleanup policies'
end
it 'passes axe automated accessibility testing' do
subject
wait_for_requests
expect(page).to be_axe_clean.within('[data-testid="container-expiration-policy-project-settings"]')
.skipping :'link-in-text-block'
end
it 'saves cleanup policy submit the form' do
subject
within '[data-testid="container-expiration-policy-project-settings"]' do
select('Every day', from: 'Run cleanup')
select('50 tags per image name', from: 'Keep the most recent:')
fill_in('Keep tags matching:', with: 'stable')
select('7 days', from: 'Remove tags older than:')
fill_in('Remove tags matching:', with: '.*-production')
submit_button = find('[data-testid="save-button"')
expect(submit_button).not_to be_disabled
submit_button.click
end
expect(page).to have_current_path(project_settings_packages_and_registries_path(project))
expect(find('.gl-alert-body')).to have_content('Cleanup policy successfully saved.')
end
it 'does not save cleanup policy submit form with invalid regex' do
subject
within '[data-testid="container-expiration-policy-project-settings"]' do
fill_in('Remove tags matching:', with: '*-production')
submit_button = find('[data-testid="save-button"')
expect(submit_button).not_to be_disabled
submit_button.click
end
expect(find('.gl-toast')).to have_content('Something went wrong while updating the cleanup policy.')
end
end
context 'with a project without expiration policy', :js do
before do
project.container_expiration_policy.destroy!
end
context 'with container_expiration_policies_enable_historic_entries enabled' do
before do
stub_application_setting(container_expiration_policies_enable_historic_entries: true)
end
it 'displays the related section' do
subject
within '[data-testid="container-expiration-policy-project-settings"]' do
expect(find('[data-testid="enable-toggle"]'))
.to have_content('Disabled - Tags will not be automatically deleted.')
end
end
end
context 'with container_expiration_policies_enable_historic_entries disabled' do
before do
stub_application_setting(container_expiration_policies_enable_historic_entries: false)
end
it 'does not display the related section' do
subject
within '[data-testid="container-expiration-policy-project-settings"]' do
expect(find('.gl-alert-title')).to have_content('Cleanup policy for tags is disabled')
end
end
end
end
context 'when registry is disabled' do
let(:container_registry_enabled) { false }
it 'does not exists' do
subject
expect(page).to have_gitlab_http_status(:not_found)
end
end
context 'when container registry is disabled on project' do
let(:container_registry_enabled_on_project) { ProjectFeature::DISABLED }
it 'does not exists' do
subject
expect(page).to have_gitlab_http_status(:not_found)
end
end
end
|