logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: b352a8e5d4f3dba4b923a2a21dc9ae5343e7e8e4
parent: fd102059aa63a3953ccfedfe9efa0e6f7993f72a
Author: Matt Jankowski <mjankowski@thoughtbot.com>
Date:   Wed, 12 Apr 2017 10:03:37 -0400

Default to json type for webfinger requests (#1583)


Diffstat:

Mapp/controllers/xrd_controller.rb5-----
Mconfig/routes.rb2+-
Mspec/controllers/xrd_controller_spec.rb4++--
Aspec/requests/webfinger_request_spec.rb33+++++++++++++++++++++++++++++++++
4 files changed, 36 insertions(+), 8 deletions(-)

diff --git a/app/controllers/xrd_controller.rb b/app/controllers/xrd_controller.rb @@ -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 @@ -31,10 +30,6 @@ class XrdController < ApplicationController 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) diff --git a/config/routes.rb b/config/routes.rb @@ -15,7 +15,7 @@ Rails.application.routes.draw do 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', diff --git a/spec/controllers/xrd_controller_spec.rb b/spec/controllers/xrd_controller_spec.rb @@ -14,12 +14,12 @@ RSpec.describe XrdController, type: :controller do 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 diff --git a/spec/requests/webfinger_request_spec.rb b/spec/requests/webfinger_request_spec.rb @@ -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