#
# allura - TurboGears 2 testing environment configuration
#
# The %(here)s variable will be replaced with the parent directory of this file
#
[DEFAULT]
debug = false
# make sure, since this extends development.ini
set debug = false
# Uncomment and replace with the address which should receive any error reports
# email_to = you@yourdomain.com
smtp_server = localhost
error_email_from = paste@localhost

[server:main]
use = egg:Paste#http
host = 0.0.0.0
port = 5000

[app:main]
use = config:development.ini#tool_test
db_prefix = test_

base_url = http://localhost/

# Use test MongoDB DB server
# ming.main.master = mongo://127.0.0.1:27018/allura
ming.main.master = mim://
ming.main.database = allura
ming.project.master = mim://
ming.project.database = project-data

solr.mock = true
amqp.mock = true
smtp.mock = true

# Forgemail server
forgemail.host = 0.0.0.0
forgemail.port = 8825
forgemail.domain = .in.sf.net
forgemail.url = http://localhost:8080

load_test_data = true
cache_test_data = false
site_admin_project = test

# Set the locations of some static resources
#  script_name is the path that is handled by the application
#  url_base is the prefix that references to the static resources should have
ew.script_name = /nf/_ew_/
ew.url_base = /nf/_ew_/
static.script_name = /nf/_static_/
static.url_base = /nf/_static_/

scm.new_refresh = true

scm.host.ro.git = git://git.localhost$path
scm.host.rw.git = ssh://$username@localhost:8022/scm-repo$path
scm.host.https.git = https://$username@localhost:8022/scm-repo$path
scm.host.https_anon.git = https://localhost:8022/scm-repo$path
scm.host.ro.hg = http://hg.localhost$path
scm.host.rw.hg = ssh://$username@localhost:8022/scm-repo$path
scm.host.https.hg = https://$username@localhost:8022/scm-repo$path
scm.host.https_anon.hg = https://localhost:8022/scm-repo$path
scm.host.ro.svn = http://svn.localhost$path/
scm.host.rw.svn = svn+ssh://$username@localhost:8022/scm-repo$path/
scm.host.https.svn = https://$username@localhost:8022/scm-repo$path/
scm.host.https_anon.svn = https://localhost:8022/scm-repo$path/

scm.clone.git = git clone $source_url $dest_path
scm.clone.hg = hg clone $source_url $dest_path
scm.clone.https_anon.svn = svn checkout $source_url $dest_path
scm.clone.ro.svn = svn checkout $source_url $dest_path
scm.clone.svn = svn checkout --username=$username $source_url $dest_path

scm.repos.root = /tmp

stats.sample_rate=0

disable_csrf_protection=1

[app:main_without_authn]
use = main
skip_authentication = True

[app:main_with_amqp]
use = main
# Use test RabbitMQ vhost
amqp.mock = false
amqp.hostname = localhost
amqp.port = 5672
amqp.userid = testuser
amqp.password = testpw
amqp.vhost = vhost_testing


# Add additional test specific configuration options as necessary.
[loggers]
keys = root, allura

[handlers]
keys = test

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = test

[logger_allura]
level = DEBUG
handlers =
qualname = allura

[handler_test]
class = FileHandler
args = ('test.log',)
level = NOTSET
formatter = generic

[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %H:%M:%S

[validation]
validate_html5 = false
validate_inlinejs = false
