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

#
# This is the configuration file for the jackrabbit repository test stub.
#

# Stub implementation class for testing on spi2dav or spi2davex
#javax.jcr.tck.repository_stub_impl=org.apache.jackrabbit.spi2dav.RepositoryStubImpl
javax.jcr.tck.repository_stub_impl=org.apache.jackrabbit.spi2davex.RepositoryStubImpl

# config for RepositoryStub (SPI2DAV, SPI2DAV_ex)
org.apache.jackrabbit.jcr2spi.repository.url=http://localhost:8080/jackrabbit/server/

# alternative workspace used for update tests etc.
org.apache.jackrabbit.jcr2spi.workspace2.name=test

# credential configuration
javax.jcr.tck.superuser.name=admin
javax.jcr.tck.superuser.pwd=admin
javax.jcr.tck.readwrite.name=user
javax.jcr.tck.readwrite.pwd=user
javax.jcr.tck.readonly.name=anonymous
javax.jcr.tck.readonly.pwd=

# global test configuration
javax.jcr.tck.testroot=/testroot
javax.jcr.tck.nodetype=nt:unstructured
javax.jcr.tck.nodename1=node1
javax.jcr.tck.nodename2=node2
javax.jcr.tck.nodename3=node3
javax.jcr.tck.nodename4=node4
javax.jcr.tck.propertyname1=prop1
javax.jcr.tck.propertyname2=prop2
javax.jcr.tck.workspacename=test

# namespace configuration
javax.jcr.tck.namespaces=test
javax.jcr.tck.namespaces.test=http://www.apache.org/jackrabbit/test

# sample for per test case config overriding
# Test class: AddNodeText
# Test method: testName
javax.jcr.tck.AddNodeTest.testName.nodename1=myname

# ==============================================================================
# JAVAX.JCR CONFIGURATION
# ==============================================================================

# Test class: ItemDefTest
javax.jcr.tck.ItemDefTest.testroot=/testdata

# Test class: ItemReadMethodsTest
javax.jcr.tck.ItemReadMethodsTest.testroot=/testdata

# Test class: NodeReadMethodsTest
javax.jcr.tck.NodeReadMethodsTest.testroot=/testdata

# Test class: PropertyTypeTest
javax.jcr.tck.PropertyTypeTest.testroot=/testdata

# Test class: BinaryPropertyTest
javax.jcr.tck.BinaryPropertyTest.testroot=/testdata

# Test class: BooleanPropertyTest
javax.jcr.tck.BooleanPropertyTest.testroot=/testdata

# Test class: DatePropertyTest
javax.jcr.tck.DatePropertyTest.testroot=/testdata

# Test class: DoublePropertyTest
javax.jcr.tck.DoublePropertyTest.testroot=/testdata

# Test class: LongPropertyTest
javax.jcr.tck.LongPropertyTest.testroot=/testdata

# Test class: NamePropertyTest
javax.jcr.tck.NamePropertyTest.testroot=/testdata

# Test class: PathPropertyTest
javax.jcr.tck.PathPropertyTest.testroot=/testdata

# Test class: ReferencePropertyTest
javax.jcr.tck.ReferencePropertyTest.testroot=/testdata

# Test class: StringPropertyTest
javax.jcr.tck.StringPropertyTest.testroot=/testdata

# Test class: SetValueVersionExceptionTest
# nodetype2: nodetype with a reference property
javax.jcr.tck.SetValueVersionExceptionTest.nodetype2=nt:linkedFile
# propertyname3: name of the single value reference property
javax.jcr.tck.SetValueVersionExceptionTest.propertyname3=jcr:content

