diff --git a/config/routes.rb b/config/routes.rb index cebaf579dce..5636b1a3520 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -213,9 +213,9 @@ Discourse::Application.routes.draw do # They have periods in their URLs often: get 'site_texts' => 'site_texts#index' - get 'site_texts/(:id)' => 'site_texts#show', constraints: { id: /[\w.\-\+]+/i } - put 'site_texts/(:id)' => 'site_texts#update', constraints: { id: /[\w.\-\+]+/i } - delete 'site_texts/(:id)' => 'site_texts#revert', constraints: { id: /[\w.\-\+]+/i } + get 'site_texts/:id' => 'site_texts#show', constraints: { id: /[\w.\-\+]+/i } + put 'site_texts/:id.json' => 'site_texts#update', constraints: { id: /[\w.\-\+]+/i } + delete 'site_texts/:id' => 'site_texts#revert', constraints: { id: /[\w.\-\+]+/i } get 'email_templates' => 'email_templates#index' get 'email_templates/(:id)' => 'email_templates#show', constraints: { id: /[0-9a-z_.]+/ } diff --git a/spec/requests/admin/site_texts_controller_spec.rb b/spec/requests/admin/site_texts_controller_spec.rb index c7fb685fb81..7df5e849b53 100644 --- a/spec/requests/admin/site_texts_controller_spec.rb +++ b/spec/requests/admin/site_texts_controller_spec.rb @@ -3,7 +3,6 @@ require 'rails_helper' RSpec.describe Admin::SiteTextsController do let(:admin) { Fabricate(:admin) } let(:user) { Fabricate(:user) } - let(:headers) { { ACCEPT: 'application/json' } } after do TranslationOverride.delete_all @@ -12,17 +11,20 @@ RSpec.describe Admin::SiteTextsController do context "#update" do it "raises an error if you aren't logged in" do - put '/admin/customize/site_texts/some_key', params: { + put '/admin/customize/site_texts/some_key.json', params: { site_text: { value: 'foo' } - }, headers: headers + } + expect(response.status).to eq(404) end it "raises an error if you aren't an admin" do sign_in(user) + put '/admin/customize/site_texts/some_key', params: { site_text: { value: 'foo' } - }, headers: headers + } + expect(response.status).to eq(404) end @@ -32,39 +34,36 @@ RSpec.describe Admin::SiteTextsController do end it "returns 'not found' when an unknown key is used" do - put '/admin/customize/site_texts/some_key', params: { + put '/admin/customize/site_texts/some_key.json', params: { site_text: { value: 'foo' } - }, headers: headers + } - expect(response).not_to be_success + expect(response.status).to eq(404) - json = ::JSON.parse(response.body) + json = JSON.parse(response.body) expect(json['error_type']).to eq('not_found') end it "works as expectd with correct keys" do - put '/admin/customize/site_texts/title', params: { + put '/admin/customize/site_texts/title.json', params: { site_text: { value: 'foo' } - }, headers: headers + } - expect(response).to be_success + expect(response.status).to eq(200) json = ::JSON.parse(response.body) - expect(json).to be_present - site_text = json['site_text'] - expect(site_text).to be_present expect(site_text['id']).to eq('title') expect(site_text['value']).to eq('foo') end it "does not update restricted keys" do - put '/admin/customize/site_texts/user_notifications.confirm_old_email.title', params: { + put '/admin/customize/site_texts/user_notifications.confirm_old_email.title.json', params: { site_text: { value: 'foo' } - }, headers: headers + } - expect(response).not_to be_success + expect(response.status).to eq(404) json = ::JSON.parse(response.body) expect(json['error_type']).to eq('not_found')