diff options
Diffstat (limited to 'spec/controllers/projects/registry/tags_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/registry/tags_controller_spec.rb | 40 |
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 |