summaryrefslogtreecommitdiff
path: root/spec/controllers/projects/registry/tags_controller_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/controllers/projects/registry/tags_controller_spec.rb')
-rw-r--r--spec/controllers/projects/registry/tags_controller_spec.rb40
1 files changed, 34 insertions, 6 deletions
diff --git a/spec/controllers/projects/registry/tags_controller_spec.rb b/spec/controllers/projects/registry/tags_controller_spec.rb
index c6e063d8229..5ab32b7d81d 100644
--- a/spec/controllers/projects/registry/tags_controller_spec.rb
+++ b/spec/controllers/projects/registry/tags_controller_spec.rb
@@ -10,6 +10,8 @@ describe Projects::Registry::TagsController do
create(:container_repository, name: 'image', project: project)
end
+ let(:service) { double('service') }
+
before do
sign_in(user)
stub_container_registry_config(enabled: true)
@@ -36,6 +38,12 @@ describe Projects::Registry::TagsController do
expect(response).to match_response_schema('registry/tags')
expect(response).to include_pagination_headers
end
+
+ it 'tracks the event' do
+ expect(Gitlab::Tracking).to receive(:event).with(anything, 'list_tags', {})
+
+ get_tags
+ end
end
context 'when user can read the registry' do
@@ -84,17 +92,24 @@ describe Projects::Registry::TagsController do
context 'when there is matching tag present' do
before do
- stub_container_registry_tags(repository: repository.path, tags: %w[rc1 test.])
+ stub_container_registry_tags(repository: repository.path, tags: %w[rc1], with_manifest: true)
end
it 'makes it possible to delete regular tag' do
- expect_any_instance_of(ContainerRegistry::Tag).to receive(:delete)
+ expect_delete_tags(%w[rc1])
destroy_tag('rc1')
end
it 'makes it possible to delete a tag that ends with a dot' do
- expect_any_instance_of(ContainerRegistry::Tag).to receive(:delete)
+ expect_delete_tags(%w[test.])
+
+ destroy_tag('test.')
+ end
+
+ it 'tracks the event' do
+ expect_delete_tags(%w[test.])
+ expect(controller).to receive(:track_event).with(:delete_tag)
destroy_tag('test.')
end
@@ -125,11 +140,19 @@ describe Projects::Registry::TagsController do
stub_container_registry_tags(repository: repository.path, tags: %w[rc1 test.])
end
+ let(:tags) { %w[tc1 test.] }
+
it 'makes it possible to delete tags in bulk' do
- allow_any_instance_of(ContainerRegistry::Tag).to receive(:delete) { |*args| ContainerRegistry::Tag.delete(*args) }
- expect(ContainerRegistry::Tag).to receive(:delete).exactly(2).times
+ expect_delete_tags(tags)
+
+ bulk_destroy_tags(tags)
+ end
+
+ it 'tracks the event' do
+ expect_delete_tags(tags)
+ expect(Gitlab::Tracking).to receive(:event).with(anything, 'delete_tag_bulk', {})
- bulk_destroy_tags(['rc1', 'test.'])
+ bulk_destroy_tags(tags)
end
end
end
@@ -146,4 +169,9 @@ describe Projects::Registry::TagsController do
format: :json
end
end
+
+ def expect_delete_tags(tags, status = :success)
+ expect(service).to receive(:execute).with(repository) { { status: status } }
+ expect(Projects::ContainerRepository::DeleteTagsService).to receive(:new).with(repository.project, user, tags: tags) { service }
+ end
end