|
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|
|
|
|
RSpec.describe ActivityPub::ProcessAccountService, type: :service do |
|
|
|
|
subject { described_class.new } |
|
|
|
|
|
|
|
|
|
context 'with property values' do |
|
|
|
|
context 'with property values, an avatar, and a profile header' do |
|
|
|
|
let(:payload) do |
|
|
|
|
{ |
|
|
|
|
id: 'https://foo.test', |
|
|
|
|
@ -16,19 +16,50 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
|
|
|
|
|
{ type: 'PropertyValue', name: 'Occupation', value: 'Unit test' }, |
|
|
|
|
{ type: 'PropertyValue', name: 'non-string', value: %w(foo bar) }, |
|
|
|
|
], |
|
|
|
|
image: { |
|
|
|
|
type: 'Image', |
|
|
|
|
mediaType: 'image/png', |
|
|
|
|
url: 'https://foo.test/image.png', |
|
|
|
|
}, |
|
|
|
|
icon: { |
|
|
|
|
type: 'Image', |
|
|
|
|
url: [ |
|
|
|
|
{ |
|
|
|
|
mediaType: 'image/png', |
|
|
|
|
href: 'https://foo.test/icon.png', |
|
|
|
|
}, |
|
|
|
|
], |
|
|
|
|
}, |
|
|
|
|
}.with_indifferent_access |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'parses out of attachment' do |
|
|
|
|
before do |
|
|
|
|
stub_request(:get, 'https://foo.test/image.png').to_return(request_fixture('avatar.txt')) |
|
|
|
|
stub_request(:get, 'https://foo.test/icon.png').to_return(request_fixture('avatar.txt')) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'parses property values, avatar and profile header as expected' do |
|
|
|
|
account = subject.call('alice', 'example.com', payload) |
|
|
|
|
expect(account.fields).to be_a Array |
|
|
|
|
expect(account.fields.size).to eq 2 |
|
|
|
|
expect(account.fields[0]).to be_a Account::Field |
|
|
|
|
expect(account.fields[0].name).to eq 'Pronouns' |
|
|
|
|
expect(account.fields[0].value).to eq 'They/them' |
|
|
|
|
expect(account.fields[1]).to be_a Account::Field |
|
|
|
|
expect(account.fields[1].name).to eq 'Occupation' |
|
|
|
|
expect(account.fields[1].value).to eq 'Unit test' |
|
|
|
|
|
|
|
|
|
expect(account.fields) |
|
|
|
|
.to be_an(Array) |
|
|
|
|
.and have_attributes(size: 2) |
|
|
|
|
expect(account.fields.first) |
|
|
|
|
.to be_an(Account::Field) |
|
|
|
|
.and have_attributes( |
|
|
|
|
name: eq('Pronouns'), |
|
|
|
|
value: eq('They/them') |
|
|
|
|
) |
|
|
|
|
expect(account.fields.last) |
|
|
|
|
.to be_an(Account::Field) |
|
|
|
|
.and have_attributes( |
|
|
|
|
name: eq('Occupation'), |
|
|
|
|
value: eq('Unit test') |
|
|
|
|
) |
|
|
|
|
expect(account).to have_attributes( |
|
|
|
|
avatar_remote_url: 'https://foo.test/icon.png', |
|
|
|
|
header_remote_url: 'https://foo.test/image.png' |
|
|
|
|
) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
|