# Test class: SetValueValueFormatExceptionTest
javax.jcr.tck.SetValueValueFormatExceptionTest.nodetype=test:canSetProperty
javax.jcr.tck.SetValueValueFormatExceptionTest.testValue.propertyname1=Boolean
javax.jcr.tck.SetValueValueFormatExceptionTest.testValueArray.propertyname1=BooleanMultiple
javax.jcr.tck.SetValueValueFormatExceptionTest.testString.propertyname1=Date
javax.jcr.tck.SetValueValueFormatExceptionTest.testStringArray.propertyname1=DateMultiple
javax.jcr.tck.SetValueValueFormatExceptionTest.testInputStream.propertyname1=Date
javax.jcr.tck.SetValueValueFormatExceptionTest.testLong.propertyname1=Boolean
javax.jcr.tck.SetValueValueFormatExceptionTest.testDouble.propertyname1=Boolean
javax.jcr.tck.SetValueValueFormatExceptionTest.testCalendar.propertyname1=Boolean
javax.jcr.tck.SetValueValueFormatExceptionTest.testBoolean.propertyname1=Date
javax.jcr.tck.SetValueValueFormatExceptionTest.testNode.propertyname1=Boolean

# Test class: SetPropertyAssumeTypeTest
javax.jcr.tck.SetPropertyAssumeTypeTest.nodetype=test:canSetProperty
javax.jcr.tck.SetPropertyAssumeTypeTest.testStringConstraintViolationExceptionBecauseOfInvalidTypeParameter.propertyname1=String
javax.jcr.tck.SetPropertyAssumeTypeTest.testValueConstraintViolationExceptionBecauseOfInvalidTypeParameter.propertyname1=String
javax.jcr.tck.SetPropertyAssumeTypeTest.testValuesConstraintViolationExceptionBecauseOfInvalidTypeParameter.propertyname1=StringMultiple

# Test class: UndefinedPropertyTest
javax.jcr.tck.UndefinedPropertyTest.testroot=/testdata

# Test class: PropertyReadMethodsTest
javax.jcr.tck.PropertyReadMethodsTest.testroot=/testdata

# Test class: NodeIteratorTest
javax.jcr.tck.NodeIteratorTest.testroot=/testdata

# Test class: NodeDiscoveringNodeTypesTest
javax.jcr.tck.NodeDiscoveringNodeTypesTest.testroot=/testdata

# Test class: RepositoryDescriptorTest
javax.jcr.tck.RepositoryDescriptorTest.testroot=/testdata

# Test class: WorkspaceReadMethodsTest
javax.jcr.tck.WorkspaceReadMethodsTest.testroot=/testdata

# Test class: SessionReadMethodsTest
javax.jcr.tck.SessionReadMethodsTest.testroot=/testdata

# Test class: NamespaceRegistryReadMethodsTest
javax.jcr.tck.NamespaceRegistryReadMethodsTest.testroot=/testdata

# Test class: NamespaceRemappingTest
javax.jcr.tck.NamespaceRemappingTest.testroot=/testdata

# Test class: SessionTest
# Test method: testMoveItemExistsException
# nodetype that does not allow same name siblings
javax.jcr.tck.SessionTest.testMoveItemExistsException.nodetype2=nt:folder
# valid node type that can be added as child of nodetype2
javax.jcr.tck.SessionTest.testMoveItemExistsException.nodetype3=nt:hierarchyNode

# Test class: SessionTest
# Test method: testSaveContstraintViolationException
# nodetype that has a property that is mandatory but not autocreated
javax.jcr.tck.SessionTest.testSaveContstraintViolationException.nodetype2=nt:file

# Test class: SessionUUIDTest
# node type that has a property of type PropertyType.REFERENCE
javax.jcr.tck.SessionUUIDTest.nodetype=nt:unstructured
# name of the property that is of type PropertyType.REFERENCE
javax.jcr.tck.SessionUUIDTest.propertyname1=foobar
# nodetype that has nodetype mix:referenceable assigned
javax.jcr.tck.SessionUUIDTest.nodetype2=test:refTargetNode

# Test class: SessionUUIDTest
# Test method: testSaveMovedRefNode
# name of the property that can be modified
javax.jcr.tck.SessionUUIDTest.testSaveMovedRefNode.propertyname1=foobar

