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