spec/castronaut/configuration_spec.rb in relevance-castronaut-0.2.5 vs spec/castronaut/configuration_spec.rb in relevance-castronaut-0.3.0
- old
+ new
@@ -1,16 +1,16 @@
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
require 'yaml'
describe Castronaut::Configuration do
-
+
before(:all) do
@test_config_file = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'castronaut.example.yml'))
end
-
+
describe "initialization" do
-
+
it "defaults the config file path to ./castronaut.yml if none is given" do
Castronaut::Configuration.stub!(:parse_yaml_config).and_return({})
config = Castronaut::Configuration.new
config.stub!(:parse_config_into_settings)
@@ -27,121 +27,130 @@
config = Castronaut::Configuration.new
config.stub!(:parse_config_into_settings)
config.stub!(:connect_activerecord)
config.stub!(:setup_logger).and_return(stub_everything)
Castronaut::Configuration.stub!(:new).and_return(config)
-
+
Castronaut::Configuration.load("/foo/bar/baz").config_file_path.should == '/foo/bar/baz'
end
-
+
it "parses the file with YAML::load_file into a hash" do
YAML.should_receive(:load_file).with(/castronaut\.example\.yml/).and_return({})
config = Castronaut::Configuration.new
config.stub!(:parse_config_into_settings)
config.stub!(:connect_activerecord)
config.stub!(:setup_logger).and_return(stub_everything)
Castronaut::Configuration.stub!(:new).and_return(config)
-
+
Castronaut::Configuration.load(@test_config_file)
end
-
+
it "exposes the loaded YAML config at :config_hash" do
config_hash = {}
Castronaut::Configuration.stub!(:parse_yaml_config).and_return(config_hash)
config = Castronaut::Configuration.new
config.stub!(:parse_config_into_settings)
config.stub!(:connect_activerecord)
config.stub!(:setup_logger).and_return(stub_everything)
Castronaut::Configuration.stub!(:new).and_return(config)
-
+
Castronaut::Configuration.load(@test_config_file).config_hash = config_hash
end
-
+
it "creates the log directory if it doesn't already exist" do
config = Castronaut::Configuration.new
config.stub!(:connect_activerecord)
Castronaut::Configuration.stub!(:new).and_return(config)
-
+
File.stub!(:exist?).and_return(false)
FileUtils.should_receive(:mkdir_p)
Castronaut::Configuration.load(@test_config_file)
end
-
+
it "creates an instance of Logger pointing to the log directory" do
config = Castronaut::Configuration.new
config.stub!(:connect_activerecord)
Castronaut::Configuration.stub!(:new).and_return(config)
-
- Logger.should_receive(:new).with("log/castronaut.log", anything).and_return(stub_everything)
-
+ Hodel3000CompliantLogger.should_receive(:new).with("log/castronaut.log", anything).and_return(stub_everything)
+
Castronaut::Configuration.load(@test_config_file)
end
-
+
it "exposes the logger at :logger" do
Castronaut::Configuration.load(@test_config_file).logger.should_not be_nil
end
-
+
it "sets the loggers level from the configuration" do
Castronaut::Configuration.load(@test_config_file).logger.level.should == Logger::DEBUG
end
-
+
it "rotates the logger daily" do
config = Castronaut::Configuration.new
config.stub!(:connect_activerecord)
Castronaut::Configuration.stub!(:new).and_return(config)
-
- Logger.should_receive(:new).with("log/castronaut.log", "daily").and_return(stub_everything)
-
+
+ Hodel3000CompliantLogger.should_receive(:new).with("log/castronaut.log", "daily").and_return(stub_everything)
+
Castronaut::Configuration.load(@test_config_file)
end
-
+
end
-
+
describe "configuration settings" do
before(:all) do
@yml_config = YAML::load_file(@test_config_file)
end
-
+
it "load of Yaml config for testing should not be nil" do
@yml_config.should_not be_nil
end
%w{organization_name environment server_port log_directory log_level ssl_enabled cas_database cas_adapter}.each do |config_setting|
-
+
describe config_setting do
-
+
it "defines a method for the #{config_setting}" do
- Castronaut::Configuration.load(@test_config_file).respond_to?(config_setting).should be_true
+ Castronaut::Configuration.load(@test_config_file).respond_to?(config_setting).should be_true
end
it "sets the #{config_setting} to the value of the same key in the YAML config" do
Castronaut::Configuration.load(@test_config_file).send(config_setting).should == @yml_config[config_setting]
end
-
+
end
-
+
end
end
+ describe "when evil is afoot" do
+
+ it "fails to define any methods from the configuration hash that are already methods on the object" do
+ config = Castronaut::Configuration.new
+ config.parse_config_into_settings({ :to_s => 'blah'})
+ config.to_s.should_not == 'blah'
+ end
+
+ end
+
describe "connecting the adapter to active record" do
-
+
it "establishes a connection on the restful auth user" do
Castronaut::Adapters::RestfulAuthentication::User.should_receive(:establish_connection)
Castronaut::Configuration.load(@test_config_file)
end
-
+
it "checks if there are any tables in the adapter db" do
Castronaut::Adapters::RestfulAuthentication::User.stub!(:establish_connection)
Castronaut::Adapters::RestfulAuthentication::User.connection.stub!(:tables).and_return(['table'])
Castronaut::Configuration.load(@test_config_file)
end
describe "when there are no tables on the adapter db" do
-
+
it "notifies the user on STDERR" do
Castronaut::Adapters::RestfulAuthentication::User.stub!(:establish_connection)
Castronaut::Adapters::RestfulAuthentication::User.connection.stub!(:tables).and_return([])
Kernel.stub!(:exit)
STDERR.should_receive(:puts)