#       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_
disable_template_overrides = True

site_name = Allura
base_url = http://localhost
domain = localhost

mediawikiimporter.db_config_prefix = hostedapps.db.
mediawikiimporter.attachments_dir_prefix = /nfs/mediawiki-attachments/
mediawikiimporter.db_name_template = p_%s_mediawiki
hostedapps.db.host = localhost
hostedapps.db.port = 3306
hostedapps.db.user = user
hostedapps.db.password = password

# 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

trovecategories.enableediting = true

# ActivityStream
activitystream.master = mim://
activitystream.database = activitystream
activitystream.activity_collection = activities
activitystream.node_collection = nodes
activitystream.timeline_collection = timelines
activitystream.recording.enabled = true
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.localhost
forgemail.url = http://localhost:8080
forgemail.return_path = noreply@localhost

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.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

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

# markdown text longer than max length will not be converted to html
# tests expect max length of 40000
markdown_render_max_length = 40000

user_message.time_interval = 3600
user_message.max_messages = 200

auth.min_password_len = 6
auth.max_password_len = 30

# LDAP auth provider
auth.ldap.server = ldaps://localhost/
auth.ldap.suffix = ou=users,dc=sf,dc=net
auth.ldap.admin_dn = cn=site,ou=admin,dc=sf,dc=net
auth.ldap.admin_password = admin-password
auth.ldap.use_schroot = False
auth.ldap.password.algorithm = 6
auth.ldap.password.rounds = 6000
auth.ldap.password.salt_len = 16
user_prefs_storage.ldap.fields.display_name = cn

auth.allow_user_to_disable_account = true
auth.allow_edit_prefs = 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
