Skip to content

Commit

Permalink
Fix reshare import when root is not fetchable
Browse files Browse the repository at this point in the history
  • Loading branch information
cmrd-senya authored and SuperTux88 committed Sep 18, 2021
1 parent 413926b commit 1ec0314
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 1 deletion.
2 changes: 2 additions & 0 deletions lib/archive_importer/entity_importer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@ def import
rescue DiasporaFederation::Entities::Signable::SignatureVerificationFailed,
DiasporaFederation::Discovery::InvalidDocument,
DiasporaFederation::Discovery::DiscoveryError,
DiasporaFederation::Federation::Fetcher::NotFetchable,
ActiveRecord::RecordInvalid => e
logger.warn "#{self}: #{e}"
self.persisted_object = nil
end

attr_reader :json
Expand Down
4 changes: 3 additions & 1 deletion lib/archive_importer/own_entity_importer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ def substitute_author
attr_reader :old_author_id

def persisted_object
@persisted_object ||= (instance if real_author == old_author_id)
return @persisted_object if defined?(@persisted_object)

@persisted_object = (instance if real_author == old_author_id)
end

def real_author
Expand Down
34 changes: 34 additions & 0 deletions spec/lib/archive_importer/post_importer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -113,5 +113,39 @@
end
end
end

context "with reshare" do
let!(:author) { FactoryGirl.create(:person, diaspora_handle: "author@example.com") }
let(:entity_json) { JSON.parse(<<~JSON) }
{
"entity_data" : {
"created_at" : "2015-10-19T13:58:16Z",
"guid" : "#{UUID.generate(:compact)}",
"text" : "test post",
"author" : "author@example.com",
"root_author": "root_author@remote-pod.com",
"root_guid": "#{UUID.generate(:compact)}"
},
"entity_type": "reshare"
}
JSON

context "when a remote pod responds 403 to discovery requests" do
before do
stub_request(:get, "https://remote-pod.com/.well-known/webfinger?resource=acct:root_author@remote-pod.com")
.to_return(status: 403, body: "", headers: {})
stub_request(:get, "https://remote-pod.com/.well-known/host-meta")
.to_return(status: 403, body: "", headers: {})
stub_request(:get, "http://remote-pod.com/.well-known/host-meta")
.to_return(status: 403, body: "", headers: {})
end

it "doesn't raise error" do
expect {
instance.import
}.not_to raise_error
end
end
end
end
end

0 comments on commit 1ec0314

Please sign in to comment.