Skip to content

Commit

Permalink
Default to json type for webfinger requests (mastodon#1583)
Browse files Browse the repository at this point in the history
  • Loading branch information
mjankowski authored and Gargron committed Apr 12, 2017
1 parent fd10205 commit b352a8e
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 8 deletions.
5 changes: 0 additions & 5 deletions app/controllers/xrd_controller.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# frozen_string_literal: true

class XrdController < ApplicationController
before_action :set_default_format_json, only: :webfinger
before_action :set_default_format_xml, only: :host_meta

def host_meta
Expand Down Expand Up @@ -31,10 +30,6 @@ def set_default_format_xml
request.format = 'xml' if request.headers['HTTP_ACCEPT'].nil? && params[:format].nil?
end

def set_default_format_json
request.format = 'json' if request.headers['HTTP_ACCEPT'].nil? && params[:format].nil?
end

def username_from_resource
if resource_param =~ /\Ahttps?:\/\//
path_params = Rails.application.routes.recognize_path(resource_param)
Expand Down
2 changes: 1 addition & 1 deletion config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
end

get '.well-known/host-meta', to: 'xrd#host_meta', as: :host_meta
get '.well-known/webfinger', to: 'xrd#webfinger', as: :webfinger
get '.well-known/webfinger', to: 'xrd#webfinger', as: :webfinger, defaults: { format: 'json' }

devise_for :users, path: 'auth', controllers: {
sessions: 'auth/sessions',
Expand Down
4 changes: 2 additions & 2 deletions spec/controllers/xrd_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@
let(:alice) { Fabricate(:account, username: 'alice') }

it 'returns http success when account can be found' do
get :webfinger, params: { resource: alice.to_webfinger_s }
get :webfinger, params: { resource: alice.to_webfinger_s }, format: :json
expect(response).to have_http_status(:success)
end

it 'returns http not found when account cannot be found' do
get :webfinger, params: { resource: 'acct:not@existing.com' }
get :webfinger, params: { resource: 'acct:not@existing.com' }, format: :json
expect(response).to have_http_status(:not_found)
end
end
Expand Down
33 changes: 33 additions & 0 deletions spec/requests/webfinger_request_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require "rails_helper"

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 }

expect(response).to have_http_status(:success)
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

expect(response).to have_http_status(:success)
expect(response.content_type).to eq "application/jrd+json"
end
end

describe "requested with xml format" do
it "returns an xml response" 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
end
end

0 comments on commit b352a8e

Please sign in to comment.