#
#
# This is test set that tests configurable LDAP PIP engine. It uses sample data from Apache DS 2.0:
#
# https://directory.apache.org/apacheds/basic-ug/resources/apache-ds-tutorial.ldif
#
# The Policy was created using the PAP Admin Tool.
#
#

#
# Default XACML Properties File
# Standard API Factories
#
xacml.dataTypeFactory=org.apache.openaz.xacml.std.StdDataTypeFactory
xacml.pdpEngineFactory=org.apache.openaz.xacmlatt.pdp.ATTPDPEngineFactory
xacml.pepEngineFactory=org.apache.openaz.xacml.std.pep.StdEngineFactory
xacml.pipFinderFactory=org.apache.openaz.xacml.std.pip.StdPIPFinderFactory
xacml.traceEngineFactory=org.apache.openaz.xacml.std.trace.LoggingTraceEngineFactory

# OpenAZ PDP Implementation Factories
#
xacml.openaz.evaluationContextFactory=org.apache.openaz.xacml.pdp.std.StdEvaluationContextFactory
xacml.openaz.combiningAlgorithmFactory=org.apache.openaz.xacml.pdp.std.StdCombiningAlgorithmFactory
xacml.openaz.functionDefinitionFactory=org.apache.openaz.xacml.pdp.std.StdFunctionDefinitionFactory
xacml.openaz.policyFinderFactory=org.apache.openaz.xacml.pdp.std.StdPolicyFinderFactory
xacml.att.policyFinderFactory=org.apache.openaz.xacmlatt.pdp.std.StdPolicyFinderFactory

#
# NOTE: If you are testing against a RESTful PDP, then the PDP must be configured with the
# policies and PIP configuration as defined below. Otherwise, this is the configuration that
# the embedded PDP uses.
#

# Policies to load
#
xacml.rootPolicies=hyper
hyper.file=testsets/pip/configurable-csv-hyper/CSV-Legal-Age-Marriage-v1.xml

# PIP Engine Definition
#
xacml.pip.engines=hyper1

hyper1.classname=org.apache.openaz.xacml.std.pip.engines.csv.HyperCSVEngine
hyper1.name=World Marriage Age Limits
hyper1.description=Minimum age for female/male marriages with or without their parental consent.
hyper1.source=testsets/pip/configurable-csv-hyper/marriage.csv
hyper1.target=marriage
hyper1.definition=country VARCHAR(80) PRIMARY KEY, wofemale INT, womale INT, wfemale INT, wmale INT, year INT, source VARCHAR(20)

hyper1.resolvers=age_consent

hyper1.resolver.age_consent.classname=org.apache.openaz.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver
hyper1.resolver.age_consent.name=Ages
hyper1.resolver.age_consent.description=This returns all the age's for consent or no consent for a country.
hyper1.resolver.age_consent.select=SELECT wofemale,womale,wfemale,wmale FROM marriage WHERE country=?
hyper1.resolver.age_consent.fields=wofemale,womale,wfemale,wmale

hyper1.resolver.age_consent.field.wofemale.id=org.apache.openaz:xacml:test:csv:country:no-consent:female
hyper1.resolver.age_consent.field.wofemale.datatype=http://www.w3.org/2001/XMLSchema#integer
hyper1.resolver.age_consent.field.wofemale.category=org.apache.openaz:xacml:test:csv:category:country
hyper1.resolver.age_consent.field.wofemale.issuer=org.apache.openaz:xacml:test:csv

hyper1.resolver.age_consent.field.womale.id=org.apache.openaz:xacml:test:csv:country:no-consent:male
hyper1.resolver.age_consent.field.womale.datatype=http://www.w3.org/2001/XMLSchema#integer
hyper1.resolver.age_consent.field.womale.category=org.apache.openaz:xacml:test:csv:category:country
hyper1.resolver.age_consent.field.womale.issuer=org.apache.openaz:xacml:test:csv

hyper1.resolver.age_consent.field.wfemale.id=org.apache.openaz:xacml:test:csv:country:consent:female
hyper1.resolver.age_consent.field.wfemale.datatype=http://www.w3.org/2001/XMLSchema#integer
hyper1.resolver.age_consent.field.wfemale.category=org.apache.openaz:xacml:test:csv:category:country
hyper1.resolver.age_consent.field.wfemale.issuer=org.apache.openaz:xacml:test:csv

hyper1.resolver.age_consent.field.wmale.id=org.apache.openaz:xacml:test:csv:country:consent:male
hyper1.resolver.age_consent.field.wmale.datatype=http://www.w3.org/2001/XMLSchema#integer
hyper1.resolver.age_consent.field.wmale.category=org.apache.openaz:xacml:test:csv:category:country
hyper1.resolver.age_consent.field.wmale.issuer=org.apache.openaz:xacml:test:csv

hyper1.resolver.age_consent.parameters=country
hyper1.resolver.age_consent.parameter.country.id=org.apache.openaz:xacml:test:csv:country:name
hyper1.resolver.age_consent.parameter.country.datatype=http://www.w3.org/2001/XMLSchema#string
hyper1.resolver.age_consent.parameter.country.category=org.apache.openaz:xacml:test:csv:category:country
#hyper1.resolver.age_consent.parameter.country.issuer=
