summaryrefslogtreecommitdiffstats
path: root/spec/lib
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2019-02-17 15:16:36 +0100
committerGitHub <noreply@github.com>2019-02-17 15:16:36 +0100
commit1a1b8170bbb1e8cfd5591a8ea8085de41fa90cc5 (patch)
tree24fef7cc84a45017bd6f8c44fa20390e49977f38 /spec/lib
parent147b4c2c3afacd6ad9d5c1353c072861eaca5fd2 (diff)
Fix Announce activities of unknown statuses not fetching those statuses (#10065)
Regression from #9998
Diffstat (limited to 'spec/lib')
-rw-r--r--spec/lib/activitypub/activity/announce_spec.rb43
1 files changed, 31 insertions, 12 deletions
diff --git a/spec/lib/activitypub/activity/announce_spec.rb b/spec/lib/activitypub/activity/announce_spec.rb
index 94b9d348d01..aa58d9e2348 100644
--- a/spec/lib/activitypub/activity/announce_spec.rb
+++ b/spec/lib/activitypub/activity/announce_spec.rb
@@ -1,7 +1,7 @@
require 'rails_helper'
RSpec.describe ActivityPub::Activity::Announce do
- let(:sender) { Fabricate(:account, followers_url: 'http://example.com/followers') }
+ let(:sender) { Fabricate(:account, followers_url: 'http://example.com/followers', uri: 'https://example.com/actor') }
let(:recipient) { Fabricate(:account) }
let(:status) { Fabricate(:status, account: recipient) }
@@ -10,21 +10,29 @@ RSpec.describe ActivityPub::Activity::Announce do
'@context': 'https://www.w3.org/ns/activitystreams',
id: 'foo',
type: 'Announce',
- actor: ActivityPub::TagManager.instance.uri_for(sender),
+ actor: 'https://example.com/actor',
object: object_json,
}.with_indifferent_access
end
- subject { described_class.new(json, sender) }
-
- before do
- sender.update(uri: ActivityPub::TagManager.instance.uri_for(sender))
+ let(:unknown_object_json) do
+ {
+ '@context': 'https://www.w3.org/ns/activitystreams',
+ id: 'https://example.com/actor/hello-world',
+ type: 'Note',
+ attributedTo: 'https://example.com/actor',
+ content: 'Hello world',
+ to: 'http://example.com/followers',
+ }
end
+ subject { described_class.new(json, sender) }
+
describe '#perform' do
context 'when sender is followed by a local account' do
before do
Fabricate(:account).follow!(sender)
+ stub_request(:get, 'https://example.com/actor/hello-world').to_return(body: Oj.dump(unknown_object_json))
subject.perform
end
@@ -38,10 +46,21 @@ RSpec.describe ActivityPub::Activity::Announce do
end
end
+ context 'an unknown status' do
+ let(:object_json) { 'https://example.com/actor/hello-world' }
+
+ it 'creates a reblog by sender of status' do
+ reblog = sender.statuses.first
+
+ expect(reblog).to_not be_nil
+ expect(reblog.reblog.text).to eq 'Hello world'
+ end
+ end
+
context 'self-boost of a previously unknown status with missing attributedTo' do
let(:object_json) do
{
- id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
+ id: 'https://example.com/actor#bar',
type: 'Note',
content: 'Lorem ipsum',
to: 'http://example.com/followers',
@@ -56,10 +75,10 @@ RSpec.describe ActivityPub::Activity::Announce do
context 'self-boost of a previously unknown status with correct attributedTo' do
let(:object_json) do
{
- id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
+ id: 'https://example.com/actor#bar',
type: 'Note',
content: 'Lorem ipsum',
- attributedTo: ActivityPub::TagManager.instance.uri_for(sender),
+ attributedTo: 'https://example.com/actor',
to: 'http://example.com/followers',
}
end
@@ -98,7 +117,7 @@ RSpec.describe ActivityPub::Activity::Announce do
let(:object_json) do
{
- id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
+ id: 'https://example.com/actor#bar',
type: 'Note',
content: 'Lorem ipsum',
to: 'http://example.com/followers',
@@ -117,7 +136,7 @@ RSpec.describe ActivityPub::Activity::Announce do
let(:object_json) do
{
- id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
+ id: 'https://example.com/actor#bar',
type: 'Note',
content: 'Lorem ipsum',
to: 'http://example.com/followers',
@@ -137,7 +156,7 @@ RSpec.describe ActivityPub::Activity::Announce do
let(:object_json) do
{
- id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
+ id: 'https://example.com/actor#bar',
type: 'Note',
content: 'Lorem ipsum',
to: 'http://example.com/followers',