Skip to content
Extraits de code Groupes Projets
Non vérifiée Valider 5d318400 rédigé par Jonne Haß's avatar Jonne Haß
Parcourir les fichiers

Diaspora::Federation::Receive::ignore_existing_guid returns nil when

ignoring the error message

Previously it returned the return value of Logging::Logger#warn, which
is true for loggers that log the warn level. However
Diaspora::Federation::Receive::receive_relayable checks the return value
for truthiness in order to decide whether to attempt to relay it,
resulting in a NoMethodError: undefined method `parent' for
true:TrueClass in Diaspora::Federation::Receive::relay_relayable

This change is cosmetic as the exception raised prevented any action
that shouldn't happen anyway, so there's no actual logic change.
parent 36058f06
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -285,6 +285,7 @@ module Diaspora
rescue => e
raise e unless load_from_database(klass, guid, author)
logger.warn "ignoring error on receive #{klass}:#{guid}: #{e.class}: #{e.message}"
nil
end
# try to load the object first from the DB and if not available, save it.
......
......@@ -2,22 +2,22 @@ require "spec_helper"
shared_examples_for "it ignores existing object received twice" do |klass|
it "return nil if the #{klass} already exists" do
expect(Diaspora::Federation::Receive.public_send(:perform, entity)).not_to be_nil
expect(Diaspora::Federation::Receive.public_send(:perform, entity)).to be_nil
expect(Diaspora::Federation::Receive.perform(entity)).not_to be_nil
expect(Diaspora::Federation::Receive.perform(entity)).to be_nil
end
it "does not change anything if the #{klass} already exists" do
Diaspora::Federation::Receive.public_send(:perform, entity)
Diaspora::Federation::Receive.perform(entity)
expect_any_instance_of(klass).not_to receive(:create_or_update)
Diaspora::Federation::Receive.public_send(:perform, entity)
Diaspora::Federation::Receive.perform(entity)
end
end
shared_examples_for "it rejects if the parent author ignores the author" do |klass|
it "saves the relayable if the author is not ignored" do
Diaspora::Federation::Receive.public_send(:perform, entity)
Diaspora::Federation::Receive.perform(entity)
expect(klass.find_by!(guid: entity.guid)).to be_instance_of(klass)
end
......@@ -29,7 +29,7 @@ shared_examples_for "it rejects if the parent author ignores the author" do |kla
it "raises an error and does not save the relayable" do
expect {
Diaspora::Federation::Receive.public_send(:perform, entity)
Diaspora::Federation::Receive.perform(entity)
}.to raise_error Diaspora::Federation::AuthorIgnored
expect(klass.find_by(guid: entity.guid)).to be_nil
......@@ -47,7 +47,7 @@ shared_examples_for "it rejects if the parent author ignores the author" do |kla
expect(dispatcher).to receive(:dispatch)
expect {
Diaspora::Federation::Receive.public_send(:perform, entity)
Diaspora::Federation::Receive.perform(entity)
}.to raise_error Diaspora::Federation::AuthorIgnored
end
end
......@@ -61,6 +61,15 @@ shared_examples_for "it relays relayables" do |klass|
expect(relayable.guid).to eq(entity.guid)
end
Diaspora::Federation::Receive.public_send(:perform, entity)
Diaspora::Federation::Receive.perform(entity)
end
it "does not dispatch the received relayable if there was an error saving it and it exists already" do
allow_any_instance_of(klass).to receive(:save!).and_raise(RuntimeError, "something went wrong")
allow(Diaspora::Federation::Receive).to receive(:load_from_database).and_return(true)
expect(Diaspora::Federation::Dispatcher).to_not receive(:defer_dispatch)
Diaspora::Federation::Receive.perform(entity)
end
end
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter