From fefab474569f231676a4fd1579a70723d729f206 Mon Sep 17 00:00:00 2001 From: Dmitry Medvinsky Date: Wed, 19 Mar 2014 17:32:38 +0400 Subject: [PATCH] Fix `/:username.keys` response content type Currently this method responds with `text/html`. It is kind of unusable if you open it in a browser. The browser thinks it is HTML and renders it as HTML, meaning new lines are dropped. So it's very hard to distinguish where the key starts and where it ends. This commit changes the content type header to `text/plain`. --- CHANGELOG | 1 + app/controllers/profiles/keys_controller.rb | 2 +- spec/controllers/profile_keys_controller_spec.rb | 10 ++++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index a9a8c00666d..1d41a3505da 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -29,6 +29,7 @@ v 6.7.0 - Better API responses for access_levels (sponsored by O'Reilly Media) - Requires at least 2 unicorn workers - Requires gitlab-shell v1.9+ + - Fix `/:username.keys` response content type (Dmitry Medvinsky) v 6.6.5 - Added option to remove issue assignee on project issue page and issue edit page (Jason Blanchard) diff --git a/app/controllers/profiles/keys_controller.rb b/app/controllers/profiles/keys_controller.rb index b4f14e649e2..6713cd7c8c7 100644 --- a/app/controllers/profiles/keys_controller.rb +++ b/app/controllers/profiles/keys_controller.rb @@ -41,7 +41,7 @@ class Profiles::KeysController < ApplicationController begin user = User.find_by_username(params[:username]) if user.present? - render text: user.all_ssh_keys.join("\n") + render text: user.all_ssh_keys.join("\n"), content_type: "text/plain" else render_404 and return end diff --git a/spec/controllers/profile_keys_controller_spec.rb b/spec/controllers/profile_keys_controller_spec.rb index 121012d5d49..593d3e9eb56 100644 --- a/spec/controllers/profile_keys_controller_spec.rb +++ b/spec/controllers/profile_keys_controller_spec.rb @@ -24,6 +24,11 @@ describe Profiles::KeysController do expect(response.body).to eq("") end + + it "should respond with text/plain content type" do + get :get_keys, username: user.username + expect(response.content_type).to eq("text/plain") + end end describe "user with keys" do @@ -44,6 +49,11 @@ describe Profiles::KeysController do expect(response.body).not_to eq("") expect(response.body).to eq(user.all_ssh_keys.join("\n")) end + + it "should respond with text/plain content type" do + get :get_keys, username: user.username + expect(response.content_type).to eq("text/plain") + end end end end