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

management.endpoints.web.exposure.include=health,info,beans,env,loggers,entityCache

keymaster.address=http://localhost:9080/syncope/rest/keymaster
keymaster.username=${anonymousUser}
keymaster.password=${anonymousKey}

service.discovery.address=http://localhost:9080/syncope/rest/

spring.devtools.livereload.enabled=false
spring.devtools.restart.enabled=false

# H2
spring.h2.console.enabled=true
spring.h2.console.path=/h2

spring.datasource.url=jdbc:h2:mem:syncopedb;DB_CLOSE_DELAY=-1
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver


security.adminUser=${adminUser}
security.anonymousUser=${anonymousUser}
security.jwsKey=${jwsKey}
security.secretKey=${secretKey}

persistence.domain[0].key=Master
persistence.domain[0].jdbcDriver=org.h2.Driver
persistence.domain[0].jdbcURL=jdbc:h2:mem:syncopedb;DB_CLOSE_DELAY=-1
persistence.domain[0].dbUsername=sa
persistence.domain[0].dbPassword=
persistence.domain[0].databasePlatform=org.apache.openjpa.jdbc.sql.H2Dictionary
persistence.domain[0].poolMaxActive=20
persistence.domain[0].poolMinIdle=5

persistence.domain[1].key=Two
persistence.domain[1].jdbcDriver=org.h2.Driver
persistence.domain[1].jdbcURL=jdbc:h2:mem:syncopetwo;DB_CLOSE_DELAY=-1
persistence.domain[1].dbUsername=sa
persistence.domain[1].dbPassword=
persistence.domain[1].databasePlatform=org.apache.openjpa.jdbc.sql.H2Dictionary
persistence.domain[1].poolMaxActive=20
persistence.domain[1].poolMinIdle=5
persistence.domain[1].adminPassword=2AA60A8FF7FCD473D321E0146AFD9E26DF395147
persistence.domain[1].adminCipherAlgorithm=SHA

provisioning.connIdLocation=${syncope.connid.location},\
connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}

spring.mail.host=localhost
spring.mail.port=${testmail.smtpport}
