Backfill some tests for app config, refactor base file name so people copy it instead of moving it

This commit is contained in:
Sarah Mei 2011-05-25 11:07:29 -07:00
parent f29a605a7c
commit c6d61c68c0
3 changed files with 166 additions and 8 deletions

127
config/app_base.yml Normal file
View file

@ -0,0 +1,127 @@
# Copyright (c) 2011, Diaspora Inc. This file is
# licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file.
default:
# Hostname of this host, as seen from the internet.
pod_url: "http://localhost:3000"
# Set this to true in order to close signups. Users will still be
# able to invite other people to join.
registrations_closed: false
# Enable extensive logging to log/{development,test,production}.log
debug: false
# Websocket server setup, see script/websocket_server.rb
# Enable extensive logging to websocket server.
socket_debug : false
# Websocket host, leave as 0.0.0.0 unless you know what you are doing
socket_host: 0.0.0.0
# File containing pid of running script/websocket_server.rb
socket_pidfile: "log/diaspora-wsd.pid"
# Websocket port, should normally be 8080 or 8081.
socket_port: 8080
socket_collection_name: 'websocket'
# Secure websocket confguration (wss://)
# requires SSL cert and key
socket_secure: false
socket_cert_chain_location: '/full/path/to/cert_chain.crt'
socket_private_key_location: '/full/path/to/file.key'
# Diaspora is only tested against this default pubsub server.
pubsub_server: 'https://pubsubhubbub.appspot.com/'
# Setting this to true enables diaspora's "send email" functionality
# requiring meaningful smtp_* settings. These are options for RoR's
# ActionMailer class.
mailer_on: false
# This chooses which mailer should be used. 'smtp' for a smtp
# connection or 'sendmail' to use the sendmail binary.
mailer_method: 'smtp'
# Address/port to smtp server handing outgoing mail.
smtp_address: 'smtp.example.com'
smtp_port: '587'
# Domain administered of smtp server.
smtp_domain: 'example.com'
# Sender address in diaspora's outgoing mail.
smtp_sender_address: 'no-reply@joindiaspora.com'
# Authentication required to send mail. Use one of 'one','plain',
# 'login' or 'cram-md5'. Use 'none' if server do not support
# authentication
smtp_authentication: 'plain'
# Credentails possibly required to log in to SMTP server if
# smtp_authentication != 'none'
smtp_username: 'smtp_username'
smtp_password: 'secret'
# The path to the sendmail binary.
sendmail_location: '/usr/sbin/sendmail'
#google analytics key, if false, it won't include the javascript
google_a_site: false
#piwik integration if not set, no javascript included
piwik_id:
# the site url in raw format (e.g. pikwik.examplehost.com)
piwik_url:
#cloudfiles username and api-key, used for backups
cloudfiles_username: 'example'
cloudfiles_api_key: 'abc123'
invites_off: false
#list of users who have admin privilages
admins:
- 'example_user1dsioaioedfhgoiesajdigtoearogjaidofgjo'
#s3 config, if set, carrierwave will store your photos on s3
#s3_key: 'key'
#s3_secret: 'secret'
#s3_bucket: 'my_photos'
s3_region: 'us-east-1'
# If you want normal Rails logs, set this to false in the appropriate environment.
# It is false by default in development and test.
enable_splunk_logging: true
# Process jobs in process?
single_process_mode: true
# Use this sections to overide settings from default in the specific environments
development:
enable_splunk_logging: false
production:
single_process_mode: false
# Do not touch unless you know what you're doing
test:
pod_url: "http://example.org/"
socket_port: 8081
enable_splunk_logging: false
# This section is special, you cannot overide settings from here in the above sections
script_server:
# Port on which thin should listen
thin_port: 3000
# customize thins startup
default_thin_args: "-p $THIN_PORT -e $RAILS_ENV"
# Possibilties are development, production
rails_env: "development"

View file

@ -5,6 +5,11 @@
class AppConfig
cattr_accessor :config_vars
cattr_accessor :base_file_path
def self.base_file_path
@@base_file_path || File.join(Rails.root, "config", "app_base.yml")
end
def self.[](key)
config_vars[key]
@ -27,10 +32,10 @@ class AppConfig
end
def self.load_config_for_environment(env)
if File.exist? "#{Rails.root}/config/app.yml.example"
all_envs = load_config_yaml "#{Rails.root}/config/app.yml.example"
if File.exist?(base_file_path)
all_envs = load_config_yaml(base_file_path)
else
$stderr.puts "ERROR: Why have you deleted config/app.yml.example?"
$stderr.puts "OH NO! Required file #{base_file_path} doesn't exist! Did you move it?"
all_envs = {}
end
if File.exist? "#{Rails.root}/config/app.yml"

View file

@ -5,7 +5,6 @@
require 'spec_helper'
describe AppConfig do
describe ".generate_pod_uri" do
before do
@environment_vars = AppConfig.config_vars
AppConfig.config_vars = {}
@ -13,6 +12,33 @@ describe AppConfig do
after do
AppConfig.config_vars = @environment_vars
end
describe ".base_file_path" do
it "allows you to set the base file path" do
AppConfig.base_file_path = "foo"
AppConfig.base_file_path.should == "foo"
end
it "defaults to config/app_base.yml" do
AppConfig.base_file_path = nil
AppConfig.base_file_path.should == "#{Rails.root}/config/app_base.yml"
end
end
describe ".load_config_for_environment" do
before do
@original_stderr = $stderr
$stderr = StringIO.new
end
after do
$stderr = @original_stderr
end
it "prints error if base file is missing" do
AppConfig.base_file_path = "/no/such/file"
AppConfig.load_config_for_environment(:test)
$stderr.rewind
$stderr.string.chomp.should_not be_blank
end
end
describe ".generate_pod_uri" do
describe "when pod_url is prefixed with protocol" do
it "generates a URI with a host for http" do
AppConfig[:pod_url] = "http://oscar.joindiaspora.com"