1

ユーザーが.jpgファイルをアップロードできるようにしたいのですが、実際にそうである場合に限ります.jpg(たとえば、 cat.gif名前を変更した場合は機能しcat.jpgませ

現在、CarrierwaveImageUploader.rbには次のものがあります。

include CarrierWave::RMagick
include CarrierWave::MimeTypes
process :set_content_type
def extension_white_list
  %w(jpg jpeg png)
end

Rspec テスト ファイルでは、次の 3 つの方法でテストします。

# Works
describe "with invalid mime type and invalid extension" do
  before do
    image.image = File.open(File.join(Rails.root, 'spec', 'support', 'image', 'images', 'executable.jpg')) # this is a .exe renamed to .jpg
  end
  it { image.should_not be_valid }
end

# Works
describe "with invalid mime type and invalid extension" do
  before do
    image.image = File.open(File.join(Rails.root, 'spec', 'support', 'image', 'images', 'test_gif.gif')) # this is a .gif
  end
  it { should_not be_valid }
end

# Doesn't work
describe "with invalid mime type and valid extension" do
  before do
    image.image = File.open(File.join(Rails.root, 'spec', 'support', 'image', 'images', 'test_gif.jpg')) # this is a .gif renamed to .jpg
  end
  it { image.should_not be_valid }
end

最初の 2 つのテストは成功しますが、2 番目のテストは失敗します。gifホワイトリストに登録しておらず、MIME タイプをチェックしているため、理由はわかりません。

助言がありますか?

(gif を jpg に変換することは私のバックアップですが、むしろ拒否したいと思います。)

4

1 に答える 1