#       Licensed to the Apache Software Foundation (ASF) under one
#       or more contributor license agreements.  See the NOTICE file
#       distributed with this work for additional information
#       regarding copyright ownership.  The ASF licenses this file
#       to you under the Apache License, Version 2.0 (the
#       "License"); you may not use this file except in compliance
#       with the License.  You may obtain a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#       Unless required by applicable law or agreed to in writing,
#       software distributed under the License is distributed on an
#       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#       KIND, either express or implied.  See the License for the
#       specific language governing permissions and limitations
#       under the License.
#
# 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_

site_name = Allura
base_url = http://localhost

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

# ActivityStream
activitystream.master = mim://
activitystream.database = activitystream
activitystream.activity_collection = activities
activitystream.node_collection = nodes
activitystream.timeline_collection = timelines
activitystream.enabled = true

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

# useful primarily for test suites, where we want to see the error right away
monq.raise_errors = true

# 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
scm.repos.tarball.enable = true
scm.repos.tarball.root = /tmp/tarball
scm.repos.tarball.url_prefix = file://

bulk_export_path = /tmp/bulk_export/{nbhd}/{project}
bulk_export_filename = {project}.zip
bulk_export_download_instructions = Sample instructions for {project}

support_tool_choices = wiki tickets discussion

#stats.sample_rate = 0

disable_csrf_protection=1

short_url.url_pattern = {base_url}/{nbhd}/{project}/{mount_point}/{short_name}

[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
