summaryrefslogtreecommitdiff
path: root/spec/controllers/application_controller_spec.rb
diff options
context:
space:
mode:
authorTimothy Andrew <mail@timothyandrew.net>2016-04-19 16:22:15 +0530
committerTimothy Andrew <mail@timothyandrew.net>2016-04-28 22:28:36 +0530
commitade40fdcd2a4ee879bd2aba939cffaff39c65228 (patch)
treef080e8f77618aa89974fc21c703567b3de4be176 /spec/controllers/application_controller_spec.rb
parentfb2da6795c8503db5fed0f856760289e87ea9419 (diff)
downloadgitlab-ce-ade40fdcd2a4ee879bd2aba939cffaff39c65228.tar.gz
Authenticate non-API requests with personal access tokens.
- Rename the `authenticate_user_from_token!` filter to `authenticate_user_from_private_token!` - Add a new `authenticate_user_from_personal_access_token!` filter - Add tests for both.
Diffstat (limited to 'spec/controllers/application_controller_spec.rb')
-rw-r--r--spec/controllers/application_controller_spec.rb66
1 files changed, 66 insertions, 0 deletions
diff --git a/spec/controllers/application_controller_spec.rb b/spec/controllers/application_controller_spec.rb
index 186239d3096..1ec51465cd3 100644
--- a/spec/controllers/application_controller_spec.rb
+++ b/spec/controllers/application_controller_spec.rb
@@ -30,4 +30,70 @@ describe ApplicationController do
controller.send(:check_password_expiration)
end
end
+
+ describe "#authenticate_user_from_private_token!" do
+ controller(ApplicationController) do
+ def index
+ render text: "authenticated"
+ end
+ end
+
+ let(:user) { create(:user) }
+
+ it "logs the user in when the 'authenticity_token' param is populated with the private token" do
+ get :index, authenticity_token: user.private_token
+ expect(response.status).to eq(200)
+ expect(response.body).to eq("authenticated")
+ end
+
+ it "logs the user in when the 'private_token' param is populated with the private token" do
+ get :index, private_token: user.private_token
+ expect(response.status).to eq(200)
+ expect(response.body).to eq("authenticated")
+ end
+
+ it "logs the user in when the 'PRIVATE-TOKEN' header is populated with the private token" do
+ @request.headers['PRIVATE-TOKEN'] = user.private_token
+ get :index
+ expect(response.status).to eq(200)
+ expect(response.body).to eq("authenticated")
+ end
+
+ it "doesn't log the user in otherwise" do
+ @request.headers['PRIVATE-TOKEN'] = "token"
+ get :index, private_token: "token", authenticity_token: "token"
+ expect(response.status).to_not eq(200)
+ expect(response.body).to_not eq("authenticated")
+ end
+ end
+
+ describe "#authenticate_user_from_personal_access_token!" do
+ controller(ApplicationController) do
+ def index
+ render text: 'authenticated'
+ end
+ end
+
+ let(:user) { create(:user) }
+ let(:personal_access_token) { create(:personal_access_token, user: user) }
+
+ it "logs the user in when the 'personal_access_token' param is populated with the personal access token" do
+ get :index, personal_access_token: personal_access_token.token
+ expect(response.status).to eq(200)
+ expect(response.body).to eq('authenticated')
+ end
+
+ it "logs the user in when the 'PERSONAL_ACCESS_TOKEN' header is populated with the personal access token" do
+ @request.headers["PERSONAL_ACCESS_TOKEN"] = personal_access_token.token
+ get :index
+ expect(response.status).to eq(200)
+ expect(response.body).to eq('authenticated')
+ end
+
+ it "doesn't log the user in otherwise" do
+ get :index, personal_access_token: "token"
+ expect(response.status).to_not eq(200)
+ expect(response.body).to_not eq('authenticated')
+ end
+ end
end