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.
This commit is contained in:
Timothy Andrew
2016-04-28 22:28:36 +05:30
parent fb2da6795c
commit ade40fdcd2
2 changed files with 83 additions and 2 deletions
@@ -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