# Test class: NodeTest
# Test method: testAddNodeItemExistsException
# nodetype that does not allow same name siblings and allows child nodes of
# the same type
javax.jcr.tck.NodeTest.testAddNodeItemExistsException.nodetype=nt:folder

# Test class: NodeTest
# Test method: testRemoveMandatoryNode
# nodetype that has a mandatory child node definition
javax.jcr.tck.NodeTest.testRemoveMandatoryNode.nodetype2=nt:file
# nodetype of the  mandatory child
javax.jcr.tck.NodeTest.testRemoveMandatoryNode.nodetype3=nt:base
# name of the mandatory node
javax.jcr.tck.NodeTest.testRemoveMandatoryNode.nodename3=jcr:content

# Test class: NodeTest
# Test method: testSaveContstraintViolationException
# nodetype that has a property that is mandatory but not autocreated
javax.jcr.tck.NodeTest.testSaveContstraintViolationException.nodetype2=nt:file

# Test class: NodeUUIDTest
# node type that has a property of type PropertyType.REFERENCE
javax.jcr.tck.NodeUUIDTest.nodetype=nt:unstructured
# name of the property that is of type PropertyType.REFERENCE
javax.jcr.tck.NodeUUIDTest.propertyname1=ref
# nodetype that has nodetype mix:referenceable assigned
javax.jcr.tck.NodeUUIDTest.nodetype2=test:refTargetNode

# Test class: NodeUUIDTest
# Test method: testSaveMovedRefNode
# name of the property that can be modified
javax.jcr.tck.NodeUUIDTest.testSaveMovedRefNode.propertyname1=foobar
# nodetype that has nodetype mix:referenceable assigned

# Test class: NodeOrderableChildNodesTest
# nodetype that supports orderable child nodes
javax.jcr.tck.NodeOrderableChildNodesTest.nodetype2=nt:unstructured
# valid node type that can be added as child of nodetype 2
javax.jcr.tck.NodeOrderableChildNodesTest.nodetype3=nt:unstructured

# Test class: NodeOrderableChildNodesTest
# Test method: testOrderBeforeUnsupportedRepositoryOperationException
# nodetype that does not allow ordering of child nodes
javax.jcr.tck.NodeOrderableChildNodesTest.testOrderBeforeUnsupportedRepositoryOperationException.nodetype2=nt:folder
# valid node type that can be added as child of nodetype 2
javax.jcr.tck.NodeOrderableChildNodesTest.testOrderBeforeUnsupportedRepositoryOperationException.nodetype3=nt:hierarchyNode

# Test class: SetPropertyNodeTest
# nodetype which is referenceable
javax.jcr.tck.SetPropertyNodeTest.nodetype=test:setProperty

# Test class: SetPropertyValueTest
# property that allows multiple values
javax.jcr.tck.SetPropertyValueTest.propertyname2=test:multiProperty
javax.jcr.tck.SetPropertyValueTest.nodetype=test:setProperty

# Test class: SetPropertyStringTest
# property that allows multiple values
javax.jcr.tck.SetPropertyStringTest.propertyname2=test:multiProperty
javax.jcr.tck.SetPropertyStringTest.nodetype=test:setProperty

# Test class: WorkspaceCloneSameNameSibsTest
javax.jcr.tck.WorkspaceCloneSameNameSibsTest.sameNameSibsFalseNodeType=test:sameNameSibsFalseChildNodeDefinition
javax.jcr.tck.WorkspaceCloneSameNameSibsTest.sameNameSibsTrueNodeType=nt:unstructured

# Test class: WorkspaceCopyBetweenWorkspacesSameNameSibsTest
javax.jcr.tck.WorkspaceCopyBetweenWorkspacesSameNameSibsTest.sameNameSibsFalseNodeType=test:sameNameSibsFalseChildNodeDefinition
javax.jcr.tck.WorkspaceCopyBetweenWorkspacesSameNameSibsTest.sameNameSibsTrueNodeType=nt:unstructured

