write FetchController spec
This commit is contained in:
parent
176425f881
commit
198e23ca65
1 changed files with 83 additions and 0 deletions
|
|
@ -0,0 +1,83 @@
|
|||
module DiasporaFederation
|
||||
describe FetchController, type: :controller do
|
||||
routes { DiasporaFederation::Engine.routes }
|
||||
|
||||
let(:guid) { "12345678901234567890" }
|
||||
let(:post) { FactoryGirl.build(:status_message_entity, guid: guid, author: alice.diaspora_id) }
|
||||
|
||||
describe "GET #fetch" do
|
||||
it "returns the magic-envelope with the status message" do
|
||||
expect(DiasporaFederation.callbacks).to receive(:trigger).with(
|
||||
:fetch_public_entity, "StatusMessage", guid
|
||||
).and_return(post)
|
||||
expect(DiasporaFederation.callbacks).to receive(:trigger).with(
|
||||
:fetch_private_key_by_diaspora_id, alice.diaspora_id
|
||||
).and_return(alice.private_key)
|
||||
|
||||
get :fetch, type: "status_message", guid: guid
|
||||
|
||||
expect(DiasporaFederation.callbacks).to receive(:trigger).with(
|
||||
:fetch_public_key_by_diaspora_id, alice.diaspora_id
|
||||
).and_return(alice.public_key)
|
||||
|
||||
magic_env = Nokogiri::XML::Document.parse(response.body).root
|
||||
entity = Salmon::MagicEnvelope.unenvelop(magic_env)
|
||||
|
||||
expect(entity).to be_a(Entities::StatusMessage)
|
||||
expect(entity.guid).to eq(guid)
|
||||
expect(entity.author).to eq(alice.diaspora_id)
|
||||
expect(entity.raw_message).to eq(post.raw_message)
|
||||
end
|
||||
|
||||
it "works with type 'post'" do
|
||||
expect(DiasporaFederation.callbacks).to receive(:trigger).with(
|
||||
:fetch_public_entity, "Post", guid
|
||||
).and_return(post)
|
||||
expect(DiasporaFederation.callbacks).to receive(:trigger).with(
|
||||
:fetch_private_key_by_diaspora_id, alice.diaspora_id
|
||||
).and_return(alice.private_key)
|
||||
|
||||
get :fetch, type: "post", guid: guid
|
||||
|
||||
expect(DiasporaFederation.callbacks).to receive(:trigger).with(
|
||||
:fetch_public_key_by_diaspora_id, alice.diaspora_id
|
||||
).and_return(alice.public_key)
|
||||
|
||||
magic_env = Nokogiri::XML::Document.parse(response.body).root
|
||||
entity = Salmon::MagicEnvelope.unenvelop(magic_env)
|
||||
|
||||
expect(entity).to be_a(Entities::StatusMessage)
|
||||
expect(entity.guid).to eq(guid)
|
||||
expect(entity.author).to eq(alice.diaspora_id)
|
||||
expect(entity.raw_message).to eq(post.raw_message)
|
||||
end
|
||||
|
||||
it "redirects when the entity is from another pod" do
|
||||
expect(DiasporaFederation.callbacks).to receive(:trigger).with(
|
||||
:fetch_public_entity, "Post", guid
|
||||
).and_return(post)
|
||||
expect(DiasporaFederation.callbacks).to receive(:trigger).with(
|
||||
:fetch_private_key_by_diaspora_id, alice.diaspora_id
|
||||
).and_return(nil)
|
||||
expect(DiasporaFederation.callbacks).to receive(:trigger).with(
|
||||
:fetch_person_url_to, alice.diaspora_id, "/fetch/post/#{guid}"
|
||||
).and_return("http://example.org/fetch/post/#{guid}")
|
||||
|
||||
get :fetch, type: "post", guid: guid
|
||||
|
||||
expect(response).to be_redirect
|
||||
expect(response).to redirect_to "http://example.org/fetch/post/#{guid}"
|
||||
end
|
||||
|
||||
it "404s when the post does not exist" do
|
||||
expect(DiasporaFederation.callbacks).to receive(:trigger).with(
|
||||
:fetch_public_entity, "Post", guid
|
||||
).and_return(nil)
|
||||
|
||||
get :fetch, type: "post", guid: guid
|
||||
|
||||
expect(response.status).to eq(404)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Reference in a new issue