Use build_relayable_federation_entity helper for receive specs

This commit is contained in:
Benjamin Neff 2017-05-02 02:27:24 +02:00
parent 3ab674552f
commit 283722a693
No known key found for this signature in database
GPG key ID: 971464C3F1A90194
2 changed files with 20 additions and 26 deletions

View file

@ -53,8 +53,8 @@ module HelperMethods
def build_relayable_federation_entity(type, data={}, additional_data={}) def build_relayable_federation_entity(type, data={}, additional_data={})
attributes = Fabricate.attributes_for("#{type}_entity".to_sym, data) attributes = Fabricate.attributes_for("#{type}_entity".to_sym, data)
entity_class = "DiasporaFederation::Entities::#{type.capitalize}".constantize entity_class = "DiasporaFederation::Entities::#{type.to_s.camelize}".constantize
signable_fields = attributes.keys - [:author_signature] signable_fields = attributes.keys - %i[author_signature parent]
entity_class.new(attributes, [*signable_fields, *additional_data.keys], additional_data) entity_class.new(attributes, [*signable_fields, *additional_data.keys], additional_data)
end end

View file

@ -183,17 +183,15 @@ describe Diaspora::Federation::Receive do
end end
describe ".like" do describe ".like" do
let(:like_data) {
Fabricate.attributes_for(
:like_entity,
author: sender.diaspora_handle,
parent_guid: post.guid,
author_signature: "aa"
)
}
let(:like_entity) { let(:like_entity) {
DiasporaFederation::Entities::Like.new( build_relayable_federation_entity(
like_data, [:author, :guid, :parent_guid, :parent_type, :positive, "new_property"], "new_property" => "data" :like,
{
author: sender.diaspora_handle,
parent_guid: post.guid,
author_signature: "aa"
},
"new_property" => "data"
) )
} }
@ -224,7 +222,7 @@ describe Diaspora::Federation::Receive do
expect(like.signature).not_to be_nil expect(like.signature).not_to be_nil
expect(like.signature.author_signature).to eq("aa") expect(like.signature.author_signature).to eq("aa")
expect(like.signature.additional_data).to eq("new_property" => "data") expect(like.signature.additional_data).to eq("new_property" => "data")
expect(like.signature.order).to eq(%w(author guid parent_guid parent_type positive new_property)) expect(like.signature.order).to eq(like_entity.signature_order.map(&:to_s))
end end
let(:entity) { like_entity } let(:entity) { like_entity }
@ -351,19 +349,15 @@ describe Diaspora::Federation::Receive do
describe ".poll_participation" do describe ".poll_participation" do
let(:post_with_poll) { FactoryGirl.create(:status_message_with_poll, author: alice.person) } let(:post_with_poll) { FactoryGirl.create(:status_message_with_poll, author: alice.person) }
let(:poll_participation_data) {
Fabricate.attributes_for(
:poll_participation_entity,
author: sender.diaspora_handle,
parent_guid: post_with_poll.poll.guid,
poll_answer_guid: post_with_poll.poll.poll_answers.first.guid,
author_signature: "aa"
)
}
let(:poll_participation_entity) { let(:poll_participation_entity) {
DiasporaFederation::Entities::PollParticipation.new( build_relayable_federation_entity(
poll_participation_data, :poll_participation,
[:author, :guid, :parent_guid, :poll_answer_guid, "new_property"], {
author: sender.diaspora_handle,
parent_guid: post_with_poll.poll.guid,
poll_answer_guid: post_with_poll.poll.poll_answers.first.guid,
author_signature: "aa"
},
"new_property" => "data" "new_property" => "data"
) )
} }
@ -395,7 +389,7 @@ describe Diaspora::Federation::Receive do
expect(poll_participation.signature).not_to be_nil expect(poll_participation.signature).not_to be_nil
expect(poll_participation.signature.author_signature).to eq("aa") expect(poll_participation.signature.author_signature).to eq("aa")
expect(poll_participation.signature.additional_data).to eq("new_property" => "data") expect(poll_participation.signature.additional_data).to eq("new_property" => "data")
expect(poll_participation.signature.order).to eq(%w(author guid parent_guid poll_answer_guid new_property)) expect(poll_participation.signature.order).to eq(poll_participation_entity.signature_order.map(&:to_s))
end end
let(:entity) { poll_participation_entity } let(:entity) { poll_participation_entity }