# Test class: WorkspaceCopySameNameSibsTest
javax.jcr.tck.WorkspaceCopySameNameSibsTest.sameNameSibsFalseNodeType=test:sameNameSibsFalseChildNodeDefinition
javax.jcr.tck.WorkspaceCopySameNameSibsTest.sameNameSibsTrueNodeType=nt:unstructured

# Test class: WorkspaceMoveSameNameSibsTest
javax.jcr.tck.WorkspaceMoveSameNameSibsTest.sameNameSibsFalseNodeType=test:sameNameSibsFalseChildNodeDefinition
javax.jcr.tck.WorkspaceMoveSameNameSibsTest.sameNameSibsTrueNodeType=nt:unstructured

# Test class: RepositoryLoginTest
javax.jcr.tck.RepositoryLoginTest.testroot=/testdata

# Test class: RootNodeTest
javax.jcr.tck.RootNodeTest.testroot=/testroot

# Test class: ReferenceableRootNodesTest
javax.jcr.tck.ReferenceableRootNodesTest.testroot=/testroot

# Test class: ExportDocViewTest
javax.jcr.tck.ExportDocViewTest.testroot=/testdata

# ------------------------------------------------------------------------------
# observation configuration
# ------------------------------------------------------------------------------

# Test class: AddEventListenerTest
# Test method: testNodeType
javax.jcr.tck.AddEventListenerTest.testNodeType.nodetype2=nt:folder

# Configuration settings for the serialization.
# Note that the serialization test tries to use as many features of the repository
# as possible, but fails silently if a feature is not available. You have to
# specify all of the following configuration entries, even if your repository does
# not support the feature that is associated with them.

# Root node for the example tree
javax.jcr.tck.SerializationTest.testroot=/testdata/serialization

# Node type to use for the example tree. Specify a node type that allows complex trees and all property types if possible
javax.jcr.tck.SerializationTest.nodetype=nt:unstructured

# Name of the nodes for source and target tree
javax.jcr.tck.SerializationTest.sourceFolderName=source
javax.jcr.tck.SerializationTest.targetFolderName=target
javax.jcr.tck.SerializationTest.rootNodeName=test

# List the properties whose values may change during serialization/deserialization. For example,
# the UUID of a node is unique in the repository, so it will have to change when you re-import
# a tree at a different location.
javax.jcr.tck.SerializationTest.propertyValueMayChange= jcr:created jcr:uuid jcr:versionHistory jcr:baseVersion jcr:predecessors P_Reference

# List all properties which are skipped during xml import according specification chapter 7.3.3
javax.jcr.tck.SerializationTest.propertySkipped=

# The name of the test node types. For easier diagnostics, the node types have names
# that tell you the kind of information they store
javax.jcr.tck.SerializationTest.nodeTypesTestNode=NodeTypes
javax.jcr.tck.SerializationTest.mixinTypeTestNode=MixinTypes
javax.jcr.tck.SerializationTest.propertyTypesTestNode=PropertyTypes
javax.jcr.tck.SerializationTest.sameNameChildrenTestNode=SameNameChildren
javax.jcr.tck.SerializationTest.multiValuePropertiesTestNode=MultiValueProperties
javax.jcr.tck.SerializationTest.referenceableNodeTestNode=ReferenceableNode
javax.jcr.tck.SerializationTest.orderChildrenTestNode=OrderChildren
javax.jcr.tck.SerializationTest.namespaceTestNode=Namespace

# The name of the test property types.
javax.jcr.tck.SerializationTest.stringTestProperty=P_String
javax.jcr.tck.SerializationTest.binaryTestProperty=P_Binary
javax.jcr.tck.SerializationTest.dateTestProperty=P_Date
javax.jcr.tck.SerializationTest.longTestProperty=P_Long
javax.jcr.tck.SerializationTest.doubleTestProperty=P_Double
javax.jcr.tck.SerializationTest.booleanTestProperty=P_Boolean
javax.jcr.tck.SerializationTest.nameTestProperty=P_Name
javax.jcr.tck.SerializationTest.pathTestProperty=P_Path
javax.jcr.tck.SerializationTest.referenceTestProperty=P_Reference
javax.jcr.tck.SerializationTest.multiValueTestProperty=P_MultiValue

