discourse/spec/controllers/embed_controller_spec.rb
2015-01-09 14:04:02 -03:00

59 lines
1.5 KiB
Ruby

require 'spec_helper'
describe EmbedController do
let(:host) { "eviltrout.com" }
let(:embed_url) { "http://eviltrout.com/2013/02/10/why-discourse-uses-emberjs.html" }
it "is 404 without an embed_url" do
get :comments
expect(response).not_to be_success
end
it "raises an error with a missing host" do
SiteSetting.stubs(:embeddable_host).returns(nil)
get :comments, embed_url: embed_url
expect(response).not_to be_success
end
context "with a host" do
before do
SiteSetting.stubs(:embeddable_host).returns(host)
end
it "raises an error with no referer" do
get :comments, embed_url: embed_url
expect(response).not_to be_success
end
context "success" do
before do
controller.request.stubs(:referer).returns(embed_url)
end
after do
expect(response).to be_success
expect(response.headers['X-Frame-Options']).to eq("ALLOWALL")
end
it "tells the topic retriever to work when no previous embed is found" do
TopicEmbed.expects(:topic_id_for_embed).returns(nil)
retriever = mock
TopicRetriever.expects(:new).returns(retriever)
retriever.expects(:retrieve)
get :comments, embed_url: embed_url
end
it "creates a topic view when a topic_id is found" do
TopicEmbed.expects(:topic_id_for_embed).returns(123)
TopicView.expects(:new).with(123, nil, {limit: 100, exclude_first: true, exclude_deleted_users: true})
get :comments, embed_url: embed_url
end
end
end
end