Prevent creation of Request entity

Related to #32
This commit is contained in:
Benjamin Neff 2017-05-02 00:09:59 +02:00
parent 71264f90af
commit deed1c3f3e
No known key found for this signature in database
GPG key ID: 971464C3F1A90194
6 changed files with 15 additions and 65 deletions

View file

@ -18,20 +18,13 @@ module DiasporaFederation
# @return [String] recipient ID # @return [String] recipient ID
property :recipient, :string, xml_name: :recipient_handle property :recipient, :string, xml_name: :recipient_handle
# Use only {Contact} for receive def initialize(*)
# @return [Contact] instance as contact raise "Sending Request is not supported anymore! Use Contact instead!"
def to_contact
Contact.new(author: author, recipient: recipient)
end
# @return [String] string representation of this object
def to_s
"Request:#{author}:#{recipient}"
end end
# @return [Retraction] instance # @return [Retraction] instance
def self.from_hash(hash) def self.from_hash(hash)
super.to_contact Contact.new(hash)
end end
end end
end end

View file

@ -108,11 +108,6 @@ module DiasporaFederation
created_at { Time.now.utc } created_at { Time.now.utc }
end end
Fabricator(:request_entity, class_name: DiasporaFederation::Entities::Request) do
author { Fabricate.sequence(:diaspora_id) }
recipient { Fabricate.sequence(:diaspora_id) }
end
Fabricator(:contact_entity, class_name: DiasporaFederation::Entities::Contact) do Fabricator(:contact_entity, class_name: DiasporaFederation::Entities::Contact) do
author { Fabricate.sequence(:diaspora_id) } author { Fabricate.sequence(:diaspora_id) }
recipient { Fabricate.sequence(:diaspora_id) } recipient { Fabricate.sequence(:diaspora_id) }

View file

@ -62,6 +62,3 @@ require "diaspora_federation/validators/reshare_validator"
require "diaspora_federation/validators/retraction_validator" require "diaspora_federation/validators/retraction_validator"
require "diaspora_federation/validators/status_message_validator" require "diaspora_federation/validators/status_message_validator"
require "diaspora_federation/validators/web_finger_validator" require "diaspora_federation/validators/web_finger_validator"
# deprecated
require "diaspora_federation/validators/request_validator"

View file

@ -1,12 +0,0 @@
module DiasporaFederation
module Validators
# This validates a {Entities::Request}.
# @deprecated The {Entities::Request} will be replaced with {Entities::Contact}.
class RequestValidator < Validation::Validator
include Validation
rule :author, %i(not_empty diaspora_id)
rule :recipient, %i(not_empty diaspora_id)
end
end
end

View file

@ -1,30 +1,19 @@
module DiasporaFederation module DiasporaFederation
describe Entities::Request do describe Entities::Request do
let(:data) { Fabricate.attributes_for(:request_entity) } let(:data) { {author: Fabricate.sequence(:diaspora_id), recipient: Fabricate.sequence(:diaspora_id)} }
let(:xml) { <<-XML } let(:xml) { <<-XML }
<request> <request>
<author>#{data[:author]}</author> <sender_handle>#{data[:author]}</sender_handle>
<recipient>#{data[:recipient]}</recipient> <recipient_handle>#{data[:recipient]}</recipient_handle>
</request> </request>
XML XML
let(:string) { "Request:#{data[:author]}:#{data[:recipient]}" } describe "#initialize" do
it "raises because it is not supported anymore" do
it_behaves_like "an Entity subclass" expect {
Entities::Request.new(data)
it_behaves_like "an XML Entity" }.to raise_error RuntimeError, "Sending Request is not supported anymore! Use Contact instead!"
describe "#to_contact" do
it "copies the attributes to a Contact" do
request = Fabricate(:request_entity)
contact = request.to_contact
expect(contact).to be_a(Entities::Contact)
expect(contact.author).to eq(request.author)
expect(contact.recipient).to eq(request.recipient)
expect(contact.following).to be_truthy
expect(contact.sharing).to be_truthy
end end
end end
@ -32,6 +21,10 @@ XML
it "parses the xml as a contact" do it "parses the xml as a contact" do
contact = Entities::Request.from_xml(Nokogiri::XML(xml).root) contact = Entities::Request.from_xml(Nokogiri::XML(xml).root)
expect(contact).to be_a(Entities::Contact) expect(contact).to be_a(Entities::Contact)
expect(contact.author).to eq(data[:author])
expect(contact.recipient).to eq(data[:recipient])
expect(contact.following).to be_truthy
expect(contact.sharing).to be_truthy
end end
end end
end end

View file

@ -1,16 +0,0 @@
module DiasporaFederation
describe Validators::RequestValidator do
let(:entity) { :request_entity }
it_behaves_like "a common validator"
%i(author recipient).each do |prop|
describe "##{prop}" do
it_behaves_like "a diaspora* ID validator" do
let(:property) { prop }
let(:mandatory) { true }
end
end
end
end
end