forked from mastodon/mastodon
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Improve handling of HTTP_ACCEPT for webfinger (mastodon#2008)
This change includes: - Improve the spec coverage for incoming request to the webfinger action - For requests without an accept header (ie, what a browser might look like), return a JSON response. - For requests with an explicit format of xml or json, return that format. - For requests using an accept header, return that format. Also adds failing spec showing webfinger does not return xml, which covers the issue described in: mastodon#1983
- Loading branch information
1 parent
87feec8
commit 92f8a16
Showing
4 changed files
with
39 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,33 +1,48 @@ | ||
require "rails_helper" | ||
require 'rails_helper' | ||
|
||
describe "The webfinger route" do | ||
describe 'The webfinger route' do | ||
let(:alice) { Fabricate(:account, username: 'alice') } | ||
|
||
describe "requested without accepts headers" do | ||
it "returns a json response" do | ||
get webfinger_url, params: { resource: alice.to_webfinger_s } | ||
describe 'requested with standard accepts headers' do | ||
it 'returns a json response' do | ||
get webfinger_url(resource: alice.to_webfinger_s) | ||
|
||
expect(response).to have_http_status(:success) | ||
expect(response.content_type).to eq "application/jrd+json" | ||
expect(response.content_type).to eq 'application/jrd+json' | ||
end | ||
end | ||
|
||
describe "requested with html in accepts headers" do | ||
it "returns a json response" do | ||
headers = { 'HTTP_ACCEPT' => 'text/html' } | ||
get webfinger_url, params: { resource: alice.to_webfinger_s }, headers: headers | ||
describe 'asking for xml format' do | ||
it 'returns an xml response for xml format' do | ||
get webfinger_url(resource: alice.to_webfinger_s, format: :xml) | ||
|
||
expect(response).to have_http_status(:success) | ||
expect(response.content_type).to eq 'application/xrd+xml' | ||
end | ||
|
||
it 'returns an xml response for xml accept header' do | ||
headers = { 'HTTP_ACCEPT' => 'application/xrd+xml' } | ||
get webfinger_url(resource: alice.to_webfinger_s), headers: headers | ||
|
||
expect(response).to have_http_status(:success) | ||
expect(response.content_type).to eq "application/jrd+json" | ||
expect(response.content_type).to eq 'application/xrd+xml' | ||
end | ||
end | ||
|
||
describe "requested with xml format" do | ||
it "returns an xml response" do | ||
get webfinger_url(resource: alice.to_webfinger_s, format: :xml) | ||
describe 'asking for json format' do | ||
it 'returns a json response for json format' do | ||
get webfinger_url(resource: alice.to_webfinger_s, format: :json) | ||
|
||
expect(response).to have_http_status(:success) | ||
expect(response.content_type).to eq 'application/jrd+json' | ||
end | ||
|
||
it 'returns a json response for json accept header' do | ||
headers = { 'HTTP_ACCEPT' => 'application/jrd+json' } | ||
get webfinger_url(resource: alice.to_webfinger_s), headers: headers | ||
|
||
expect(response).to have_http_status(:success) | ||
expect(response.content_type).to eq "application/xrd+xml" | ||
expect(response.content_type).to eq 'application/jrd+json' | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters