Commit 665c8744 authored by manojmj's avatar manojmj

Require a logged in user to accept or decline a term

This change is required to make sure that only logged in
users can accept or decline terms
parent 2e069f6e
...@@ -4,7 +4,7 @@ module Users ...@@ -4,7 +4,7 @@ module Users
class TermsController < ApplicationController class TermsController < ApplicationController
include InternalRedirect include InternalRedirect
skip_before_action :authenticate_user! skip_before_action :authenticate_user!, only: [:index]
skip_before_action :enforce_terms! skip_before_action :enforce_terms!
skip_before_action :check_password_expiration skip_before_action :check_password_expiration
skip_before_action :check_two_factor_requirement skip_before_action :check_two_factor_requirement
......
---
title: Require a logged in user to accept or decline a term
merge_request: 24771
author:
type: fixed
...@@ -4,7 +4,8 @@ require 'spec_helper' ...@@ -4,7 +4,8 @@ require 'spec_helper'
describe Users::TermsController do describe Users::TermsController do
include TermsHelper include TermsHelper
let(:user) { create(:user) }
let_it_be(:user) { create(:user) }
let(:term) { create(:term) } let(:term) { create(:term) }
before do before do
...@@ -12,10 +13,11 @@ describe Users::TermsController do ...@@ -12,10 +13,11 @@ describe Users::TermsController do
end end
describe 'GET #index' do describe 'GET #index' do
context 'when a user is signed in' do
it 'redirects when no terms exist' do it 'redirects when no terms exist' do
get :index get :index
expect(response).to have_gitlab_http_status(:redirect) expect(response).to redirect_to(root_path)
end end
context 'when terms exist' do context 'when terms exist' do
...@@ -40,7 +42,36 @@ describe Users::TermsController do ...@@ -40,7 +42,36 @@ describe Users::TermsController do
end end
end end
context 'when a user is not signed in' do
before do
sign_out user
end
context 'when terms exist' do
before do
stub_env('IN_MEMORY_APPLICATION_SETTINGS', 'false')
term
end
it 'returns success response' do
get :index
expect(response).to have_gitlab_http_status(:success)
end
end
context 'when no terms exist' do
it 'redirects' do
get :index
expect(response).to redirect_to(root_path)
end
end
end
end
describe 'POST #accept' do describe 'POST #accept' do
context 'when a user is signed in' do
it 'saves that the user accepted the terms' do it 'saves that the user accepted the terms' do
post :accept, params: { id: term.id } post :accept, params: { id: term.id }
...@@ -80,7 +111,21 @@ describe Users::TermsController do ...@@ -80,7 +111,21 @@ describe Users::TermsController do
end end
end end
context 'when a user is not signed in' do
before do
sign_out user
end
it 'redirects to login page' do
post :accept, params: { id: term.id }
expect(response).to redirect_to(new_user_session_path)
end
end
end
describe 'POST #decline' do describe 'POST #decline' do
context 'when a user is signed in' do
it 'stores that the user declined the terms' do it 'stores that the user declined the terms' do
post :decline, params: { id: term.id } post :decline, params: { id: term.id }
...@@ -96,4 +141,17 @@ describe Users::TermsController do ...@@ -96,4 +141,17 @@ describe Users::TermsController do
expect(assigns(:current_user)).to be_nil expect(assigns(:current_user)).to be_nil
end end
end end
context 'when a user is not signed in' do
before do
sign_out user
end
it 'redirects to login page' do
post :decline, params: { id: term.id }
expect(response).to redirect_to(new_user_session_path)
end
end
end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment