summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus G Thiel <linus@yesbabyyes.se>2016-10-05 18:13:49 +0200
committerLinus G Thiel <linus@yesbabyyes.se>2016-10-05 19:28:39 +0200
commit6b9671388d523a03b058e1cc467de77d805fc7a2 (patch)
tree624b3a8fb2bed7c6f0307065b7b108b543a4cf42
parentc36544de9fa07f9d9aaa162a7c70a9dc644ae23b (diff)
downloadgitlab-ce-6b9671388d523a03b058e1cc467de77d805fc7a2.tar.gz
Respond with 404 Not Found for non-existent tags
Non-existent tags should be handled with 404 Not Found.
-rw-r--r--CHANGELOG2
-rw-r--r--app/controllers/projects/tags_controller.rb2
-rw-r--r--spec/controllers/projects/tags_controller_spec.rb14
3 files changed, 18 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 07b2b23003b..1b461f54729 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -90,6 +90,8 @@ v 8.12.1
- Fix issue with search filter labels not displaying
v 8.12.0
+v 8.12.0 (unreleased)
+ - Respond with 404 Not Found for non-existent tags
- Update the rouge gem to 2.0.6, which adds highlighting support for JSX, Prometheus, and others. !6251
- Only check :can_resolve permission if the note is resolvable
- Bump fog-aws to v0.11.0 to support ap-south-1 region
diff --git a/app/controllers/projects/tags_controller.rb b/app/controllers/projects/tags_controller.rb
index 6ea8ee62bc5..40899abf6ee 100644
--- a/app/controllers/projects/tags_controller.rb
+++ b/app/controllers/projects/tags_controller.rb
@@ -20,6 +20,8 @@ class Projects::TagsController < Projects::ApplicationController
def show
@tag = @repository.find_tag(params[:id])
+ return render_404 if @tag.nil?
+
@release = @project.releases.find_or_initialize_by(tag: @tag.name)
@commit = @repository.commit(@tag.target)
end
diff --git a/spec/controllers/projects/tags_controller_spec.rb b/spec/controllers/projects/tags_controller_spec.rb
index a6995145cc1..5e661c2c41d 100644
--- a/spec/controllers/projects/tags_controller_spec.rb
+++ b/spec/controllers/projects/tags_controller_spec.rb
@@ -17,4 +17,18 @@ describe Projects::TagsController do
expect(assigns(:releases)).not_to include(invalid_release)
end
end
+
+ describe 'GET show' do
+ before { get :show, namespace_id: project.namespace.to_param, project_id: project.to_param, id: id }
+
+ context "valid tag" do
+ let(:id) { 'v1.0.0' }
+ it { is_expected.to respond_with(:success) }
+ end
+
+ context "invalid tag" do
+ let(:id) { 'latest' }
+ it { is_expected.to respond_with(:not_found) }
+ end
+ end
end