Use Nokogiri::XML() instead of Nokogiri::XML::Document.parse()

This commit is contained in:
Benjamin Neff 2017-04-30 18:36:01 +02:00
parent cd3a7abf4d
commit 18a23df8d5
No known key found for this signature in database
GPG key ID: 971464C3F1A90194
29 changed files with 63 additions and 63 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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?

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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])

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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])

View file

@ -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

View file

@ -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

View file

@ -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 {

View file

@ -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>

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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")