# node type not allowing same name sibs
javax.jcr.tck.SerializationTest.sameNameSibsFalseChildNodeDefinition=test:sameNameSibsFalseChildNodeDefinition

# Test method: testVersioningExceptionSessionFileChild
# specified nodetype must be versionable and allow child nodes of the same type.
javax.jcr.tck.SerializationTest.testVersioningExceptionSessionFileChild.nodetype=test:versionable

# Test method: testVersioningExceptionSessionFileParent
# specified nodetype must be versionable and allow child nodes of the same type.
javax.jcr.tck.SerializationTest.testVersioningExceptionSessionFileParent.nodetype=test:versionable

# Test method: testSessionImportXmlOverwriteException
# requires a node type that does not allow same name siblings
javax.jcr.tck.SerializationTest.testSessionImportXmlOverwriteException.nodetype=nt:folder

# Test class: ExportSysViewTest
javax.jcr.tck.ExportSysViewTest.testroot=/testdata

# ==============================================================================
# JAVAX.JCR.QUERY CONFIGURATION
# ==============================================================================

javax.jcr.tck.nodetype.testroot=/testdata

# ==============================================================================
# JAVAX.JCR.QUERY CONFIGURATION
# ==============================================================================

# Test class: SaveTest
# Test method: testConstraintViolationException
# Specified node type must not allow child nodes.
javax.jcr.tck.SaveTest.testConstraintViolationException.nodetype=nt:query

# Test class: XPathQueryLevel1Test
javax.jcr.tck.XPathQueryLevel1Test.testroot=/testdata/query

# Test class: XPathDocOrderTest
javax.jcr.tck.XPathDocOrderTest.testroot=/testdata/query

# Test class: XPathPosIndexTest
javax.jcr.tck.XPathPosIndexTest.testroot=/testdata/query

# Test class: XPathOrderByTest
javax.jcr.tck.XPathOrderByTest.testroot=/testdata/query

# Test class: XPathSyntaxTest
javax.jcr.tck.XPathSyntaxTest.testroot=/testdata/query

# Test class: XPathJcrPathTest
javax.jcr.tck.XPathJcrPathTest.testroot=/testdata

# Test class: SQLQueryLevel1Test
javax.jcr.tck.SQLQueryLevel1Test.testroot=/testdata/query

# Test class: SQLSyntaxTest
javax.jcr.tck.SQLSyntaxTest.testroot=/testdata/query

# Test class: SQLOrderByTest
javax.jcr.tck.SQLOrderByTest.testroot=/testdata/query

# Test class: DerefQueryLevel1Test
javax.jcr.tck.DerefQueryLevel1Test.testroot=/testdata

# Test class: GetLanguageTest
javax.jcr.tck.GetLanguageTest.testroot=/testdata

# Test class: GetPersistentQueryPathLevel1Test
javax.jcr.tck.GetPersistentQueryPathLevel1Test.testroot=/testdata

# Test class: GetPropertyNamesTest
javax.jcr.tck.GetPropertyNamesTest.testroot=/testdata

# Test class: GetStatementTest
javax.jcr.tck.GetStatementTest.testroot=/testdata

# Test class: GetSupportedQueryLanguagesTest
javax.jcr.tck.GetSupportedQueryLanguagesTest.testroot=/testdata

# Test class: SQLJcrPathTest
javax.jcr.tck.SQLJcrPathTest.testroot=/testdata

# Test class: SQLPathTest
javax.jcr.tck.SQLPathTest.testroot=/testdata

# Test class: PredicatesTest
javax.jcr.tck.PredicatesTest.testroot=/testdata

# Test class: SimpleSelectionTest
javax.jcr.tck.SimpleSelectionTest.testroot=/testdata

# ==============================================================================
# JAVAX.JCR.VERSIONING CONFIGURATION
# ==============================================================================

