6c451d260f
Reviewed-on: #402 Co-authored-by: miteruzo <miteruzo@naver.com> Co-committed-by: miteruzo <miteruzo@naver.com>
52 行
1.9 KiB
Ruby
52 行
1.9 KiB
Ruby
require 'rails_helper'
|
|
|
|
RSpec.describe Preview::ThumbnailFetcher do
|
|
describe '.fetch' do
|
|
it 'rejects svg thumbnails' do
|
|
page = Preview::HttpFetcher::Response.new(
|
|
'<meta property="og:image" content="https://example.com/thumb.svg">',
|
|
'text/html',
|
|
'https://example.com/page')
|
|
svg = Preview::HttpFetcher::Response.new(
|
|
'<svg></svg>',
|
|
'image/svg+xml',
|
|
'https://example.com/thumb.svg')
|
|
|
|
allow(Preview::UrlSafety).to receive(:validate)
|
|
.and_return([URI.parse('https://example.com/page'), ['203.0.113.10']])
|
|
allow(Preview::HttpFetcher).to receive(:fetch)
|
|
.with('https://example.com/page', max_bytes: described_class::HTML_MAX_BYTES)
|
|
.and_return(page)
|
|
allow(Preview::HttpFetcher).to receive(:fetch)
|
|
.with('https://example.com/thumb.svg')
|
|
.and_return(svg)
|
|
|
|
expect {
|
|
described_class.fetch('https://example.com/page')
|
|
}.to raise_error(Preview::ThumbnailFetcher::GenerationFailed)
|
|
end
|
|
|
|
it 'accepts allowed image content type with parameters' do
|
|
page = Preview::HttpFetcher::Response.new(
|
|
'<meta property="og:image" content="https://example.com/thumb.jpg">',
|
|
'text/html',
|
|
'https://example.com/page')
|
|
image = Preview::HttpFetcher::Response.new(
|
|
'jpeg-bytes',
|
|
'image/jpeg; charset=binary',
|
|
'https://example.com/thumb.jpg')
|
|
|
|
allow(Preview::UrlSafety).to receive(:validate)
|
|
.and_return([URI.parse('https://example.com/page'), ['203.0.113.10']])
|
|
allow(Preview::HttpFetcher).to receive(:fetch)
|
|
.with('https://example.com/page', max_bytes: described_class::HTML_MAX_BYTES)
|
|
.and_return(page)
|
|
allow(Preview::HttpFetcher).to receive(:fetch)
|
|
.with('https://example.com/thumb.jpg')
|
|
.and_return(image)
|
|
|
|
expect(described_class.fetch('https://example.com/page')).to eq('jpeg-bytes')
|
|
end
|
|
end
|
|
end
|