@original_filename = filename_from_content_disposition || filename_from_path || 'data'
@size = @target.response.content_length
@tempfile = copy_to_tempfile(@target)
- @content_type = @target.response.mime_type || ContentTypeDetector.new(@tempfile.path).detect
+ @content_type = ContentTypeDetector.new(@tempfile.path).detect
end
def copy_to_tempfile(source)
stub_request(:get, 'http://example.com/attachment.png').to_return(request_fixture('avatar.txt'))
stub_request(:get, 'http://example.com/emoji.png').to_return(body: attachment_fixture('emojo.png'))
+ stub_request(:get, 'http://example.com/emojib.png').to_return(body: attachment_fixture('emojo.png'), headers: { 'Content-Type' => 'application/octet-stream' })
end
describe '#perform' do
end
end
+ context 'with emojis served with invalid content-type' do
+ let(:object_json) do
+ {
+ id: [ActivityPub::TagManager.instance.uri_for(sender), '#bar'].join,
+ type: 'Note',
+ content: 'Lorem ipsum :tinkong:',
+ tag: [
+ {
+ type: 'Emoji',
+ icon: {
+ url: 'http://example.com/emojib.png',
+ },
+ name: 'tinkong',
+ },
+ ],
+ }
+ end
+
+ it 'creates status' do
+ status = sender.statuses.first
+
+ expect(status).to_not be_nil
+ expect(status.emojis.map(&:shortcode)).to include('tinkong')
+ end
+ end
+
context 'with emojis missing name' do
let(:object_json) do
{