Fix: ブーストが1つでもあると投稿のエクスポート時にエラーが出る問題 (#149)
* Fix: ブーストが1つでもあるとバックアップ時にエラーが出る問題 * Test: 限定投稿の扱い
This commit is contained in:
parent
1213d5fa20
commit
76edf82499
2 changed files with 14 additions and 2 deletions
|
@ -16,8 +16,9 @@ module Payloadable
|
||||||
always_sign = options.delete(:always_sign)
|
always_sign = options.delete(:always_sign)
|
||||||
payload = ActiveModelSerializers::SerializableResource.new(record, options.merge(serializer: serializer, adapter: ActivityPub::Adapter)).as_json
|
payload = ActiveModelSerializers::SerializableResource.new(record, options.merge(serializer: serializer, adapter: ActivityPub::Adapter)).as_json
|
||||||
object = record.respond_to?(:virtual_object) ? record.virtual_object : record
|
object = record.respond_to?(:virtual_object) ? record.virtual_object : record
|
||||||
|
bearcap = object.is_a?(String) && record.respond_to?(:type) && (record.type == 'Create' || record.type == 'Update')
|
||||||
|
|
||||||
if ((object.respond_to?(:sign?) && object.sign?) && signer && (always_sign || signing_enabled?)) || object.is_a?(String)
|
if ((object.respond_to?(:sign?) && object.sign?) && signer && (always_sign || signing_enabled?)) || bearcap
|
||||||
ActivityPub::LinkedDataSignature.new(payload).sign!(signer, sign_with: sign_with)
|
ActivityPub::LinkedDataSignature.new(payload).sign!(signer, sign_with: sign_with)
|
||||||
else
|
else
|
||||||
payload
|
payload
|
||||||
|
|
|
@ -9,6 +9,8 @@ RSpec.describe BackupService, type: :service do
|
||||||
let!(:attachment) { Fabricate(:media_attachment, account: user.account) }
|
let!(:attachment) { Fabricate(:media_attachment, account: user.account) }
|
||||||
let!(:status) { Fabricate(:status, account: user.account, text: 'Hello', visibility: :public, media_attachments: [attachment]) }
|
let!(:status) { Fabricate(:status, account: user.account, text: 'Hello', visibility: :public, media_attachments: [attachment]) }
|
||||||
let!(:private_status) { Fabricate(:status, account: user.account, text: 'secret', visibility: :private) }
|
let!(:private_status) { Fabricate(:status, account: user.account, text: 'secret', visibility: :private) }
|
||||||
|
let!(:limited_status) { Fabricate(:status, account: user.account, text: 'sec mutual', visibility: :limited, limited_scope: :mutual) }
|
||||||
|
let!(:reblog_status) { Fabricate(:status, account: user.account, reblog_of_id: Fabricate(:status).id) }
|
||||||
let!(:favourite) { Fabricate(:favourite, account: user.account) }
|
let!(:favourite) { Fabricate(:favourite, account: user.account) }
|
||||||
let!(:bookmark) { Fabricate(:bookmark, account: user.account) }
|
let!(:bookmark) { Fabricate(:bookmark, account: user.account) }
|
||||||
let!(:backup) { Fabricate(:backup, user: user) }
|
let!(:backup) { Fabricate(:backup, user: user) }
|
||||||
|
@ -60,10 +62,12 @@ RSpec.describe BackupService, type: :service do
|
||||||
aggregate_failures do
|
aggregate_failures do
|
||||||
expect(json['@context']).to_not be_nil
|
expect(json['@context']).to_not be_nil
|
||||||
expect(json['type']).to eq 'OrderedCollection'
|
expect(json['type']).to eq 'OrderedCollection'
|
||||||
expect(json['totalItems']).to eq 2
|
expect(json['totalItems']).to eq 4
|
||||||
expect(json['orderedItems'][0]['@context']).to be_nil
|
expect(json['orderedItems'][0]['@context']).to be_nil
|
||||||
expect(json['orderedItems'][0]).to include_create_item(status)
|
expect(json['orderedItems'][0]).to include_create_item(status)
|
||||||
expect(json['orderedItems'][1]).to include_create_item(private_status)
|
expect(json['orderedItems'][1]).to include_create_item(private_status)
|
||||||
|
expect(json['orderedItems'][2]).to include_create_item(limited_status)
|
||||||
|
expect(json['orderedItems'][3]).to include_announce_item(reblog_status)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -98,4 +102,11 @@ RSpec.describe BackupService, type: :service do
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def include_announce_item(status)
|
||||||
|
include({
|
||||||
|
'type' => 'Announce',
|
||||||
|
'object' => ActivityPub::TagManager.instance.uri_for(status.reblog),
|
||||||
|
})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue