diff --git a/ci/change_version.sh b/ci/change_version.sh index 73bf9f28c..806396a6f 100755 --- a/ci/change_version.sh +++ b/ci/change_version.sh @@ -23,7 +23,7 @@ set -e #fail fast # Arguments: # $1: exit code function helpAndExit() { - cat "$0" | grep "^#H" | cut -c4- | sed -e "s/%FILE%/$(basename "$0")/g" + grep "^#H" "$0" | cut -c4- | sed -e "s/%FILE%/$(basename "$0")/g" exit "$1" } @@ -38,7 +38,7 @@ function increment_version() { echo "'$1' does not match tag pattern." >&2 exit 1 fi - echo "${1%\.*}.$(expr ${1##*\.*\.} + 1)" + echo "${1%\.*}.$(("${1##*\.*\.}" + 1))" } # changing version in pom and all its children @@ -48,7 +48,7 @@ function increment_version() { # Environment variable: # REL: relative path to this file function change_version() { - $REL/../mvnw -q versions:set -f "$1" -DnewVersion="$2" -DartifactId=* -DgroupId=* versions:commit + "$REL/../mvnw" -q versions:set -f "$1" -DnewVersion="$2" -DartifactId=* -DgroupId=* versions:commit } function main() { @@ -65,7 +65,7 @@ function main() { echo "missing parameter for argument '-m|--modules'" >&2 exit 1 fi - MODULES=($2) + MODULES=("$2") shift # passed argument shift # passed value ;; @@ -82,8 +82,8 @@ function main() { fi if [[ "$GITHUB_REF" =~ ^refs/tags/v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - version=$([[ -n "$INCREMENT" ]] && echo $(increment_version "${GITHUB_REF##refs/tags/v}")-SNAPSHOT || echo "${GITHUB_REF##refs/tags/v}") - for dir in ${MODULES[@]}; do + version=$([[ -n "$INCREMENT" ]] && echo "$(increment_version "${GITHUB_REF##refs/tags/v}")-SNAPSHOT" || echo "${GITHUB_REF##refs/tags/v}") + for dir in "${MODULES[@]}"; do change_version "$dir" "$version" done else diff --git a/ci/commitPoms.sh b/ci/commitPoms.sh index 4da06c1eb..6e864251b 100755 --- a/ci/commitPoms.sh +++ b/ci/commitPoms.sh @@ -18,7 +18,7 @@ set -e # fail fast # Arguments: # $1: exit code function helpAndExit() { - cat "$0" | grep "^#H" | cut -c4- | sed -e "s/%FILE%/$(basename "$0")/g" + grep "^#H" "$0" | cut -c4- | sed -e "s/%FILE%/$(basename "$0")/g" exit "$1" } @@ -33,7 +33,7 @@ function increment_version() { echo "'$1' does not match tag pattern." >&2 exit 1 fi - echo "${1%\.*}.$(expr ${1##*\.*\.} + 1)" + echo "${1%\.*}.$(("${1##*\.*\.}" + 1))" } function main() { @@ -65,7 +65,7 @@ function main() { for file in "$@"; do [[ -n "$file" ]] && git add "$file" done - git commit -m "Updated poms to version $(increment_version ${GITHUB_REF##refs/tags/v})-SNAPSHOT" + git commit -m "Updated poms to version $(increment_version "${GITHUB_REF##refs/tags/v}")-SNAPSHOT" git push else echo "Nothing to push - this is not a release!" diff --git a/ci/update_taskana_dependency_for_wildfly.sh b/ci/update_taskana_dependency_for_wildfly.sh index 3423a5d4b..4f02bb6b3 100755 --- a/ci/update_taskana_dependency_for_wildfly.sh +++ b/ci/update_taskana_dependency_for_wildfly.sh @@ -14,7 +14,7 @@ set -e #fail fast # Arguments: # $1: exit code function helpAndExit() { - cat "$0" | grep "^#H" | cut -c4- | sed -e "s/%FILE%/$(basename "$0")/g" + grep "^#H" "$0" | cut -c4- | sed -e "s/%FILE%/$(basename "$0")/g" exit "$1" } @@ -29,7 +29,7 @@ function increment_version() { echo "'$1' does not match tag pattern." >&2 exit 1 fi - echo "${1%\.*}.$(expr ${1##*\.*\.} + 1)" + echo "${1%\.*}.$(("${1##*\.*\.}" + 1))" } function main() { @@ -37,14 +37,15 @@ function main() { if [[ "$GITHUB_REF" =~ ^refs/tags/v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then REL=$(dirname "$0") FILES=( - $REL/../rest/taskana-rest-spring-example-wildfly/pom.xml + "$REL/../rest/taskana-rest-spring-example-wildfly/pom.xml" + "$REL/../rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/AbstractAccTest.java" ) - for file in ${FILES[@]}; do - sed -i "s/[0-9]\+\.[0-9]\+\.[0-9]\+-SNAPSHOT/$(increment_version "${GITHUB_REF##refs/tags/v}")-SNAPSHOT/g" $file + for file in "${FILES[@]}"; do + sed -i "s/[0-9]\+\.[0-9]\+\.[0-9]\+-SNAPSHOT/$(increment_version "${GITHUB_REF##refs/tags/v}")-SNAPSHOT/g" "$file" done else echo "skipped version change for wildfly because this is not a release build" fi } -main "$@" \ No newline at end of file +main "$@" diff --git a/ci/verify_docs_alive.sh b/ci/verify_docs_alive.sh index a2fc334fa..04a06b99b 100755 --- a/ci/verify_docs_alive.sh +++ b/ci/verify_docs_alive.sh @@ -3,12 +3,12 @@ set -e # fail fast set -x BASE_URL=https://taskana.mybluemix.net/taskana -test 200 -eq $(curl -sw %{http_code} -o /dev/null "$BASE_URL/docs/rest/rest-api.html") -test 200 -eq $(curl -sw %{http_code} -o /dev/null "$BASE_URL/docs/rest/simplehistory-rest-api.html") -test 200 -eq $(curl -sw %{http_code} -o /dev/null "$BASE_URL/docs/rest/routing-rest-api.html") +test 200 -eq "$(curl -sw "%{http_code}" -o /dev/null "$BASE_URL/docs/rest/rest-api.html")" +test 200 -eq "$(curl -sw "%{http_code}" -o /dev/null "$BASE_URL/docs/rest/simplehistory-rest-api.html")" +test 200 -eq "$(curl -sw "%{http_code}" -o /dev/null "$BASE_URL/docs/rest/routing-rest-api.html")" for module in taskana-core taskana-spring; do - test 200 -eq $(curl -sw %{http_code} -o /dev/null "$BASE_URL/docs/java/$module/pro/taskana/package-summary.html") + test 200 -eq "$(curl -sw "%{http_code}" -o /dev/null "$BASE_URL/docs/java/$module/pro/taskana/package-summary.html")" done for module in taskana-cdi; do - test 200 -eq $(curl -sw %{http_code} -o /dev/null "$BASE_URL/docs/java/$module/pro/taskana/common/internal/package-summary.html") + test 200 -eq "$(curl -sw "%{http_code}" -o /dev/null "$BASE_URL/docs/java/$module/pro/taskana/common/internal/package-summary.html")" done diff --git a/ci/verify_docs_jar.sh b/ci/verify_docs_jar.sh index e91b7b7da..662e2fa99 100755 --- a/ci/verify_docs_jar.sh +++ b/ci/verify_docs_jar.sh @@ -4,7 +4,7 @@ set -e #fail fast #check that first dir has same amount of files as second dir function verifyDocs() { test -d "$1" - test $(find "$1" | wc -l) -eq $(grep "$2" <<<"$JAR_CONTENT" | wc -l) + test "$(find "$1" | wc -l)" -eq "$(grep -c "$2" <<<"$JAR_CONTENT")" } REL=$(dirname "$0") @@ -18,8 +18,8 @@ set -x verifyDocs "$REL/../lib/taskana-core/target/apidocs" "/static/docs/java/taskana-core" verifyDocs "$REL/../lib/taskana-cdi/target/apidocs" "/static/docs/java/taskana-cdi" verifyDocs "$REL/../lib/taskana-spring/target/apidocs" "/static/docs/java/taskana-spring" -test -n "$(jar -tf $JAR_FILE_LOCATION | grep /static/docs/rest/rest-api.html)" -test -n "$(jar -tf $JAR_FILE_LOCATION | grep /static/docs/rest/simplehistory-rest-api.html)" -test -n "$(jar -tf $JAR_FILE_LOCATION | grep /static/docs/rest/routing-rest-api.html)" +test -n "$(jar -tf "$JAR_FILE_LOCATION" | grep /static/docs/rest/rest-api.html)" +test -n "$(jar -tf "$JAR_FILE_LOCATION" | grep /static/docs/rest/simplehistory-rest-api.html)" +test -n "$(jar -tf "$JAR_FILE_LOCATION" | grep /static/docs/rest/routing-rest-api.html)" set +x echo "the jar file '$JAR_FILE_LOCATION' contains documentation" diff --git a/pom.xml b/pom.xml index 0ca783909..77ca05302 100644 --- a/pom.xml +++ b/pom.xml @@ -78,7 +78,7 @@ 5.0.1.Final 2.7.0.Final 8.0.1 - 1.6.0.Final + 1.5.0.Final 3.0.1.Final diff --git a/rest/taskana-rest-spring-example-wildfly/pom.xml b/rest/taskana-rest-spring-example-wildfly/pom.xml index 0db74661d..494e47c4c 100644 --- a/rest/taskana-rest-spring-example-wildfly/pom.xml +++ b/rest/taskana-rest-spring-example-wildfly/pom.xml @@ -95,12 +95,6 @@ - - pro.taskana - taskana-common-test - ${project.version} - test - pro.taskana.history taskana-simplehistory-rest-spring @@ -127,11 +121,22 @@ junit test + + org.junit.vintage + junit-vintage-engine + test + org.springframework spring-test test + + org.springframework.boot + spring-boot-test + test + + diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/common/test/rest/RestHelper.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/common/test/rest/RestHelper.java new file mode 100644 index 000000000..bad4a7b82 --- /dev/null +++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/common/test/rest/RestHelper.java @@ -0,0 +1,92 @@ +package pro.taskana.common.test.rest; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.fasterxml.jackson.module.paramnames.ParameterNamesModule; +import java.nio.charset.StandardCharsets; +import java.util.Base64; +import java.util.Collections; +import java.util.Optional; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.hateoas.MediaTypes; +import org.springframework.hateoas.mediatype.hal.Jackson2HalModule; +import org.springframework.http.HttpHeaders; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; + +/** Helps to simplify rest api testing. */ +@Component +public class RestHelper { + + public static final RestTemplate TEMPLATE = getRestTemplate(); + + private Environment environment; + private int port; + + @Autowired + public RestHelper(Environment environment) { + this.environment = environment; + } + + public RestHelper(int port) { + this.port = port; + } + + public String toUrl(String relativeUrl, Object... uriVariables) { + return UriComponentsBuilder.fromPath(relativeUrl) + .scheme("http") + .host("127.0.0.1") + .port(getPort()) + .build(false) + .expand(uriVariables) + .toString(); + } + + public static HttpHeaders generateHeadersForUser(String user) { + HttpHeaders headers = new HttpHeaders(); + headers.add("Authorization", encodeUserAndPasswordAsBasicAuth(user)); + headers.add("Content-Type", MediaTypes.HAL_JSON_VALUE); + return headers; + } + + public static String encodeUserAndPasswordAsBasicAuth(String user) { + String toEncode = user + ":" + user; + return "Basic " + Base64.getEncoder().encodeToString(toEncode.getBytes(StandardCharsets.UTF_8)); + } + + private int getPort() { + return Optional.ofNullable(environment) + .map(e -> e.getRequiredProperty("local.server.port", int.class)) + .orElse(port); + } + + /** + * Return a REST template which is capable of dealing with responses in HAL format. + * + * @return RestTemplate + */ + private static RestTemplate getRestTemplate() { + ObjectMapper mapper = + new ObjectMapper() + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) + .configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false) + .registerModule(new Jackson2HalModule()) + .registerModule(new ParameterNamesModule()) + .registerModule(new Jdk8Module()) + .registerModule(new JavaTimeModule()); + MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); + converter.setSupportedMediaTypes(Collections.singletonList(MediaTypes.HAL_JSON)); + converter.setObjectMapper(mapper); + + RestTemplate template = new RestTemplate(); + // important to add first to ensure priority + template.getMessageConverters().add(0, converter); + return template; + } +} diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/common/test/rest/TaskanaSpringBootTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/common/test/rest/TaskanaSpringBootTest.java new file mode 100644 index 000000000..6d40f3e74 --- /dev/null +++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/common/test/rest/TaskanaSpringBootTest.java @@ -0,0 +1,22 @@ +package pro.taskana.common.test.rest; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ActiveProfiles; + +/** Use this annotation to test with a spring context and a standardized configuration. */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +// DirtiesContext is required to make the integration tests run with embedded LDAP. +// Otherwise the LDAP server is not shut down correctly and will not come up again. (socket busy) +@DirtiesContext(classMode = ClassMode.AFTER_CLASS) +@ActiveProfiles({"test"}) +@SpringBootTest( + classes = TestConfiguration.class, + webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public @interface TaskanaSpringBootTest {} diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/common/test/rest/TestConfiguration.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/common/test/rest/TestConfiguration.java new file mode 100644 index 000000000..169fe02c6 --- /dev/null +++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/common/test/rest/TestConfiguration.java @@ -0,0 +1,30 @@ +package pro.taskana.common.test.rest; + +import javax.sql.DataSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.DependsOn; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.transaction.PlatformTransactionManager; + +import pro.taskana.sampledata.SampleDataGenerator; + +@SpringBootApplication +@ComponentScan("pro.taskana") +@DependsOn("getTaskanaEngine") // wait for schema to be created BEFORE inserting test data +public class TestConfiguration { + + @Autowired + public TestConfiguration( + @Value("${taskana.schemaName:TASKANA}") String schemaName, DataSource dataSource) { + new SampleDataGenerator(dataSource, schemaName).generateSampleData(); + } + + @Bean + public PlatformTransactionManager txManager(DataSource dataSource) { + return new DataSourceTransactionManager(dataSource); + } +} diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/AbstractAccTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/AbstractAccTest.java index b5c847012..7487605b8 100644 --- a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/AbstractAccTest.java +++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/AbstractAccTest.java @@ -22,6 +22,7 @@ import pro.taskana.workbasket.rest.models.WorkbasketSummaryRepresentationModel; public class AbstractAccTest { protected RestHelper restHelper = new RestHelper(8080); + protected static final String DEPENDENCY_VERSION = "4.12.1-SNAPSHOT"; protected TaskRepresentationModel getTaskResourceSample() { ClassificationSummaryRepresentationModel classificationResource = diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithHistoryLoggerEnabledTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithHistoryLoggerEnabledTest.java index 9ab3ad834..29976f39e 100644 --- a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithHistoryLoggerEnabledTest.java +++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithHistoryLoggerEnabledTest.java @@ -47,7 +47,7 @@ public class TaskanaWildflyWithHistoryLoggerEnabledTest extends AbstractAccTest MavenCoordinates.createCoordinate( "pro.taskana.history", "taskana-loghistory-provider", - "${project.version}", + DEPENDENCY_VERSION, PackagingType.JAR, null); diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabledTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabledTest.java index f2d549291..1e86c9447 100644 --- a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabledTest.java +++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabledTest.java @@ -53,7 +53,7 @@ public class TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabledTest extends MavenCoordinates.createCoordinate( "pro.taskana.history", "taskana-simplehistory-rest-spring", - "${project.version}", + DEPENDENCY_VERSION, PackagingType.JAR, null); @@ -64,7 +64,7 @@ public class TaskanaWildflyWithSimpleHistoryAndHistoryLoggerEnabledTest extends MavenCoordinates.createCoordinate( "pro.taskana.history", "taskana-loghistory-provider", - "${project.version}", + DEPENDENCY_VERSION, PackagingType.JAR, null); diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryEnabledTest.java b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryEnabledTest.java index 960013949..a382b7b29 100644 --- a/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryEnabledTest.java +++ b/rest/taskana-rest-spring-example-wildfly/src/test/java/pro/taskana/example/wildfly/TaskanaWildflyWithSimpleHistoryEnabledTest.java @@ -53,7 +53,7 @@ public class TaskanaWildflyWithSimpleHistoryEnabledTest extends AbstractAccTest MavenCoordinates.createCoordinate( "pro.taskana.history", "taskana-simplehistory-rest-spring", - "${project.version}", + DEPENDENCY_VERSION, PackagingType.JAR, null); diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/resources/module.xml b/rest/taskana-rest-spring-example-wildfly/src/test/resources/module.xml index 24fe55521..8fe759a26 100644 --- a/rest/taskana-rest-spring-example-wildfly/src/test/resources/module.xml +++ b/rest/taskana-rest-spring-example-wildfly/src/test/resources/module.xml @@ -4,7 +4,7 @@ - + diff --git a/rest/taskana-rest-spring-example-wildfly/src/test/resources/taskana-test.ldif b/rest/taskana-rest-spring-example-wildfly/src/test/resources/taskana-test.ldif new file mode 100644 index 000000000..2c05e7969 --- /dev/null +++ b/rest/taskana-rest-spring-example-wildfly/src/test/resources/taskana-test.ldif @@ -0,0 +1,449 @@ +###################### +# Base Structure +###################### +dn: OU=Test,O=TASKANA +ou: Organisationseinheit +objectclass: top +objectclass: organizationalUnit + +dn: cn=groups,OU=Test,O=TASKANA +cn: groups +objectclass: top +objectclass: container + +dn: cn=users,OU=Test,O=TASKANA +cn: users +objectclass: top +objectclass: container + +dn: cn=other-users,OU=Test,O=TASKANA +cn: users +objectclass: top +objectclass: container + +dn: cn=organisation,OU=Test,O=TASKANA +cn: organisation +objectclass: top +objectclass: container + + +######################## +# Users General +######################## +dn: uid=monitor,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Monitor +description: desc +uid: monitor +sn: Monitor +ou: Organisationseinheit/Organisationseinheit IT +cn: monitor monitor +userPassword: monitor + +dn: uid=taskadmin,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Task +description: desc +uid: taskadmin +sn: Admin +ou: Organisationseinheit/Organisationseinheit IT +cn: Task admin +userPassword: taskadmin + +dn: uid=admin,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Admin +description: desc +uid: admin +sn: Admin +ou: Organisationseinheit/Organisationseinheit IT +cn: Admin Admin +userPassword: admin + +dn: uid=businessadmin,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Business +description: desc +memberOf: cn=business-admins,cn=groups,OU=Test,O=TASKANA +uid: businessadmin +sn: Admin +ou: Organisationseinheit/Organisationseinheit IT +cn: Business Admin +userPassword: businessadmin + +######################## +# Users KSC 1 +######################## +dn: uid=teamlead-1,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Titus +description: desc +phoneNumber: 012345678 +mobileNumber: 09876554321 +email: Titus.Toll@taskana.de +orgLevel1: ABC +orgLevel2: DEF/GHI +someDepartement: JKL +orgLevel4: MNO/PQR +memberOf: cn=Organisationseinheit KSC 1,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +memberOf: cn=monitor-users,cn=groups,OU=Test,O=TASKANA +memberOf: cn=business-admins,cn=groups,OU=Test,O=TASKANA +memberOf: cn=ksc-teamleads,cn=groups,OU=Test,O=TASKANA +uid: teamlead-1 +sn: Toll +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 1 +cn: Titus Toll +userPassword: teamlead-1 + +dn: uid=user-1-1,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Max +description: desc +memberOf: cn=ksc-users,cn=groups,OU=Test,O=TASKANA +memberOf: cn=Organisationseinheit KSC 1,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uid: user-1-1 +sn: Mustermann +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 1 +cn: Max Mustermann +userPassword: user-1-1 + +dn: uid=user-1-2,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Elena +description: desc +memberOf: cn=ksc-users,cn=groups,OU=Test,O=TASKANA +memberOf: cn=Organisationseinheit KSC 1,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uid: user-1-2 +sn: Eifrig +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 1 +cn: Elena Eifrig +userPassword: user-1-2 + +dn: uid=user-1-3,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Elena +description: desc +uid: user-1-3 +sn: Faul +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 1 +cn: Elena Faul +userPassword: user-1-3 + +######################## +# Users KSC 2 +######################## +dn: uid=teamlead-2,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Frauke +description: desc +memberOf: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +memberOf: cn=monitor-users,cn=groups,OU=Test,O=TASKANA +memberOf: cn=business-admins,cn=groups,OU=Test,O=TASKANA +memberOf: cn=ksc-teamleads,cn=groups,OU=Test,O=TASKANA +uid: teamlead-2 +sn: Faul +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 2 +cn: Frauke Faul +userPassword: teamlead-2 + +dn: uid=user-2-1,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Simone +description: desc +memberOf: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +memberOf: cn=ksc-users,cn=groups,OU=Test,O=TASKANA +uid: user-2-1 +sn: Müller +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 2 +cn: Simone Müller +userPassword: user-2-1 + +dn: uid=user-2-2,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Tim +description: desc +memberOf: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +memberOf: cn=ksc-users,cn=groups,OU=Test,O=TASKANA +uid: user-2-2 +sn:: U2NobMOkZnJpZw== +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 2 +cn:: VGltIFNjaGzDpGZyaWc= +userPassword: user-2-2 + +dn: uid=user-2-3,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Thomas +description: desc +memberOf: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uid: user-2-3 +sn: Bach +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 2 +cn: Thomas Bach +userPassword: user-2-3 + +dn: uid=user-2-4,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Rolf +description: desc +memberOf: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uid: user-2-4 +sn: Wieland +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 2 +cn: Rolf Wieland +userPassword: user-2-4 + +dn: uid=user-2-5,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Heike +description: desc +memberOf: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uid: user-2-5 +sn: Schmidt +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 2 +cn: Heike Schmidt +userPassword: user-2-5 + +dn: uid=user-2-6,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Kurt +description: desc +memberOf: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uid: user-2-6 +sn: Maier +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 2 +cn: Kurt Maier +userPassword: user-2-6 + +dn: uid=user-2-7,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Wiebke +description: desc +memberOf: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uid: user-2-7 +sn: Meyer +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 2 +cn: Wiebke Meyer +userPassword: user-2-7 + +dn: uid=user-2-8,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Jana +description: desc +memberOf: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uid: user-2-8 +sn: Heeg +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 2 +cn: Jana Heeg +userPassword: user-2-8 + +dn: uid=user-2-9,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Nathalie +description: desc +memberOf: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uid: user-2-9 +sn: Fuchs +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 2 +cn: Nathalie Fuchs +userPassword: user-2-9 + +dn: uid=user-2-10,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Johannes +description: desc +memberOf: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uid: user-2-10 +sn: Renz +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 2 +cn: Johannes Renz +userPassword: user-2-10 + +dn: uid=das_ist_eine_sehr_sehr_sehr_sehr_sehr_lange_user_id,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Max +description: desc +memberOf: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uid: das_ist_eine_sehr_sehr_sehr_sehr_sehr_lange_user_id +sn: Renz +ou: Organisationseinheit/Organisationseinheit KSC/Organisationseinheit KSC 2 +cn: Max Renz +userPassword: user-2-11 + +######################## +# Users Domäne B +######################## +dn: uid=user-b-1,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Bernd +description: desc +uid: user-b-1 +sn: Bern +ou: Organisationseinheit/Organisationseinheit B +cn: Bernd Bern +userPassword: user-b-1 + +dn: uid=User-b-2,cn=users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Brunhilde +description: desc +uid: User-b-2 +sn: Bio +ou: Organisationseinheit/Organisationseinheit B +cn: Brunhilde Bio +userPassword: user-b-2 + +######################## +# Users in other cn +######################## +dn: uid=otheruser,cn=other-users,OU=Test,O=TASKANA +objectclass: inetorgperson +objectclass: organizationalperson +objectclass: person +objectclass: top +givenName: Other +description: User in other cn than search root +uid: otheruser +sn: User +ou: Other +cn: Other User +userPassword: otheruser + + +######################## +# Groups +######################## +dn: cn=ksc-users,cn=groups,OU=Test,O=TASKANA +uniquemember: uid=user-1-1,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-1-2,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-2-1,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-2-2,cn=users,OU=Test,O=TASKANA +cn: ksc-users +objectclass: groupofuniquenames +objectclass: top + +dn: cn=ksc-teamleads,cn=groups,OU=Test,O=TASKANA +uniquemember: uid=teamlead-1,cn=users,OU=Test,O=TASKANA +uniquemember: uid=teamlead-2,cn=users,OU=Test,O=TASKANA +cn: ksc-teamleads +objectclass: groupofuniquenames +objectclass: top + +dn: cn=business-admins,cn=groups,OU=Test,O=TASKANA +uniquemember: uid=teamlead-1,cn=users,OU=Test,O=TASKANA +uniquemember: uid=teamlead-2,cn=users,OU=Test,O=TASKANA +uniquemember: uid=businessadmin,cn=users,OU=Test,O=TASKANA +cn: business-admins +objectclass: groupofuniquenames +objectclass: top + +dn: cn=monitor-users,cn=groups,OU=Test,O=TASKANA +uniquemember: uid=teamlead-1,cn=users,OU=Test,O=TASKANA +uniquemember: uid=teamlead-2,cn=users,OU=Test,O=TASKANA +cn: monitor-users +objectclass: groupofuniquenames +objectclass: top + +###################### +# Organizational Units +###################### +dn: cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +cn: Organisationseinheit KSC +uniquemember: cn=Organisationseinheit KSC 1,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uniquemember: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +objectclass: groupofuniquenames +objectclass: top + +dn: cn=Organisationseinheit KSC 1,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uniquemember: uid=teamlead-1,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-1-1,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-1-2,cn=users,OU=Test,O=TASKANA +cn: Organisationseinheit KSC 1 +objectclass: groupofuniquenames +objectclass: top + +dn: cn=Organisationseinheit KSC 2,cn=Organisationseinheit KSC,cn=organisation,OU=Test,O=TASKANA +uniquemember: uid=teamlead-2,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-2-1,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-2-2,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-2-3,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-2-4,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-2-5,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-2-6,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-2-7,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-2-8,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-2-9,cn=users,OU=Test,O=TASKANA +uniquemember: uid=user-2-10,cn=users,OU=Test,O=TASKANA +cn: Organisationseinheit KSC 2 +objectclass: groupofuniquenames +objectclass: top + +dn: cn=Organisationseinheit B,cn=organisation,OU=Test,O=TASKANA +cn: Organisationseinheit B +objectclass: groupofuniquenames +objectclass: top