mirror of https://github.com/mastodon/mastodon
parent
500276c99b
commit
49b2f7c0a2
@ -1,16 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
module ObfuscateFilename
|
|
||||||
extend ActiveSupport::Concern
|
|
||||||
|
|
||||||
class_methods do
|
|
||||||
def obfuscate_filename(path)
|
|
||||||
before_action do
|
|
||||||
file = params.dig(*path)
|
|
||||||
next if file.nil?
|
|
||||||
|
|
||||||
file.original_filename = SecureRandom.hex(8) + File.extname(file.original_filename)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
@ -1,30 +0,0 @@
|
|||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
require 'rails_helper'
|
|
||||||
|
|
||||||
describe ApplicationController, type: :controller do
|
|
||||||
controller do
|
|
||||||
include ObfuscateFilename
|
|
||||||
|
|
||||||
obfuscate_filename :file
|
|
||||||
|
|
||||||
def file
|
|
||||||
render plain: params[:file]&.original_filename
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
before do
|
|
||||||
routes.draw { get 'file' => 'anonymous#file' }
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'obfusticates filename if the given parameter is specified' do
|
|
||||||
file = fixture_file_upload('files/imports.txt', 'text/plain')
|
|
||||||
post 'file', params: { file: file }
|
|
||||||
expect(response.body).to end_with '.txt'
|
|
||||||
expect(response.body).not_to include 'imports'
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'does nothing if the given parameter is not specified' do
|
|
||||||
post 'file'
|
|
||||||
end
|
|
||||||
end
|
|
@ -0,0 +1,23 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
shared_examples 'AccountHeader' do |fabricator|
|
||||||
|
describe 'base64-encoded files' do
|
||||||
|
let(:base64_attachment) { "data:image/jpeg;base64,#{Base64.encode64(attachment_fixture('attachment.jpg').read)}" }
|
||||||
|
let(:account) { Fabricate(fabricator, header: base64_attachment) }
|
||||||
|
|
||||||
|
it 'saves header' do
|
||||||
|
expect(account.persisted?).to be true
|
||||||
|
expect(account.header).to_not be_nil
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'gives the header a file name' do
|
||||||
|
expect(account.header_file_name).to_not be_blank
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'saves a new header under a different file name' do
|
||||||
|
previous_file_name = account.header_file_name
|
||||||
|
account.update(header: base64_attachment)
|
||||||
|
expect(account.header_file_name).to_not eq previous_file_name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue