Use Nokogiri::XML() instead of Nokogiri::XML::Document.parse()
This commit is contained in:
parent
cd3a7abf4d
commit
18a23df8d5
29 changed files with 63 additions and 63 deletions
|
|
@ -135,7 +135,7 @@ module DiasporaFederation
|
||||||
private_class_method def self.parse_xrd_document(xrd_doc)
|
private_class_method def self.parse_xrd_document(xrd_doc)
|
||||||
raise ArgumentError unless xrd_doc.instance_of?(String)
|
raise ArgumentError unless xrd_doc.instance_of?(String)
|
||||||
|
|
||||||
doc = Nokogiri::XML::Document.parse(xrd_doc)
|
doc = Nokogiri::XML(xrd_doc)
|
||||||
raise InvalidDocument, "Not an XRD document" if !doc.root || doc.root.name != "XRD"
|
raise InvalidDocument, "Not an XRD document" if !doc.root || doc.root.name != "XRD"
|
||||||
doc
|
doc
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ module DiasporaFederation
|
||||||
response = HttpClient.get(url)
|
response = HttpClient.get(url)
|
||||||
raise "Failed to fetch #{url}: #{response.status}" unless response.success?
|
raise "Failed to fetch #{url}: #{response.status}" unless response.success?
|
||||||
|
|
||||||
magic_env_xml = Nokogiri::XML::Document.parse(response.body).root
|
magic_env_xml = Nokogiri::XML(response.body).root
|
||||||
magic_env = Salmon::MagicEnvelope.unenvelop(magic_env_xml)
|
magic_env = Salmon::MagicEnvelope.unenvelop(magic_env_xml)
|
||||||
Receiver::Public.new(magic_env).receive
|
Receiver::Public.new(magic_env).receive
|
||||||
rescue => e
|
rescue => e
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ module DiasporaFederation
|
||||||
magic_env = if legacy
|
magic_env = if legacy
|
||||||
Salmon::Slap.from_xml(data)
|
Salmon::Slap.from_xml(data)
|
||||||
else
|
else
|
||||||
magic_env_xml = Nokogiri::XML::Document.parse(data).root
|
magic_env_xml = Nokogiri::XML(data).root
|
||||||
Salmon::MagicEnvelope.unenvelop(magic_env_xml)
|
Salmon::MagicEnvelope.unenvelop(magic_env_xml)
|
||||||
end
|
end
|
||||||
Public.new(magic_env).receive
|
Public.new(magic_env).receive
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ module DiasporaFederation
|
||||||
key = encoded_key.map {|k, v| [k, Base64.decode64(v)] }.to_h
|
key = encoded_key.map {|k, v| [k, Base64.decode64(v)] }.to_h
|
||||||
|
|
||||||
xml = AES.decrypt(encrypted_json["encrypted_magic_envelope"], key["key"], key["iv"])
|
xml = AES.decrypt(encrypted_json["encrypted_magic_envelope"], key["key"], key["iv"])
|
||||||
Nokogiri::XML::Document.parse(xml).root
|
Nokogiri::XML(xml).root
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ module DiasporaFederation
|
||||||
# @raise [MissingMagicEnvelope] if the +me:env+ element is missing in the XML
|
# @raise [MissingMagicEnvelope] if the +me:env+ element is missing in the XML
|
||||||
def self.from_xml(slap_xml, privkey)
|
def self.from_xml(slap_xml, privkey)
|
||||||
raise ArgumentError unless slap_xml.instance_of?(String) && privkey.instance_of?(OpenSSL::PKey::RSA)
|
raise ArgumentError unless slap_xml.instance_of?(String) && privkey.instance_of?(OpenSSL::PKey::RSA)
|
||||||
doc = Nokogiri::XML::Document.parse(slap_xml)
|
doc = Nokogiri::XML(slap_xml)
|
||||||
|
|
||||||
header_elem = doc.at_xpath("d:diaspora/d:encrypted_header", Slap::NS)
|
header_elem = doc.at_xpath("d:diaspora/d:encrypted_header", Slap::NS)
|
||||||
raise MissingHeader if header_elem.nil?
|
raise MissingHeader if header_elem.nil?
|
||||||
|
|
@ -160,7 +160,7 @@ module DiasporaFederation
|
||||||
key = JSON.parse(privkey.private_decrypt(Base64.decode64(cipher_header["aes_key"])))
|
key = JSON.parse(privkey.private_decrypt(Base64.decode64(cipher_header["aes_key"])))
|
||||||
|
|
||||||
xml = AES.decrypt(cipher_header["ciphertext"], Base64.decode64(key["key"]), Base64.decode64(key["iv"]))
|
xml = AES.decrypt(cipher_header["ciphertext"], Base64.decode64(key["key"]), Base64.decode64(key["iv"]))
|
||||||
Nokogiri::XML::Document.parse(xml).root
|
Nokogiri::XML(xml).root
|
||||||
end
|
end
|
||||||
|
|
||||||
# Encrypt the header xml with an AES cipher and encrypt the cipher params
|
# Encrypt the header xml with an AES cipher and encrypt the cipher params
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ module DiasporaFederation
|
||||||
|
|
||||||
logger.debug "unenvelop message from #{sender}:\n#{data}"
|
logger.debug "unenvelop message from #{sender}:\n#{data}"
|
||||||
|
|
||||||
new(XmlPayload.unpack(Nokogiri::XML::Document.parse(data).root), sender)
|
new(XmlPayload.unpack(Nokogiri::XML(data).root), sender)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ module DiasporaFederation
|
||||||
# @raise [MissingMagicEnvelope] if the +me:env+ element is missing from the XML
|
# @raise [MissingMagicEnvelope] if the +me:env+ element is missing from the XML
|
||||||
def self.from_xml(slap_xml)
|
def self.from_xml(slap_xml)
|
||||||
raise ArgumentError unless slap_xml.instance_of?(String)
|
raise ArgumentError unless slap_xml.instance_of?(String)
|
||||||
doc = Nokogiri::XML::Document.parse(slap_xml)
|
doc = Nokogiri::XML(slap_xml)
|
||||||
|
|
||||||
author_elem = doc.at_xpath("d:diaspora/d:header/d:author_id", Slap::NS)
|
author_elem = doc.at_xpath("d:diaspora/d:header/d:author_id", Slap::NS)
|
||||||
raise MissingAuthor if author_elem.nil? || author_elem.content.empty?
|
raise MissingAuthor if author_elem.nil? || author_elem.content.empty?
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ module DiasporaFederation
|
||||||
|
|
||||||
expect_callback(:fetch_public_key, alice.diaspora_id).and_return(alice.public_key)
|
expect_callback(:fetch_public_key, alice.diaspora_id).and_return(alice.public_key)
|
||||||
|
|
||||||
magic_env_xml = Nokogiri::XML::Document.parse(response.body).root
|
magic_env_xml = Nokogiri::XML(response.body).root
|
||||||
magic_env = Salmon::MagicEnvelope.unenvelop(magic_env_xml)
|
magic_env = Salmon::MagicEnvelope.unenvelop(magic_env_xml)
|
||||||
entity = magic_env.payload
|
entity = magic_env.payload
|
||||||
|
|
||||||
|
|
@ -33,7 +33,7 @@ module DiasporaFederation
|
||||||
|
|
||||||
expect_callback(:fetch_public_key, alice.diaspora_id).and_return(alice.public_key)
|
expect_callback(:fetch_public_key, alice.diaspora_id).and_return(alice.public_key)
|
||||||
|
|
||||||
magic_env_xml = Nokogiri::XML::Document.parse(response.body).root
|
magic_env_xml = Nokogiri::XML(response.body).root
|
||||||
magic_env = Salmon::MagicEnvelope.unenvelop(magic_env_xml)
|
magic_env = Salmon::MagicEnvelope.unenvelop(magic_env_xml)
|
||||||
entity = magic_env.payload
|
entity = magic_env.payload
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -188,7 +188,7 @@ XML
|
||||||
expect_callback(:fetch_private_key, parent.author).and_return(parent_key)
|
expect_callback(:fetch_private_key, parent.author).and_return(parent_key)
|
||||||
expect_callback(:fetch_related_entity, "Post", parent_guid).and_return(parent)
|
expect_callback(:fetch_related_entity, "Post", parent_guid).and_return(parent)
|
||||||
|
|
||||||
xml = Nokogiri::XML::Document.parse(new_data_comment_xml_alice).root
|
xml = Nokogiri::XML(new_data_comment_xml_alice).root
|
||||||
Salmon::XmlPayload.unpack(xml).to_xml
|
Salmon::XmlPayload.unpack(xml).to_xml
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -201,19 +201,19 @@ XML
|
||||||
end
|
end
|
||||||
|
|
||||||
it "relays legacy signatures and xml" do
|
it "relays legacy signatures and xml" do
|
||||||
xml = Nokogiri::XML::Document.parse(legacy_comment_xml_alice).root
|
xml = Nokogiri::XML(legacy_comment_xml_alice).root
|
||||||
entity = Salmon::XmlPayload.unpack(xml)
|
entity = Salmon::XmlPayload.unpack(xml)
|
||||||
expect(entity.to_xml.to_xml).to eq(legacy_signature_comment_xml_bob.strip)
|
expect(entity.to_xml.to_xml).to eq(legacy_signature_comment_xml_bob.strip)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "relays new signatures and xml" do
|
it "relays new signatures and xml" do
|
||||||
xml = Nokogiri::XML::Document.parse(new_signature_comment_xml_alice).root
|
xml = Nokogiri::XML(new_signature_comment_xml_alice).root
|
||||||
entity = Salmon::XmlPayload.unpack(xml)
|
entity = Salmon::XmlPayload.unpack(xml)
|
||||||
expect(entity.to_xml.to_xml).to eq(new_signature_comment_xml_bob.strip)
|
expect(entity.to_xml.to_xml).to eq(new_signature_comment_xml_bob.strip)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "relays new signatures with new data" do
|
it "relays new signatures with new data" do
|
||||||
xml = Nokogiri::XML::Document.parse(new_data_comment_xml_alice).root
|
xml = Nokogiri::XML(new_data_comment_xml_alice).root
|
||||||
entity = Salmon::XmlPayload.unpack(xml)
|
entity = Salmon::XmlPayload.unpack(xml)
|
||||||
expect(entity.to_xml.to_xml).to eq(new_data_comment_xml_bob.strip)
|
expect(entity.to_xml.to_xml).to eq(new_data_comment_xml_bob.strip)
|
||||||
end
|
end
|
||||||
|
|
@ -229,7 +229,7 @@ XML
|
||||||
end
|
end
|
||||||
|
|
||||||
it "parses legacy signatures and xml" do
|
it "parses legacy signatures and xml" do
|
||||||
xml = Nokogiri::XML::Document.parse(legacy_comment_xml_bob).root
|
xml = Nokogiri::XML(legacy_comment_xml_bob).root
|
||||||
entity = Salmon::XmlPayload.unpack(xml)
|
entity = Salmon::XmlPayload.unpack(xml)
|
||||||
|
|
||||||
expect(entity.author).to eq(author)
|
expect(entity.author).to eq(author)
|
||||||
|
|
@ -237,7 +237,7 @@ XML
|
||||||
end
|
end
|
||||||
|
|
||||||
it "parses legacy signatures and with new xml" do
|
it "parses legacy signatures and with new xml" do
|
||||||
xml = Nokogiri::XML::Document.parse(legacy_signature_comment_xml_bob).root
|
xml = Nokogiri::XML(legacy_signature_comment_xml_bob).root
|
||||||
entity = Salmon::XmlPayload.unpack(xml)
|
entity = Salmon::XmlPayload.unpack(xml)
|
||||||
|
|
||||||
expect(entity.author).to eq(author)
|
expect(entity.author).to eq(author)
|
||||||
|
|
@ -245,7 +245,7 @@ XML
|
||||||
end
|
end
|
||||||
|
|
||||||
it "parses new signatures with legacy xml" do
|
it "parses new signatures with legacy xml" do
|
||||||
xml = Nokogiri::XML::Document.parse(legacy_new_signature_comment_xml_bob).root
|
xml = Nokogiri::XML(legacy_new_signature_comment_xml_bob).root
|
||||||
entity = Salmon::XmlPayload.unpack(xml)
|
entity = Salmon::XmlPayload.unpack(xml)
|
||||||
|
|
||||||
expect(entity.author).to eq(author)
|
expect(entity.author).to eq(author)
|
||||||
|
|
@ -253,7 +253,7 @@ XML
|
||||||
end
|
end
|
||||||
|
|
||||||
it "parses new signatures and xml" do
|
it "parses new signatures and xml" do
|
||||||
xml = Nokogiri::XML::Document.parse(new_signature_comment_xml_bob).root
|
xml = Nokogiri::XML(new_signature_comment_xml_bob).root
|
||||||
entity = Salmon::XmlPayload.unpack(xml)
|
entity = Salmon::XmlPayload.unpack(xml)
|
||||||
|
|
||||||
expect(entity.author).to eq(author)
|
expect(entity.author).to eq(author)
|
||||||
|
|
@ -261,7 +261,7 @@ XML
|
||||||
end
|
end
|
||||||
|
|
||||||
it "parses new data with legacy xml" do
|
it "parses new data with legacy xml" do
|
||||||
xml = Nokogiri::XML::Document.parse(legacy_new_data_comment_xml_bob).root
|
xml = Nokogiri::XML(legacy_new_data_comment_xml_bob).root
|
||||||
entity = Salmon::XmlPayload.unpack(xml)
|
entity = Salmon::XmlPayload.unpack(xml)
|
||||||
|
|
||||||
expect(entity.author).to eq(author)
|
expect(entity.author).to eq(author)
|
||||||
|
|
@ -270,7 +270,7 @@ XML
|
||||||
end
|
end
|
||||||
|
|
||||||
it "parses new xml with additional data" do
|
it "parses new xml with additional data" do
|
||||||
xml = Nokogiri::XML::Document.parse(new_data_comment_xml_bob).root
|
xml = Nokogiri::XML(new_data_comment_xml_bob).root
|
||||||
entity = Salmon::XmlPayload.unpack(xml)
|
entity = Salmon::XmlPayload.unpack(xml)
|
||||||
|
|
||||||
expect(entity.author).to eq(author)
|
expect(entity.author).to eq(author)
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ JSON
|
||||||
|
|
||||||
describe "#created_at" do
|
describe "#created_at" do
|
||||||
it "has a created_at after parse" do
|
it "has a created_at after parse" do
|
||||||
entity = described_class.from_xml(Nokogiri::XML::Document.parse(xml).root)
|
entity = described_class.from_xml(Nokogiri::XML(xml).root)
|
||||||
expect(entity.created_at).to be_within(1).of(Time.now.utc)
|
expect(entity.created_at).to be_within(1).of(Time.now.utc)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ XML
|
||||||
</conversation>
|
</conversation>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML::Document.parse(minimal_xml).root)
|
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML(minimal_xml).root)
|
||||||
expect(parsed_instance.messages).to eq([])
|
expect(parsed_instance.messages).to eq([])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ XML
|
||||||
</event>
|
</event>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML::Document.parse(minimal_xml).root)
|
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML(minimal_xml).root)
|
||||||
expect(parsed_instance.end).to be_nil
|
expect(parsed_instance.end).to be_nil
|
||||||
expect(parsed_instance.all_day).to be_falsey
|
expect(parsed_instance.all_day).to be_falsey
|
||||||
expect(parsed_instance.timezone).to be_nil
|
expect(parsed_instance.timezone).to be_nil
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ JSON
|
||||||
XML
|
XML
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
DiasporaFederation::Entities::Like.from_xml(Nokogiri::XML::Document.parse(broken_xml).root)
|
DiasporaFederation::Entities::Like.from_xml(Nokogiri::XML(broken_xml).root)
|
||||||
}.to raise_error Entity::ValidationError, "invalid DiasporaFederation::Entities::Like! missing 'parent_type'."
|
}.to raise_error Entity::ValidationError, "invalid DiasporaFederation::Entities::Like! missing 'parent_type'."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -83,7 +83,7 @@ XML
|
||||||
XML
|
XML
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
DiasporaFederation::Entities::Like.from_xml(Nokogiri::XML::Document.parse(broken_xml).root)
|
DiasporaFederation::Entities::Like.from_xml(Nokogiri::XML(broken_xml).root)
|
||||||
}.to raise_error Entity::ValidationError, "invalid DiasporaFederation::Entities::Like! missing 'parent_guid'."
|
}.to raise_error Entity::ValidationError, "invalid DiasporaFederation::Entities::Like! missing 'parent_guid'."
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ JSON
|
||||||
</photo>
|
</photo>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML::Document.parse(minimal_xml).root)
|
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML(minimal_xml).root)
|
||||||
expect(parsed_instance.public).to be_falsey
|
expect(parsed_instance.public).to be_falsey
|
||||||
expect(parsed_instance.text).to be_nil
|
expect(parsed_instance.text).to be_nil
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ JSON
|
||||||
</profile>
|
</profile>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML::Document.parse(minimal_xml).root)
|
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML(minimal_xml).root)
|
||||||
expect(parsed_instance.first_name).to be_nil
|
expect(parsed_instance.first_name).to be_nil
|
||||||
expect(parsed_instance.last_name).to be_nil
|
expect(parsed_instance.last_name).to be_nil
|
||||||
expect(parsed_instance.image_url).to be_nil
|
expect(parsed_instance.image_url).to be_nil
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ XML
|
||||||
context "parse retraction" do
|
context "parse retraction" do
|
||||||
it "parses the xml as a retraction" do
|
it "parses the xml as a retraction" do
|
||||||
expect(Entities::Retraction).to receive(:fetch_target).and_return(target_entity)
|
expect(Entities::Retraction).to receive(:fetch_target).and_return(target_entity)
|
||||||
retraction = Entities::RelayableRetraction.from_xml(Nokogiri::XML::Document.parse(xml).root)
|
retraction = Entities::RelayableRetraction.from_xml(Nokogiri::XML(xml).root)
|
||||||
expect(retraction).to be_a(Entities::Retraction)
|
expect(retraction).to be_a(Entities::Retraction)
|
||||||
expect(retraction.author).to eq(data[:author])
|
expect(retraction.author).to eq(data[:author])
|
||||||
expect(retraction.target_guid).to eq(data[:target_guid])
|
expect(retraction.target_guid).to eq(data[:target_guid])
|
||||||
|
|
|
||||||
|
|
@ -241,7 +241,7 @@ XML
|
||||||
XML
|
XML
|
||||||
|
|
||||||
it "doesn't drop unknown properties" do
|
it "doesn't drop unknown properties" do
|
||||||
entity = Entities::SomeRelayable.from_xml(Nokogiri::XML::Document.parse(new_xml).root)
|
entity = Entities::SomeRelayable.from_xml(Nokogiri::XML(new_xml).root)
|
||||||
|
|
||||||
expect(entity).to be_an_instance_of Entities::SomeRelayable
|
expect(entity).to be_an_instance_of Entities::SomeRelayable
|
||||||
expect(entity.property).to eq(property)
|
expect(entity.property).to eq(property)
|
||||||
|
|
@ -251,7 +251,7 @@ XML
|
||||||
end
|
end
|
||||||
|
|
||||||
it "hand over the order in the xml to the instance without signatures" do
|
it "hand over the order in the xml to the instance without signatures" do
|
||||||
entity = Entities::SomeRelayable.from_xml(Nokogiri::XML::Document.parse(new_xml).root)
|
entity = Entities::SomeRelayable.from_xml(Nokogiri::XML(new_xml).root)
|
||||||
|
|
||||||
expect(entity.xml_order).to eq([:author, :guid, :parent_guid, "new_property", :property])
|
expect(entity.xml_order).to eq([:author, :guid, :parent_guid, "new_property", :property])
|
||||||
end
|
end
|
||||||
|
|
@ -280,7 +280,7 @@ XML
|
||||||
XML
|
XML
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
Entities::SomeRelayable.from_xml(Nokogiri::XML::Document.parse(broken_xml).root)
|
Entities::SomeRelayable.from_xml(Nokogiri::XML(broken_xml).root)
|
||||||
}.to raise_error Entity::ValidationError,
|
}.to raise_error Entity::ValidationError,
|
||||||
"invalid DiasporaFederation::Entities::SomeRelayable! missing 'parent_guid'."
|
"invalid DiasporaFederation::Entities::SomeRelayable! missing 'parent_guid'."
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ XML
|
||||||
|
|
||||||
context "parse contact" do
|
context "parse contact" do
|
||||||
it "parses the xml as a contact" do
|
it "parses the xml as a contact" do
|
||||||
contact = Entities::Request.from_xml(Nokogiri::XML::Document.parse(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)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ JSON
|
||||||
</reshare>
|
</reshare>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML::Document.parse(minimal_xml).root)
|
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML(minimal_xml).root)
|
||||||
expect(parsed_instance.public).to be_truthy
|
expect(parsed_instance.public).to be_truthy
|
||||||
expect(parsed_instance.provider_display_name).to be_nil
|
expect(parsed_instance.provider_display_name).to be_nil
|
||||||
end
|
end
|
||||||
|
|
@ -61,7 +61,7 @@ XML
|
||||||
expect_callback(:fetch_related_entity, "Post", data[:root_guid]).and_return(nil)
|
expect_callback(:fetch_related_entity, "Post", data[:root_guid]).and_return(nil)
|
||||||
expect(Federation::Fetcher).to receive(:fetch_public).with(data[:root_author], "Post", data[:root_guid])
|
expect(Federation::Fetcher).to receive(:fetch_public).with(data[:root_author], "Post", data[:root_guid])
|
||||||
|
|
||||||
Entities::Reshare.from_xml(Nokogiri::XML::Document.parse(xml).root)
|
Entities::Reshare.from_xml(Nokogiri::XML(xml).root)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ XML
|
||||||
context "parse retraction" do
|
context "parse retraction" do
|
||||||
it "parses the xml as a retraction" do
|
it "parses the xml as a retraction" do
|
||||||
expect(Entities::Retraction).to receive(:fetch_target).and_return(target_entity)
|
expect(Entities::Retraction).to receive(:fetch_target).and_return(target_entity)
|
||||||
retraction = Entities::SignedRetraction.from_xml(Nokogiri::XML::Document.parse(xml).root)
|
retraction = Entities::SignedRetraction.from_xml(Nokogiri::XML(xml).root)
|
||||||
expect(retraction).to be_a(Entities::Retraction)
|
expect(retraction).to be_a(Entities::Retraction)
|
||||||
expect(retraction.author).to eq(data[:author])
|
expect(retraction.author).to eq(data[:author])
|
||||||
expect(retraction.target_guid).to eq(data[:target_guid])
|
expect(retraction.target_guid).to eq(data[:target_guid])
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,7 @@ JSON
|
||||||
</status_message>
|
</status_message>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML::Document.parse(minimal_xml).root)
|
parsed_instance = DiasporaFederation::Salmon::XmlPayload.unpack(Nokogiri::XML(minimal_xml).root)
|
||||||
expect(parsed_instance.photos).to eq([])
|
expect(parsed_instance.photos).to eq([])
|
||||||
expect(parsed_instance.location).to be_nil
|
expect(parsed_instance.location).to be_nil
|
||||||
expect(parsed_instance.poll).to be_nil
|
expect(parsed_instance.poll).to be_nil
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,7 @@ module DiasporaFederation
|
||||||
it "replaces invalid XML characters" do
|
it "replaces invalid XML characters" do
|
||||||
entity = Entities::TestEntity.new(test: "asdfasdf asdf💩asdf\nasdf")
|
entity = Entities::TestEntity.new(test: "asdfasdf asdf💩asdf\nasdf")
|
||||||
xml = entity.to_xml.to_xml
|
xml = entity.to_xml.to_xml
|
||||||
parsed = Entities::TestEntity.from_xml(Nokogiri::XML::Document.parse(xml).root).test
|
parsed = Entities::TestEntity.from_xml(Nokogiri::XML(xml).root).test
|
||||||
expect(parsed).to eq("asdf<EFBFBD>asdf asdf💩asdf\nasdf")
|
expect(parsed).to eq("asdf<EFBFBD>asdf asdf💩asdf\nasdf")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -127,7 +127,7 @@ module DiasporaFederation
|
||||||
test2: "qwer",
|
test2: "qwer",
|
||||||
test3: true
|
test3: true
|
||||||
)
|
)
|
||||||
Entities::TestDefaultEntity.from_xml(Nokogiri::XML::Document.parse(<<-XML).root)
|
Entities::TestDefaultEntity.from_xml(Nokogiri::XML(<<-XML).root)
|
||||||
<test_default_entity>
|
<test_default_entity>
|
||||||
<test1>asdf</test1>
|
<test1>asdf</test1>
|
||||||
<test2>qwer</qwer2>
|
<test2>qwer</qwer2>
|
||||||
|
|
@ -140,11 +140,11 @@ XML
|
||||||
arguments = [{arg1: "value"}]
|
arguments = [{arg1: "value"}]
|
||||||
expect_any_instance_of(DiasporaFederation::Parsers::XmlParser).to receive(:parse).and_return(arguments)
|
expect_any_instance_of(DiasporaFederation::Parsers::XmlParser).to receive(:parse).and_return(arguments)
|
||||||
expect(Entities::TestDefaultEntity).to receive(:from_hash).with(*arguments)
|
expect(Entities::TestDefaultEntity).to receive(:from_hash).with(*arguments)
|
||||||
Entities::TestDefaultEntity.from_xml(Nokogiri::XML::Document.parse("<dummy/>").root)
|
Entities::TestDefaultEntity.from_xml(Nokogiri::XML("<dummy/>").root)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "passes input parameter directly to .parse method of the parser" do
|
it "passes input parameter directly to .parse method of the parser" do
|
||||||
root = Nokogiri::XML::Document.parse("<dummy/>").root
|
root = Nokogiri::XML("<dummy/>").root
|
||||||
expect_any_instance_of(DiasporaFederation::Parsers::XmlParser).to receive(:parse).with(root)
|
expect_any_instance_of(DiasporaFederation::Parsers::XmlParser).to receive(:parse).with(root)
|
||||||
.and_return([{test1: "2", test2: "1"}])
|
.and_return([{test1: "2", test2: "1"}])
|
||||||
Entities::TestDefaultEntity.from_xml(root)
|
Entities::TestDefaultEntity.from_xml(root)
|
||||||
|
|
@ -444,7 +444,7 @@ JSON
|
||||||
</test_nested_entity>
|
</test_nested_entity>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
entity = Entities::TestNestedEntity.from_xml(Nokogiri::XML::Document.parse(xml).root)
|
entity = Entities::TestNestedEntity.from_xml(Nokogiri::XML(xml).root)
|
||||||
|
|
||||||
expect(entity.asdf).to eq("FDSA")
|
expect(entity.asdf).to eq("FDSA")
|
||||||
expect(entity.test).to be_nil
|
expect(entity.test).to be_nil
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ module DiasporaFederation
|
||||||
end
|
end
|
||||||
|
|
||||||
it "redirects exceptions from the receiver" do
|
it "redirects exceptions from the receiver" do
|
||||||
invalid_magic_env = Nokogiri::XML::Document.parse("<xml/>").root
|
invalid_magic_env = Nokogiri::XML("<xml/>").root
|
||||||
data = Salmon::EncryptedMagicEnvelope.encrypt(invalid_magic_env, recipient_key.public_key)
|
data = Salmon::EncryptedMagicEnvelope.encrypt(invalid_magic_env, recipient_key.public_key)
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ module DiasporaFederation
|
||||||
let(:entity_class) { Entities::SomeRelayable }
|
let(:entity_class) { Entities::SomeRelayable }
|
||||||
let(:xml_parser) { Parsers::RelayableXmlParser.new(entity_class) }
|
let(:xml_parser) { Parsers::RelayableXmlParser.new(entity_class) }
|
||||||
it "passes order of the XML elements as a second argument in the returned list" do
|
it "passes order of the XML elements as a second argument in the returned list" do
|
||||||
xml_object = Nokogiri::XML::Document.parse(<<-XML).root
|
xml_object = Nokogiri::XML(<<-XML).root
|
||||||
<some_relayable>
|
<some_relayable>
|
||||||
<guid>im a guid</guid>
|
<guid>im a guid</guid>
|
||||||
<property>value</property>
|
<property>value</property>
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ module DiasporaFederation
|
||||||
XML
|
XML
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
xml_parser.parse(Nokogiri::XML::Document.parse(xml).root)
|
xml_parser.parse(Nokogiri::XML(xml).root)
|
||||||
}.to raise_error Parsers::BaseParser::InvalidRootNode,
|
}.to raise_error Parsers::BaseParser::InvalidRootNode,
|
||||||
"'unknown_entity' can't be parsed by DiasporaFederation::Entities::TestComplexEntity"
|
"'unknown_entity' can't be parsed by DiasporaFederation::Entities::TestComplexEntity"
|
||||||
end
|
end
|
||||||
|
|
@ -39,7 +39,7 @@ XML
|
||||||
</test_entity_with_xml_name>
|
</test_entity_with_xml_name>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed = Parsers::XmlParser.new(Entities::TestEntityWithXmlName).parse(Nokogiri::XML::Document.parse(xml).root)
|
parsed = Parsers::XmlParser.new(Entities::TestEntityWithXmlName).parse(Nokogiri::XML(xml).root)
|
||||||
|
|
||||||
expect(parsed[0][:test]).to eq("asdf")
|
expect(parsed[0][:test]).to eq("asdf")
|
||||||
expect(parsed[0][:qwer]).to eq("qwer")
|
expect(parsed[0][:qwer]).to eq("qwer")
|
||||||
|
|
@ -53,7 +53,7 @@ XML
|
||||||
</test_entity_with_xml_name>
|
</test_entity_with_xml_name>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed = Parsers::XmlParser.new(Entities::TestEntityWithXmlName).parse(Nokogiri::XML::Document.parse(xml).root)
|
parsed = Parsers::XmlParser.new(Entities::TestEntityWithXmlName).parse(Nokogiri::XML(xml).root)
|
||||||
|
|
||||||
expect(parsed[0][:test]).to eq("asdf")
|
expect(parsed[0][:test]).to eq("asdf")
|
||||||
expect(parsed[0][:qwer]).to eq("qwer")
|
expect(parsed[0][:qwer]).to eq("qwer")
|
||||||
|
|
@ -68,7 +68,7 @@ XML
|
||||||
</test_default_entity>
|
</test_default_entity>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed = Parsers::XmlParser.new(Entities::TestDefaultEntity).parse(Nokogiri::XML::Document.parse(xml).root)
|
parsed = Parsers::XmlParser.new(Entities::TestDefaultEntity).parse(Nokogiri::XML(xml).root)
|
||||||
|
|
||||||
expect(parsed[0][:test1]).to eq("asdf")
|
expect(parsed[0][:test1]).to eq("asdf")
|
||||||
expect(parsed[0][:test2]).to eq("qwer")
|
expect(parsed[0][:test2]).to eq("qwer")
|
||||||
|
|
@ -82,7 +82,7 @@ XML
|
||||||
</test_entity_with_boolean>
|
</test_entity_with_boolean>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed = Parsers::XmlParser.new(Entities::TestEntityWithBoolean).parse(Nokogiri::XML::Document.parse(xml).root)
|
parsed = Parsers::XmlParser.new(Entities::TestEntityWithBoolean).parse(Nokogiri::XML(xml).root)
|
||||||
expect(parsed[0][:test]).to eq(false)
|
expect(parsed[0][:test]).to eq(false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -95,7 +95,7 @@ XML
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed = Parsers::XmlParser.new(Entities::TestEntityWithBoolean).parse(
|
parsed = Parsers::XmlParser.new(Entities::TestEntityWithBoolean).parse(
|
||||||
Nokogiri::XML::Document.parse(xml).root
|
Nokogiri::XML(xml).root
|
||||||
)
|
)
|
||||||
expect(parsed[0][:test]).to be_nil
|
expect(parsed[0][:test]).to be_nil
|
||||||
end
|
end
|
||||||
|
|
@ -110,7 +110,7 @@ XML
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed = Parsers::XmlParser.new(Entities::TestEntityWithInteger).parse(
|
parsed = Parsers::XmlParser.new(Entities::TestEntityWithInteger).parse(
|
||||||
Nokogiri::XML::Document.parse(xml).root
|
Nokogiri::XML(xml).root
|
||||||
)
|
)
|
||||||
expect(parsed[0][:test]).to be_nil
|
expect(parsed[0][:test]).to be_nil
|
||||||
end
|
end
|
||||||
|
|
@ -125,7 +125,7 @@ XML
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed = Parsers::XmlParser.new(Entities::TestEntityWithTimestamp).parse(
|
parsed = Parsers::XmlParser.new(Entities::TestEntityWithTimestamp).parse(
|
||||||
Nokogiri::XML::Document.parse(xml).root
|
Nokogiri::XML(xml).root
|
||||||
)
|
)
|
||||||
expect(parsed[0][:test]).to be_nil
|
expect(parsed[0][:test]).to be_nil
|
||||||
end
|
end
|
||||||
|
|
@ -161,7 +161,7 @@ XML
|
||||||
</test_default_entity>
|
</test_default_entity>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
parsed = Parsers::XmlParser.new(Entities::TestDefaultEntity).parse(Nokogiri::XML::Document.parse(xml).root)
|
parsed = Parsers::XmlParser.new(Entities::TestDefaultEntity).parse(Nokogiri::XML(xml).root)
|
||||||
expect(parsed[0]["test_new"]).to eq("new_value")
|
expect(parsed[0]["test_new"]).to eq("new_value")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ module DiasporaFederation
|
||||||
|
|
||||||
xml = Salmon::AES.decrypt(json["encrypted_magic_envelope"], key["key"], key["iv"])
|
xml = Salmon::AES.decrypt(json["encrypted_magic_envelope"], key["key"], key["iv"])
|
||||||
|
|
||||||
expect(Nokogiri::XML::Document.parse(xml).to_xml).to eq(magic_env.to_xml)
|
expect(Nokogiri::XML(xml).to_xml).to eq(magic_env.to_xml)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ module DiasporaFederation
|
||||||
end
|
end
|
||||||
|
|
||||||
it "generates valid xml" do
|
it "generates valid xml" do
|
||||||
doc = Nokogiri::XML::Document.parse(slap_xml)
|
doc = Nokogiri::XML(slap_xml)
|
||||||
expect(doc.root.name).to eq("diaspora")
|
expect(doc.root.name).to eq("diaspora")
|
||||||
expect(doc.at_xpath("d:diaspora/d:encrypted_header", ns).content).to_not be_empty
|
expect(doc.at_xpath("d:diaspora/d:encrypted_header", ns).content).to_not be_empty
|
||||||
expect(doc.xpath("d:diaspora/me:env", ns)).to have(1).item
|
expect(doc.xpath("d:diaspora/me:env", ns)).to have(1).item
|
||||||
|
|
@ -64,7 +64,7 @@ module DiasporaFederation
|
||||||
it "can generate xml for two people" do
|
it "can generate xml for two people" do
|
||||||
slap = Salmon::EncryptedSlap.prepare(sender, privkey, payload)
|
slap = Salmon::EncryptedSlap.prepare(sender, privkey, payload)
|
||||||
|
|
||||||
doc1 = Nokogiri::XML::Document.parse(slap.generate_xml(recipient_key.public_key))
|
doc1 = Nokogiri::XML(slap.generate_xml(recipient_key.public_key))
|
||||||
enc_header1 = doc1.at_xpath("d:diaspora/d:encrypted_header", ns).content
|
enc_header1 = doc1.at_xpath("d:diaspora/d:encrypted_header", ns).content
|
||||||
cipher_header1 = JSON.parse(Base64.decode64(enc_header1))
|
cipher_header1 = JSON.parse(Base64.decode64(enc_header1))
|
||||||
header_key1 = JSON.parse(recipient_key.private_decrypt(Base64.decode64(cipher_header1["aes_key"])))
|
header_key1 = JSON.parse(recipient_key.private_decrypt(Base64.decode64(cipher_header1["aes_key"])))
|
||||||
|
|
@ -73,7 +73,7 @@ module DiasporaFederation
|
||||||
Base64.decode64(header_key1["iv"]))
|
Base64.decode64(header_key1["iv"]))
|
||||||
|
|
||||||
recipient2_key = OpenSSL::PKey::RSA.generate(1024)
|
recipient2_key = OpenSSL::PKey::RSA.generate(1024)
|
||||||
doc2 = Nokogiri::XML::Document.parse(slap.generate_xml(recipient2_key.public_key))
|
doc2 = Nokogiri::XML(slap.generate_xml(recipient2_key.public_key))
|
||||||
enc_header2 = doc2.at_xpath("d:diaspora/d:encrypted_header", ns).content
|
enc_header2 = doc2.at_xpath("d:diaspora/d:encrypted_header", ns).content
|
||||||
cipher_header2 = JSON.parse(Base64.decode64(enc_header2))
|
cipher_header2 = JSON.parse(Base64.decode64(enc_header2))
|
||||||
header_key2 = JSON.parse(recipient2_key.private_decrypt(Base64.decode64(cipher_header2["aes_key"])))
|
header_key2 = JSON.parse(recipient2_key.private_decrypt(Base64.decode64(cipher_header2["aes_key"])))
|
||||||
|
|
@ -88,13 +88,13 @@ module DiasporaFederation
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does not add the sender to the magic envelope" do
|
it "does not add the sender to the magic envelope" do
|
||||||
doc = Nokogiri::XML::Document.parse(slap_xml)
|
doc = Nokogiri::XML(slap_xml)
|
||||||
expect(doc.at_xpath("d:diaspora/me:env/me:sig", ns)["key_id"]).to be_nil
|
expect(doc.at_xpath("d:diaspora/me:env/me:sig", ns)["key_id"]).to be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
context "header" do
|
context "header" do
|
||||||
subject {
|
subject {
|
||||||
doc = Nokogiri::XML::Document.parse(slap_xml)
|
doc = Nokogiri::XML(slap_xml)
|
||||||
doc.at_xpath("d:diaspora/d:encrypted_header", ns).content
|
doc.at_xpath("d:diaspora/d:encrypted_header", ns).content
|
||||||
}
|
}
|
||||||
let(:cipher_header) { JSON.parse(Base64.decode64(subject)) }
|
let(:cipher_header) { JSON.parse(Base64.decode64(subject)) }
|
||||||
|
|
@ -125,7 +125,7 @@ module DiasporaFederation
|
||||||
Base64.decode64(header_key["key"]),
|
Base64.decode64(header_key["key"]),
|
||||||
Base64.decode64(header_key["iv"]))
|
Base64.decode64(header_key["iv"]))
|
||||||
}.not_to raise_error
|
}.not_to raise_error
|
||||||
header_doc = Nokogiri::XML::Document.parse(header)
|
header_doc = Nokogiri::XML(header)
|
||||||
expect(header_doc.root.name).to eq("decrypted_header")
|
expect(header_doc.root.name).to eq("decrypted_header")
|
||||||
expect(header_doc.xpath("//iv")).to have(1).item
|
expect(header_doc.xpath("//iv")).to have(1).item
|
||||||
expect(header_doc.xpath("//aes_key")).to have(1).item
|
expect(header_doc.xpath("//aes_key")).to have(1).item
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ module DiasporaFederation
|
||||||
|
|
||||||
it "verifies the envelope structure" do
|
it "verifies the envelope structure" do
|
||||||
expect {
|
expect {
|
||||||
Salmon::MagicEnvelope.unenvelop(Nokogiri::XML::Document.parse("<asdf/>").root, sender)
|
Salmon::MagicEnvelope.unenvelop(Nokogiri::XML("<asdf/>").root, sender)
|
||||||
}.to raise_error Salmon::InvalidEnvelope
|
}.to raise_error Salmon::InvalidEnvelope
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ XML
|
||||||
context "sanity" do
|
context "sanity" do
|
||||||
it "expects an Nokogiri::XML::Element as param" do
|
it "expects an Nokogiri::XML::Element as param" do
|
||||||
expect {
|
expect {
|
||||||
Salmon::XmlPayload.unpack(Nokogiri::XML::Document.parse(entity_xml).root)
|
Salmon::XmlPayload.unpack(Nokogiri::XML(entity_xml).root)
|
||||||
}.not_to raise_error
|
}.not_to raise_error
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -29,7 +29,7 @@ XML
|
||||||
end
|
end
|
||||||
|
|
||||||
context "returned object" do
|
context "returned object" do
|
||||||
subject { Salmon::XmlPayload.unpack(Nokogiri::XML::Document.parse(entity_xml).root) }
|
subject { Salmon::XmlPayload.unpack(Nokogiri::XML(entity_xml).root) }
|
||||||
|
|
||||||
it "#to_h should match entity.to_h" do
|
it "#to_h should match entity.to_h" do
|
||||||
expect(subject.to_h).to eq(entity.to_h)
|
expect(subject.to_h).to eq(entity.to_h)
|
||||||
|
|
@ -47,7 +47,7 @@ XML
|
||||||
</test_entity>
|
</test_entity>
|
||||||
XML
|
XML
|
||||||
|
|
||||||
entity = Salmon::XmlPayload.unpack(Nokogiri::XML::Document.parse(xml).root)
|
entity = Salmon::XmlPayload.unpack(Nokogiri::XML(xml).root)
|
||||||
|
|
||||||
expect(entity).to be_an_instance_of Entities::TestEntity
|
expect(entity).to be_an_instance_of Entities::TestEntity
|
||||||
expect(entity.test).to eq("asdf")
|
expect(entity.test).to eq("asdf")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue