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) }
'@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
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',
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
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',
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',
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',