2013-02-05 14:16:51 -05:00
|
|
|
require 'spec_helper'
|
|
|
|
require 'discourse'
|
|
|
|
|
|
|
|
describe Discourse do
|
|
|
|
|
|
|
|
before do
|
|
|
|
RailsMultisite::ConnectionManagement.stubs(:current_hostname).returns('foo.com')
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'current_hostname' do
|
|
|
|
|
|
|
|
it 'returns the hostname from the current db connection' do
|
|
|
|
Discourse.current_hostname.should == 'foo.com'
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'base_url' do
|
2014-01-08 18:51:38 -05:00
|
|
|
context 'when https is off' do
|
2013-02-05 14:16:51 -05:00
|
|
|
before do
|
2014-01-08 18:51:38 -05:00
|
|
|
SiteSetting.expects(:use_https?).returns(false)
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|
2014-01-08 18:51:38 -05:00
|
|
|
it 'has a non https base url' do
|
2013-02-05 14:16:51 -05:00
|
|
|
Discourse.base_url.should == "http://foo.com"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-01-08 18:51:38 -05:00
|
|
|
context 'when https is on' do
|
2013-02-05 14:16:51 -05:00
|
|
|
before do
|
2014-01-08 18:51:38 -05:00
|
|
|
SiteSetting.expects(:use_https?).returns(true)
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
it 'has a non-ssl base url' do
|
|
|
|
Discourse.base_url.should == "https://foo.com"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'with a non standard port specified' do
|
|
|
|
before do
|
|
|
|
SiteSetting.stubs(:port).returns(3000)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns the non standart port in the base url" do
|
|
|
|
Discourse.base_url.should == "http://foo.com:3000"
|
|
|
|
end
|
2013-05-10 16:58:23 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2013-09-06 03:28:37 -04:00
|
|
|
context '#site_contact_user' do
|
2013-05-10 16:58:23 -04:00
|
|
|
|
|
|
|
let!(:admin) { Fabricate(:admin) }
|
2013-05-31 11:41:40 -04:00
|
|
|
let!(:another_admin) { Fabricate(:admin) }
|
2013-05-10 16:58:23 -04:00
|
|
|
|
2013-09-06 03:28:37 -04:00
|
|
|
it 'returns the user specified by the site setting site_contact_username' do
|
|
|
|
SiteSetting.stubs(:site_contact_username).returns(another_admin.username)
|
|
|
|
Discourse.site_contact_user.should == another_admin
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|
2014-01-23 05:26:31 -05:00
|
|
|
it 'returns the user specified by the site setting site_contact_username regardless of its case' do
|
|
|
|
SiteSetting.stubs(:site_contact_username).returns(another_admin.username.upcase)
|
|
|
|
Discourse.site_contact_user.should == another_admin
|
|
|
|
end
|
|
|
|
|
2013-05-10 16:58:23 -04:00
|
|
|
it 'returns the first admin user otherwise' do
|
2013-09-06 03:28:37 -04:00
|
|
|
SiteSetting.stubs(:site_contact_username).returns(nil)
|
|
|
|
Discourse.site_contact_user.should == admin
|
2013-05-10 16:58:23 -04:00
|
|
|
end
|
2013-02-25 11:42:20 -05:00
|
|
|
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|
2013-07-31 17:26:34 -04:00
|
|
|
context "#store" do
|
|
|
|
|
|
|
|
it "returns LocalStore by default" do
|
2013-11-05 13:04:47 -05:00
|
|
|
Discourse.store.should be_a(FileStore::LocalStore)
|
2013-07-31 17:26:34 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
it "returns S3Store when S3 is enabled" do
|
|
|
|
SiteSetting.expects(:enable_s3_uploads?).returns(true)
|
2013-11-05 13:04:47 -05:00
|
|
|
Discourse.store.should be_a(FileStore::S3Store)
|
2013-07-31 17:26:34 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
2014-02-12 23:37:28 -05:00
|
|
|
context "#enable_readonly_mode" do
|
|
|
|
|
|
|
|
it "adds a key in redis and publish a message through the message bus" do
|
|
|
|
$redis.expects(:set).with(Discourse.readonly_mode_key, 1)
|
|
|
|
MessageBus.expects(:publish).with(Discourse.readonly_channel, true)
|
|
|
|
Discourse.enable_readonly_mode
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
context "#disable_readonly_mode" do
|
|
|
|
|
|
|
|
it "removes a key from redis and publish a message through the message bus" do
|
|
|
|
$redis.expects(:del).with(Discourse.readonly_mode_key)
|
|
|
|
MessageBus.expects(:publish).with(Discourse.readonly_channel, false)
|
|
|
|
Discourse.disable_readonly_mode
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
context "#readonly_mode?" do
|
|
|
|
|
|
|
|
it "returns true when the key is present in redis" do
|
|
|
|
$redis.expects(:get).with(Discourse.readonly_mode_key).returns("1")
|
|
|
|
Discourse.readonly_mode?.should == true
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns false when the key is not present in redis" do
|
|
|
|
$redis.expects(:get).with(Discourse.readonly_mode_key).returns(nil)
|
|
|
|
Discourse.readonly_mode?.should == false
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|