2015-10-11 10:41:23 +01:00
require 'rails_helper'
2013-02-05 14:16:51 -05:00
describe StaticController do
2013-10-30 16:37:22 -04:00
context 'show' do
2014-07-24 14:27:34 -04:00
before do
post = create_post
SiteSetting . stubs ( :tos_topic_id ) . returns ( post . topic . id )
SiteSetting . stubs ( :guidelines_topic_id ) . returns ( post . topic . id )
SiteSetting . stubs ( :privacy_topic_id ) . returns ( post . topic . id )
end
2013-10-30 16:37:22 -04:00
context " with a static file that's present " do
2013-02-05 14:16:51 -05:00
2013-10-30 16:37:22 -04:00
before do
xhr :get , :show , id : 'faq'
end
2013-02-05 14:16:51 -05:00
2013-10-30 16:37:22 -04:00
it 'renders the static file if present' do
2015-01-09 14:04:02 -03:00
expect ( response ) . to be_success
2013-10-30 16:37:22 -04:00
end
2013-02-05 14:16:51 -05:00
2013-10-30 16:37:22 -04:00
it " renders the file " do
2015-01-09 14:04:02 -03:00
expect ( response ) . to render_template ( 'static/show' )
expect ( assigns ( :page ) ) . to eq ( 'faq' )
2013-07-23 20:42:52 +02:00
end
2013-02-05 14:16:51 -05:00
end
2013-10-30 16:37:22 -04:00
[ [ 'tos' , :tos_url ] , [ 'privacy' , :privacy_policy_url ] ] . each do | id , setting_name |
context " #{ id } " do
subject { xhr :get , :show , id : id }
2013-06-18 10:52:04 -04:00
2013-10-30 16:37:22 -04:00
context " when #{ setting_name } site setting is NOT set " do
it " renders the #{ id } page " do
2014-07-24 14:27:34 -04:00
expect ( subject ) . to render_template ( " static/show " )
2015-01-09 14:04:02 -03:00
expect ( assigns ( :page ) ) . to eq ( id )
2013-07-23 20:42:52 +02:00
end
2013-06-18 10:52:04 -04:00
end
2013-10-30 16:37:22 -04:00
context " when #{ setting_name } site setting is set " do
before { SiteSetting . stubs ( setting_name ) . returns ( 'http://example.com/page' ) }
2013-06-18 10:52:04 -04:00
2013-10-30 16:37:22 -04:00
it " redirects to the #{ setting_name } " do
expect ( subject ) . to redirect_to ( 'http://example.com/page' )
end
2013-06-18 10:52:04 -04:00
end
end
end
2013-10-30 16:37:22 -04:00
context " with a missing file " do
it " should respond 404 " do
xhr :get , :show , id : 'does-not-exist'
2015-01-09 14:04:02 -03:00
expect ( response . response_code ) . to eq ( 404 )
2013-10-30 16:37:22 -04:00
end
end
it 'should redirect to / when logged in and path is /login' do
log_in
xhr :get , :show , id : 'login'
2015-01-09 14:04:02 -03:00
expect ( response ) . to redirect_to '/'
2013-02-05 14:16:51 -05:00
end
2014-07-26 23:16:08 +02:00
it " should display the login template when login is required " do
SiteSetting . stubs ( :login_required ) . returns ( true )
xhr :get , :show , id : 'login'
2015-01-09 14:04:02 -03:00
expect ( response ) . to be_success
2014-07-26 23:16:08 +02:00
end
end
2013-10-30 16:37:22 -04:00
2013-06-04 15:34:54 -07:00
describe '#enter' do
context 'without a redirect path' do
it 'redirects to the root url' do
xhr :post , :enter
2013-07-01 20:00:06 +02:00
expect ( response ) . to redirect_to '/'
2013-06-04 15:34:54 -07:00
end
end
context 'with a redirect path' do
it 'redirects to the redirect path' do
xhr :post , :enter , redirect : '/foo'
expect ( response ) . to redirect_to '/foo'
end
end
2014-08-28 17:45:13 -04:00
context 'with a full url' do
it 'redirects to the correct path' do
xhr :post , :enter , redirect : " #{ Discourse . base_url } /foo "
expect ( response ) . to redirect_to '/foo'
end
end
2014-10-30 11:31:44 -04:00
context 'with a period to force a new host' do
it 'redirects to the root path' do
xhr :post , :enter , redirect : " .org/foo "
expect ( response ) . to redirect_to '/'
end
end
2014-08-28 17:45:13 -04:00
context 'with a full url to someone else' do
it 'redirects to the root path' do
xhr :post , :enter , redirect : " http://eviltrout.com/foo "
expect ( response ) . to redirect_to '/'
end
end
context 'with an invalid URL' do
it " redirects to the root " do
xhr :post , :enter , redirect : " javascript:alert('trout') "
expect ( response ) . to redirect_to '/'
end
end
2013-06-04 15:34:54 -07:00
context 'when the redirect path is the login page' do
it 'redirects to the root url' do
xhr :post , :enter , redirect : login_path
2013-07-01 20:00:06 +02:00
expect ( response ) . to redirect_to '/'
2013-06-04 15:34:54 -07:00
end
end
end
2013-02-05 14:16:51 -05:00
end