6c451d260f
Reviewed-on: #402 Co-authored-by: miteruzo <miteruzo@naver.com> Co-committed-by: miteruzo <miteruzo@naver.com>
47 行
1.4 KiB
Ruby
47 行
1.4 KiB
Ruby
require 'rails_helper'
|
|
|
|
|
|
RSpec.describe 'Preview', type: :request do
|
|
describe 'GET /preview/title' do
|
|
it '401 unless logged in' do
|
|
sign_out
|
|
get '/preview/title', params: { url: 'example.com' }
|
|
expect(response).to have_http_status(:unauthorized)
|
|
end
|
|
|
|
it '403 when logged in as guest' do
|
|
sign_in_as(create(:user, :guest))
|
|
get '/preview/title', params: { url: 'example.com' }
|
|
expect(response).to have_http_status(:forbidden)
|
|
end
|
|
|
|
it '400 when url blank' do
|
|
sign_in_as(create(:user, :member))
|
|
get '/preview/title', params: { url: '' }
|
|
expect(response).to have_http_status(:bad_request)
|
|
end
|
|
|
|
it 'returns parsed title' do
|
|
sign_in_as(create(:user, :member))
|
|
allow(Preview::ThumbnailFetcher)
|
|
.to receive(:title)
|
|
.with('example.com')
|
|
.and_return('Hello')
|
|
|
|
get '/preview/title', params: { url: 'example.com' }
|
|
expect(response).to have_http_status(:ok)
|
|
expect(json['title']).to eq('Hello')
|
|
end
|
|
|
|
it '413 when fetched response is too large' do
|
|
sign_in_as(create(:user, :member))
|
|
allow(Preview::ThumbnailFetcher)
|
|
.to receive(:title)
|
|
.and_raise(Preview::HttpFetcher::ResponseTooLarge, '外部データが大きすぎます.')
|
|
|
|
get '/preview/title', params: { url: 'example.com' }
|
|
expect(response).to have_http_status(:payload_too_large)
|
|
end
|
|
end
|
|
end
|