diff --git a/lib/topic_creator.rb b/lib/topic_creator.rb index 396dabb4f3c..66c3d09520e 100644 --- a/lib/topic_creator.rb +++ b/lib/topic_creator.rb @@ -121,7 +121,9 @@ class TopicCreator category = find_category @guardian.ensure_can_create!(Topic, category) unless (@opts[:skip_validations] || @opts[:archetype] == Archetype.private_message) - raise Discourse::NotFound if @opts[:category].present? && category.nil? + if @opts[:category].present? && category.nil? + raise Discourse::InvalidParameters.new(:category) + end topic_params[:category_id] = category.id if category.present? diff --git a/spec/requests/posts_controller_spec.rb b/spec/requests/posts_controller_spec.rb index 73c863b63c3..dea1680497e 100644 --- a/spec/requests/posts_controller_spec.rb +++ b/spec/requests/posts_controller_spec.rb @@ -787,21 +787,12 @@ describe PostsController do raw: 'this is test body', category: 'invalid' } - expect(response.status).to eq(404) - end - it 'can create topics with an empty category param' do - user = Fabricate(:admin) - master_key = ApiKey.create_master_key.key + expect(response.status).to eq(400) - post "/posts.json", params: { - api_username: user.username, - api_key: master_key, - title: 'title for a topic without a category', - raw: 'body for my topic without a category', - category: '' - } - expect(response.status).to eq(200) + expect(JSON.parse(response.body)["errors"]).to include( + I18n.t("invalid_params", message: "category") + ) end end