From 74a118c13a096ad6748b1ab9c50aa9fc6eeee789 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Thu, 12 Nov 2020 03:21:53 +0200 Subject: [PATCH] FIX: Ensure staff can see /tag/none (#11208) TopicQueryParams#build_topic_list_options changes params which could lead to options[:no_tags] and options[:tags] be set simultaneously. --- app/controllers/tags_controller.rb | 1 + spec/requests/tags_controller_spec.rb | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index bc2e5c106b2..ea4909f38fc 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -453,6 +453,7 @@ class TagsController < ::ApplicationController options[:no_subcategories] = true if params[:no_subcategories] == 'true' if params[:tag_id] == 'none' + options.delete(:tags) options[:no_tags] = true else options[:tags] = tag_params diff --git a/spec/requests/tags_controller_spec.rb b/spec/requests/tags_controller_spec.rb index 15ad2d9b119..ffcbe86a3a3 100644 --- a/spec/requests/tags_controller_spec.rb +++ b/spec/requests/tags_controller_spec.rb @@ -123,6 +123,8 @@ describe TagsController do describe '#show' do fab!(:tag) { Fabricate(:tag, name: 'test') } + fab!(:topic_without_tags) { Fabricate(:topic) } + fab!(:topic_with_tags) { Fabricate(:topic, tags: [tag]) } it "should return the right response" do get "/tag/test.json" @@ -162,6 +164,15 @@ describe TagsController do expect(response.status).to eq(200) end + it "handles special tag 'none'" do + SiteSetting.allow_staff_to_tag_pms = true + + sign_in(admin) + + get "/tag/none.json" + expect(response.parsed_body['topic_list']['topics'].length).to eq(1) + end + context "with a category in the path" do fab!(:topic_in_category) { Fabricate(