Remove methods from ObfuscateFilename and spec (#3347)
* Remove methods from ObfuscateFilename * Spec ObfuscateFilename
This commit is contained in:
parent
7bf2d6cb06
commit
922fb74197
2 changed files with 37 additions and 13 deletions
|
@ -4,19 +4,13 @@ module ObfuscateFilename
|
||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
class_methods do
|
class_methods do
|
||||||
def obfuscate_filename(*args)
|
|
||||||
before_action { obfuscate_filename(*args) }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def obfuscate_filename(path)
|
def obfuscate_filename(path)
|
||||||
|
before_action do
|
||||||
file = params.dig(*path)
|
file = params.dig(*path)
|
||||||
return if file.nil?
|
next if file.nil?
|
||||||
|
|
||||||
file.original_filename = secure_token + File.extname(file.original_filename)
|
file.original_filename = SecureRandom.hex(8) + File.extname(file.original_filename)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def secure_token(length = 16)
|
|
||||||
SecureRandom.hex(length / 2)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
30
spec/controllers/concerns/obfuscate_filename_spec.rb
Normal file
30
spec/controllers/concerns/obfuscate_filename_spec.rb
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
# 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
|
Loading…
Reference in a new issue