このコミットが含まれているのは:
@@ -1,28 +1,46 @@
|
|||||||
require "rails_helper"
|
require 'rails_helper'
|
||||||
|
|
||||||
|
|
||||||
RSpec.describe "Preview", type: :request do
|
RSpec.describe 'Preview', type: :request do
|
||||||
describe "GET /preview/title" do
|
describe 'GET /preview/title' do
|
||||||
it "401 unless logged in" do
|
it '401 unless logged in' do
|
||||||
sign_out
|
sign_out
|
||||||
get "/preview/title", params: { url: "example.com" }
|
get '/preview/title', params: { url: 'example.com' }
|
||||||
expect(response).to have_http_status(:unauthorized)
|
expect(response).to have_http_status(:unauthorized)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "400 when url blank" do
|
it '403 when logged in as guest' do
|
||||||
sign_in_as(create(:user))
|
sign_in_as(create(:user, :guest))
|
||||||
get "/preview/title", params: { url: "" }
|
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)
|
expect(response).to have_http_status(:bad_request)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns parsed title (stubbing URI.open)" do
|
it 'returns parsed title' do
|
||||||
sign_in_as(create(:user))
|
sign_in_as(create(:user, :member))
|
||||||
fake_html = "<html><head><title> Hello </title></head></html>"
|
allow(Preview::ThumbnailFetcher)
|
||||||
allow(URI).to receive(:open).and_return(StringIO.new(fake_html))
|
.to receive(:title)
|
||||||
|
.with('example.com')
|
||||||
|
.and_return('Hello')
|
||||||
|
|
||||||
get "/preview/title", params: { url: "example.com" }
|
get '/preview/title', params: { url: 'example.com' }
|
||||||
expect(response).to have_http_status(:ok)
|
expect(response).to have_http_status(:ok)
|
||||||
expect(json["title"]).to eq("Hello")
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
新しい課題から参照
ユーザをブロックする