diff --git a/spec/requests/session_controller_spec.rb b/spec/requests/session_controller_spec.rb new file mode 100644 index 0000000..2878088 --- /dev/null +++ b/spec/requests/session_controller_spec.rb @@ -0,0 +1,33 @@ +require 'rails_helper' + +describe SessionController do + describe 'checking for teaser redirection cookies upon login' do + context 'when logging in locally' do + before(:each) do + cookies['teaser_url'] = '/t/100' + @user = Fabricate(:user) + end + it 'sets the destination_url cookie' do + post '/session.json', params: { login: @user.username, password:'myawesomepassword' } + expect(cookies['destination_url']).to eq('/t/100') + end + it 'removes the teaser_url cookie' do + post '/session.json', params: { login: @user.username, password:'myawesomepassword' } + expect(cookies['teaser_url']).to be_empty + end + end + + context 'when logging in via sso' do + before(:each) do + SiteSetting.sso_url = 'https://procourse.co' + SiteSetting.sso_secret = 'abcdefg' + SiteSetting.enable_sso = true + cookies['teaser_url'] = '/t/100' + end + it 'removes the teaser_url cookie' do + get '/session/sso', params: { return_path: '/' } + expect(cookies['teaser_url']).to be_empty + end + end + end +end diff --git a/spec/requests/topics_controller_spec.rb b/spec/requests/topics_controller_spec.rb new file mode 100644 index 0000000..974aaf5 --- /dev/null +++ b/spec/requests/topics_controller_spec.rb @@ -0,0 +1,42 @@ +require 'rails_helper' + +describe TopicsController do + describe 'checking teaser status' do + + before(:each) do + SiteSetting.procourse_teaser_enabled = true + @group = Fabricate(:group) + @category = Fabricate(:private_category, group: @group) + @category.custom_fields['enable_topic_teasing'] = 'true' + @category.custom_fields['topic_teasing_url'] = '/login' + @category.save + @user = Fabricate(:user) + @topic = Fabricate(:topic, category: @category) + end + + context 'category teased and redirected' do + context 'with user logged out' do + before(:each) do + get "/t/#{@topic.id}" + end + + it 'creates a teaser_url cookie' do + expect(response.cookies['teaser_url']).to eq("/t/#{@topic.id}") + end + end + + context 'with user logged in' do + before(:each) do + sign_in(@user) + end + + subject { get "/t/#{@topic.id}" } + + it 'redirects the user to the correct URL' do + expect(subject).to redirect_to('/login') + end + end + + end + end +end