From a61c5d7fa20ba2c2e55f0641a5441e5ddf178cee Mon Sep 17 00:00:00 2001 From: Justin DiRose Date: Wed, 27 Mar 2019 10:19:53 -0500 Subject: [PATCH 1/3] FEATURE: Topics Controller Spec --- spec/requests/topics_controller_spec.rb | 42 +++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 spec/requests/topics_controller_spec.rb 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 From 9f4a6b03fe3606613addf169b6b0a789c58035ef Mon Sep 17 00:00:00 2001 From: Justin DiRose Date: Sat, 30 Mar 2019 12:56:03 -0500 Subject: [PATCH 2/3] FEATURE: SessionController tests [669] --- spec/requests/session_controller_spec.rb | 36 ++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 spec/requests/session_controller_spec.rb diff --git a/spec/requests/session_controller_spec.rb b/spec/requests/session_controller_spec.rb new file mode 100644 index 0000000..039bb50 --- /dev/null +++ b/spec/requests/session_controller_spec.rb @@ -0,0 +1,36 @@ +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 + + let(:headers) { { host: Discourse.current_hostname } } + context 'when logging in via sso' do + before(:each) do + @sso_secret = 'abcdefg' + SiteSetting.sso_url = 'https://procourse.co' + SiteSetting.sso_secret = @sso_secret + SiteSetting.enable_sso = true + cookies['teaser_url'] = '/t/100' + @user = Fabricate(:user) + 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 From a050bc2d6a4d1a6d6e115cd1c6210b096b9b5992 Mon Sep 17 00:00:00 2001 From: Justin DiRose Date: Tue, 2 Apr 2019 10:29:41 -0500 Subject: [PATCH 3/3] REFACTOR: Clean up fabrications [669] --- spec/requests/session_controller_spec.rb | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/spec/requests/session_controller_spec.rb b/spec/requests/session_controller_spec.rb index 039bb50..2878088 100644 --- a/spec/requests/session_controller_spec.rb +++ b/spec/requests/session_controller_spec.rb @@ -17,15 +17,12 @@ end end - let(:headers) { { host: Discourse.current_hostname } } context 'when logging in via sso' do before(:each) do - @sso_secret = 'abcdefg' SiteSetting.sso_url = 'https://procourse.co' - SiteSetting.sso_secret = @sso_secret + SiteSetting.sso_secret = 'abcdefg' SiteSetting.enable_sso = true cookies['teaser_url'] = '/t/100' - @user = Fabricate(:user) end it 'removes the teaser_url cookie' do get '/session/sso', params: { return_path: '/' }