# nodetye that is versionable. if it is not, an attempt is made to create versionable nodes
# by adding a mix:versionable mixin-type.
# NOTE: javax.jcr.tck.nodetype must define a non-versionable nodetype!
javax.jcr.tck.version.versionableNodeType=test:versionable
javax.jcr.tck.version.propertyValue=aPropertyValue

# testroot for the version package
# the test root must allow versionable and non-versionable nodes being created below
javax.jcr.tck.version.testroot=/testroot

# 3 nodes (nodeName1, nodeName2, nodeName3 with nt=versionableNodeType / nt=nonVersionableNodeType will be cloned to 2nd workspace
# nodename1 > used to persistently create versionable node below testroot
# nodename2 > used to create second versionable node below testroot (used for restore/workspace.restore with uuid-conflict)
# nodename3 > used to persistently create non-versionable node below testroot
javax.jcr.tck.version.nodename1=versionableNodeName1
javax.jcr.tck.version.nodename2=versionableNodeName2
javax.jcr.tck.version.nodename3=nonVersionableNodeName1

# nodename 4: versionabel child-node of the first versionable node with nodeName1 and nodetype 'versionableNodeType'
# used for:
# + creation of a node in the 2nd workspace, that does not exist in the first workspace
# + creation of a node in the 2nd workspace, in order to test uuid-conflicts with Workspace.restore.
# + creation of a sub-node in the default workspace, in order to test uuid-conflicts with Node.restore.
# + NOTE: the nodetype with 'versionableNodeType' must define its children nodes to either have COPY or VERSION
#         OPV behaviour in order to successfully test Node.restore and Workspace.restore with uuid conflict.
javax.jcr.tck.version.nodename4=childNodeName

# path to existing String-properties and a new value for the property, that allows to test the indicated OPV behaviour
javax.jcr.tck.OnParentVersionAbortTest.propertyname1=test:abortOnParentVersionProp
javax.jcr.tck.OnParentVersionComputeTest.propertyname1=test:computeOnParentVersionProp
javax.jcr.tck.OnParentVersionCopyTest.propertyname1=test:copyOnParentVersionProp
javax.jcr.tck.OnParentVersionIgnoreTest.propertyname1=test:ignoreOnParentVersionProp
javax.jcr.tck.OnParentVersionInitializeTest.propertyname1=test:initializeOnParentVersionProp

# Test class: RestoreTest
# Test method: testRestoreWithUUIDConflict
# nodename4 must be the name of a child node with a OPV definition COPY or VERSION
javax.jcr.tck.RestoreTest.testRestoreWithUUIDConflict.nodename4=test:versionOnParentVersion
javax.jcr.tck.RestoreTest.testRestoreLabel.nodename4=test:versionOnParentVersion
javax.jcr.tck.RestoreTest.testRestoreName.nodename4=test:versionOnParentVersion

# Test class: WorkspaceRestoreTest
javax.jcr.tck.WorkspaceRestoreTest.testRestoreLabel.nodename4=test:versionOnParentVersion
javax.jcr.tck.WorkspaceRestoreTest.testRestoreName.nodename4=test:versionOnParentVersion

# config for nodes that show the indicated OPV behaviour:
# nodes are added in order to test the versioning behaviour indicated by the test-class name.
# NOTE:
# - nodename4 is uses as name for the childnode
# - nodetype is used as nodetype name for the childnode
# - the specified child node is created below nodename1 with versionableNodeType
#   the versionableNodeType and/or nodename1 may be overwritten with the individual
#   testclass below.
javax.jcr.tck.OnParentVersionCopyTest.nodename4=test:copyOnParentVersion
javax.jcr.tck.OnParentVersionCopyTest.nodetype=nt:unstructured
javax.jcr.tck.OnParentVersionAbortTest.nodename4=test:abortOnParentVersion
javax.jcr.tck.OnParentVersionAbortTest.nodetype=nt:unstructured
javax.jcr.tck.OnParentVersionIgnoreTest.nodename4=test:ignoreOnParentVersion
javax.jcr.tck.OnParentVersionIgnoreTest.nodetype=nt:unstructured
