Files
nairobi/spec/controllers/remote_translations_controller_spec.rb
Javi Martín cc628f0363 Raise an exception on open redirects
This way we'll add an extra layer of protection from attacks that might
cause our application to redirect to an external host.

There's one place where we're allowing redirects to external hosts,
though: administrators can link external resources in notifications, and
we're redirecting to them after marking the notification as read.

Since the tests for the remote translations controller were
(accidentally) using an external redirect, we're updating them to use a
relative URL.
2024-04-15 15:39:28 +02:00

46 lines
1.4 KiB
Ruby

require "rails_helper"
describe RemoteTranslationsController, :remote_translations do
describe "POST create", :delay_jobs do
let(:debate) { create(:debate) }
let(:remote_translations_params) do
[{ remote_translatable_id: debate.id.to_s,
remote_translatable_type: debate.class.to_s,
locale: :es }].to_json
end
before do
request.env["HTTP_REFERER"] = "/any_path"
end
it "create correctly remote translation" do
post :create, params: { remote_translations: remote_translations_params }
expect(RemoteTranslation.count).to eq(1)
end
it "create remote translation when same remote translation with error_message is enqueued" do
create(:remote_translation, remote_translatable: debate, locale: :es, error_message: "Has errors")
post :create, params: { remote_translations: remote_translations_params }
expect(RemoteTranslation.count).to eq(2)
end
it "not create remote translation when same remote translation is enqueued" do
create(:remote_translation, remote_translatable: debate, locale: :es)
post :create, params: { remote_translations: remote_translations_params }
expect(RemoteTranslation.count).to eq(1)
end
it "redirect_to request referer after create" do
post :create, params: { remote_translations: remote_translations_params }
expect(subject).to redirect_to "/any_path"
end
end
end