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