From ad52218e0504230416739bcf1dcf95091e97115d Mon Sep 17 00:00:00 2001 From: Brian Koehmstedt <1261658+bkoehm@users.noreply.github.com> Date: Fri, 20 Sep 2024 09:34:46 -0700 Subject: [PATCH 1/3] Grails 7 --- build.gradle | 53 ++-- functional-test-app/build.gradle | 98 +++--- functional-test-app/gradle.properties | 4 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 61624 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 +- functional-test-app/gradlew | 292 ++++++++++------- functional-test-app/gradlew.bat | 56 ++-- gradle.properties | 7 +- gradle/artifactoryPublish.gradle | 13 - gradle/grailsPublish.gradle | 23 -- gradle/groovy-config.gradle | 8 + gradle/testVerbose.gradle | 3 - gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 61624 bytes gradle/wrapper/gradle-wrapper.properties | 6 +- gradlew | 300 +++++++++++------- gradlew.bat | 66 ++-- .../build.gradle | 97 +++--- .../gradle.properties | 4 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 61624 bytes .../gradle/wrapper/gradle-wrapper.properties | 3 +- .../gradlew | 292 ++++++++++------- .../gradlew.bat | 56 ++-- .../retrieve-db-roles/build.gradle | 99 +++--- .../retrieve-db-roles/gradle.properties | 4 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 61624 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 +- .../retrieve-db-roles/gradlew | 292 ++++++++++------- .../retrieve-db-roles/gradlew.bat | 56 ++-- .../retrieve-group-rules/build.gradle | 97 +++--- .../retrieve-group-rules/gradle.properties | 4 +- .../gradle/wrapper/gradle-wrapper.jar | Bin 55190 -> 61624 bytes .../gradle/wrapper/gradle-wrapper.properties | 3 +- .../retrieve-group-rules/gradlew | 292 ++++++++++------- .../retrieve-group-rules/gradlew.bat | 56 ++-- .../SpringSecurityLdapGrailsPlugin.groovy | 2 +- version.txt | 2 +- 36 files changed, 1306 insertions(+), 994 deletions(-) mode change 100755 => 100644 functional-test-app/gradlew.bat delete mode 100644 gradle/artifactoryPublish.gradle delete mode 100644 gradle/grailsPublish.gradle create mode 100644 gradle/groovy-config.gradle mode change 100755 => 100644 misc-functional-test-app/custom_user_details_context_mapper/gradlew.bat mode change 100755 => 100644 misc-functional-test-app/retrieve-db-roles/gradlew.bat mode change 100755 => 100644 misc-functional-test-app/retrieve-group-rules/gradlew.bat diff --git a/build.gradle b/build.gradle index 801e3ab..6316f90 100644 --- a/build.gradle +++ b/build.gradle @@ -11,29 +11,32 @@ buildscript { } dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" - classpath "org.asciidoctor:asciidoctor-gradle-jvm:3.1.0" - classpath "org.jfrog.buildinfo:build-info-extractor-gradle:latest.release" + classpath "org.asciidoctor:asciidoctor-gradle-jvm:4.0.3" } } plugins { - id 'io.spring.dependency-management' version '0.5.2.RELEASE' - id 'com.jfrog.bintray' version '1.2' + id 'io.spring.dependency-management' version '1.1.6' + id 'maven-publish' + id 'groovy' + id 'java-library' } version = file('version.txt').text.trim() group 'org.grails.plugins' apply plugin: 'org.grails.grails-plugin' -apply plugin: 'org.grails.grails-plugin-publish' apply plugin: "org.asciidoctor.jvm.convert" -apply plugin: "com.jfrog.artifactory" ext { grailsVersion = project.grailsVersion } -sourceCompatibility = targetCompatibility = 1.8 +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} repositories { mavenLocal() @@ -41,22 +44,19 @@ repositories { maven { url 'https://repo.grails.org/grails/core' } } -dependencyManagement { - imports { - mavenBom "org.grails:grails-bom:$grailsVersion" - } - applyMavenExclusions false +configurations { + all { + exclude group: 'javax.servlet' + } } dependencies { - provided 'javax.servlet:javax.servlet-api:3.1.0' - provided 'org.grails:grails-dependencies' - provided 'org.grails:grails-web-boot' + runtimeOnly 'org.grails:grails-web-boot' - compile 'org.grails.plugins:spring-security-core:4.0.0' + api 'org.grails.plugins:spring-security-core:7.0.0-SNAPSHOT' - compile "org.springframework.security:spring-security-ldap:$springSecurityVersion", { + api "org.springframework.security:spring-security-ldap:$springSecurityVersion", { ['apacheds-core', 'apacheds-core-entry', 'apacheds-protocol-ldap', 'apacheds-protocol-shared', 'apacheds-server-jndi', 'commons-logging', 'fest-assert', 'jcl-over-slf4j', 'junit', 'ldapsdk', 'logback-classic', 'mockito-core', 'shared-ldap', 'slf4j-api', 'spring-beans', @@ -64,7 +64,7 @@ dependencies { 'spring-test', 'spring-tx'].each { exclude module: it } } - compile "org.springframework.ldap:spring-ldap-core:$springLdapCoreVersion", { + api "org.springframework.ldap:spring-ldap-core:$springLdapCoreVersion", { ['commons-lang', 'gsbase', 'junit', 'mockito-core', 'powermock-api-mockito', 'powermock-api-support', 'powermock-core', 'powermock-module-junit4', 'powermock-module-junit4-common', 'powermock-reflect', 'slf4j-log4j12', 'spring-beans', @@ -72,12 +72,11 @@ dependencies { } console 'org.grails:grails-console' - testCompile "org.grails:grails-web-testing-support" + testImplementation "org.grails:grails-web-testing-support" } -apply from: "${rootProject.projectDir}/gradle/grailsPublish.gradle" -apply from: "${rootProject.projectDir}/gradle/artifactoryPublish.gradle" apply from: "${rootProject.projectDir}/gradle/testVerbose.gradle" +apply from: "${rootProject.projectDir}/gradle/groovy-config.gradle" asciidoctor { sources { @@ -102,3 +101,15 @@ task docs(dependsOn: asciidoctor) { } } + +publishing { + publications { + maven(MavenPublication) { + groupId = project.group + artifactId = project.name + version = project.version + + from components.java + } + } +} diff --git a/functional-test-app/build.gradle b/functional-test-app/build.gradle index 23cdd12..a7e8fe4 100644 --- a/functional-test-app/build.gradle +++ b/functional-test-app/build.gradle @@ -5,8 +5,8 @@ buildscript { dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" classpath "gradle.plugin.com.github.erdi.webdriver-binaries:webdriver-binaries-gradle-plugin:2.2" - classpath "org.grails.plugins:hibernate5:7.0.0" - classpath "com.bertramlabs.plugins:asset-pipeline-gradle:3.0.10" + classpath "org.grails.plugins:hibernate5:9.0.0-SNAPSHOT" + classpath "com.bertramlabs.plugins:asset-pipeline-gradle:5.0.1" } } @@ -26,73 +26,53 @@ repositories { maven { url "https://repo.grails.org/grails/core" } } -configurations { - developmentOnly - runtimeClasspath { - extendsFrom developmentOnly - } -} - dependencies { developmentOnly("org.springframework.boot:spring-boot-devtools") - compile "org.springframework.boot:spring-boot-starter-logging" - compile "org.springframework.boot:spring-boot-autoconfigure" - compile "org.grails:grails-core" - compile "org.springframework.boot:spring-boot-starter-actuator" - compile "org.springframework.boot:spring-boot-starter-tomcat" - compile "org.grails:grails-web-boot" - compile "org.grails:grails-logging" - compile "org.grails:grails-plugin-rest" - compile "org.grails:grails-plugin-databinding" - compile "org.grails:grails-plugin-i18n" - compile "org.grails:grails-plugin-services" - compile "org.grails:grails-plugin-url-mappings" - compile "org.grails:grails-plugin-interceptors" - compile "org.grails.plugins:cache" - compile "org.grails.plugins:async" - compile "org.grails.plugins:scaffolding" - compile "org.grails.plugins:events" - compile "org.grails.plugins:hibernate5" - compile "org.hibernate:hibernate-core:5.4.0.Final" - compile "org.grails.plugins:gsp" + implementation "org.springframework.boot:spring-boot-starter-logging" + implementation "org.springframework.boot:spring-boot-autoconfigure" + implementation "org.grails:grails-core" + implementation "org.springframework.boot:spring-boot-starter-actuator" + implementation "org.springframework.boot:spring-boot-starter-tomcat" + implementation "org.grails:grails-web-boot" + implementation "org.grails:grails-logging" + implementation "org.grails:grails-plugin-rest" + implementation "org.grails:grails-plugin-databinding" + implementation "org.grails:grails-plugin-i18n" + implementation "org.grails:grails-plugin-services" + implementation "org.grails:grails-plugin-url-mappings" + implementation "org.grails:grails-plugin-interceptors" + implementation "org.grails.plugins:cache" + implementation "org.grails.plugins:async" + implementation "org.grails.plugins:scaffolding" + implementation "org.grails.plugins:events" + implementation "org.grails.plugins:hibernate5" + implementation "org.hibernate:hibernate-core-jakarta:5.6.15.Final" + implementation "org.grails.plugins:gsp" - compile "org.grails.plugins:spring-security-ldap:${file('../version.txt').text.trim()}" - compile 'org.grails.plugins:ldap-server:1.0.0' + implementation "org.grails.plugins:spring-security-ldap:${file('../version.txt').text.trim()}" + implementation 'org.grails.plugins:ldap-server:1.0.0' compileOnly "io.micronaut:micronaut-inject-groovy" console "org.grails:grails-console" profile "org.grails.profiles:web" - runtime "org.glassfish.web:el-impl:2.1.2-b03" - runtime "com.h2database:h2" - runtime "org.apache.tomcat:tomcat-jdbc" - runtime "javax.xml.bind:jaxb-api:2.3.0" - runtime "com.bertramlabs.plugins:asset-pipeline-grails:3.0.10" - testCompile "org.grails:grails-gorm-testing-support" - testCompile "org.mockito:mockito-core" - testCompile "org.grails:grails-web-testing-support" - testCompile "org.grails.plugins:geb" - testCompile "org.seleniumhq.selenium:selenium-remote-driver:3.141.59" - testCompile "org.seleniumhq.selenium:selenium-api:3.141.59" - testCompile "org.seleniumhq.selenium:selenium-support:3.141.59" - testRuntime "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59" - testRuntime "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59" - testCompile "org.seleniumhq.selenium:htmlunit-driver:2.35.1" - testRuntime 'net.sourceforge.htmlunit:htmlunit:2.35.0' + runtimeOnly "com.h2database:h2" + runtimeOnly "org.apache.tomcat:tomcat-jdbc" + runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:5.0.1" + testImplementation "org.grails:grails-gorm-testing-support" + testImplementation "org.mockito:mockito-core" + testImplementation "org.grails:grails-web-testing-support" + testImplementation "org.grails.plugins:geb" + testImplementation "org.seleniumhq.selenium:selenium-remote-driver:3.141.59" + testImplementation "org.seleniumhq.selenium:selenium-api:3.141.59" + testImplementation "org.seleniumhq.selenium:selenium-support:3.141.59" + testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59" + testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59" + testImplementation "org.seleniumhq.selenium:htmlunit-driver:2.35.1" + testRuntimeOnly 'net.sourceforge.htmlunit:htmlunit:2.35.0' } apply from: "../gradle/testVerbose.gradle" - -bootRun { - ignoreExitValue true - jvmArgs( - '-Dspring.output.ansi.enabled=always', - '-noverify', - '-XX:TieredStopAtLevel=1', - '-Xmx1024m') - sourceResources sourceSets.main - String springProfilesActive = 'spring.profiles.active' - systemProperty springProfilesActive, System.getProperty(springProfilesActive) -} +apply from: "../gradle/groovy-config.gradle" tasks.withType(GroovyCompile) { configure(groovyOptions) { diff --git a/functional-test-app/gradle.properties b/functional-test-app/gradle.properties index 04c3976..a4eb242 100644 --- a/functional-test-app/gradle.properties +++ b/functional-test-app/gradle.properties @@ -1,5 +1,5 @@ -grailsVersion=4.0.2 -gorm.version=7.0.3.RELEASE +grailsVersion=7.0.0-SNAPSHOT +gorm.version=9.0.0-SNAPSHOT org.gradle.daemon=true org.gradle.parallel=true org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx1024M diff --git a/functional-test-app/gradle/wrapper/gradle-wrapper.jar b/functional-test-app/gradle/wrapper/gradle-wrapper.jar index 87b738cbd051603d91cc39de6cb000dd98fe6b02..afba109285af78dbd2a1d187e33ac4f87c76e392 100644 GIT binary patch delta 41425 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 Cu|Gxt diff --git a/functional-test-app/gradle/wrapper/gradle-wrapper.properties b/functional-test-app/gradle/wrapper/gradle-wrapper.properties index 79401d7..c44c230 100644 --- a/functional-test-app/gradle/wrapper/gradle-wrapper.properties +++ b/functional-test-app/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Mar 24 06:46:52 CET 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/functional-test-app/gradlew b/functional-test-app/gradlew index af6708f..65dcd68 100755 --- a/functional-test-app/gradlew +++ b/functional-test-app/gradlew @@ -1,78 +1,129 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed 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 +# +# https://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. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/functional-test-app/gradlew.bat b/functional-test-app/gradlew.bat old mode 100755 new mode 100644 index 0f8d593..6689b85 --- a/functional-test-app/gradlew.bat +++ b/functional-test-app/gradlew.bat @@ -1,4 +1,20 @@ -@if "%DEBUG%" == "" @echo off +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -9,19 +25,23 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,38 +65,26 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/gradle.properties b/gradle.properties index 6377603..c478d39 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,7 @@ -grailsVersion=4.0.2 -springSecurityVersion=5.1.6.RELEASE -springLdapCoreVersion=2.3.2.RELEASE +grailsVersion=7.0.0-SNAPSHOT +springSecurityVersion=6.3.3 +springLdapCoreVersion=3.2.6 +groovyVersion=4.0.22 websiteUrl=http://grails-plugins.github.io/grails-spring-security-ldap/ issueTrackerUrl=https://github.com/grails-plugins/grails-spring-security-ldap/issues vcsUrl=https://github.com/grails-plugins/grails-spring-security-ldap diff --git a/gradle/artifactoryPublish.gradle b/gradle/artifactoryPublish.gradle deleted file mode 100644 index 3503228..0000000 --- a/gradle/artifactoryPublish.gradle +++ /dev/null @@ -1,13 +0,0 @@ -artifactory { - contextUrl = 'http://oss.jfrog.org' - publish { - repository { - repoKey = 'oss-snapshot-local' - username = System.getenv("BINTRAY_USER") ?: project.hasProperty("bintrayUser") ? project.bintrayUser : '' - password = System.getenv("BINTRAY_KEY") ?: project.hasProperty("bintrayKey") ? project.bintrayKey : '' - } - defaults { - publications('maven') - } - } -} \ No newline at end of file diff --git a/gradle/grailsPublish.gradle b/gradle/grailsPublish.gradle deleted file mode 100644 index 39358e4..0000000 --- a/gradle/grailsPublish.gradle +++ /dev/null @@ -1,23 +0,0 @@ -def setIfNotSet = { String name, value -> - if (!project.ext.has(name)) { - project.ext[name] = value - } -} -setIfNotSet 'issueTrackerUrl', project.vcsUrl + '/issues' -setIfNotSet 'websiteUrl', project.vcsUrl - -grailsPublish { - user = System.getenv("BINTRAY_USER") ?: project.hasProperty("bintrayUser") ? project.bintrayUser : '' - key = System.getenv("BINTRAY_KEY") ?: project.hasProperty("bintrayKey") ? project.bintrayKey : '' - userOrg = project.hasProperty('userOrg') ? project.userOrg : 'grails' - repo = project.hasProperty('repo') ? project.repo : 'plugins' - websiteUrl = project.hasProperty('websiteUrl') ? project.websiteUrl : "http://grails.org/plugin/$project.name" - license { - name = project.hasProperty('license') ? [project.license] : ['Apache-2.0'] - } - issueTrackerUrl = project.hasProperty('issueTrackerUrl') ? project.issueTrackerUrl : "https://github.com/grails-plugins/$project.name/issues" - vcsUrl = project.hasProperty('vcsUrl') ? project.vcsUrl : "https://github.com/grails-plugins/$project.name" - title = 'Grails spring-security-core plugin' - desc = '' - developers = [burtbeckwith:"Burt Beckwith"] -} \ No newline at end of file diff --git a/gradle/groovy-config.gradle b/gradle/groovy-config.gradle new file mode 100644 index 0000000..31809c5 --- /dev/null +++ b/gradle/groovy-config.gradle @@ -0,0 +1,8 @@ +configurations.configureEach { + resolutionStrategy.eachDependency { DependencyResolveDetails details -> + if ((details.requested.group == 'org.codehaus.groovy' || details.requested.group == 'org.apache.groovy') && details.requested.name != 'groovy-bom') { + details.useTarget(group: 'org.apache.groovy', name: details.requested.name, version: groovyVersion) + details.because "The dependency coordinates are changed in Apache Groovy 4, plus ensure version" + } + } +} diff --git a/gradle/testVerbose.gradle b/gradle/testVerbose.gradle index b5bc873..a3a2bcf 100644 --- a/gradle/testVerbose.gradle +++ b/gradle/testVerbose.gradle @@ -4,8 +4,5 @@ tasks.withType(Test) { events 'passed', 'failed'//, 'standardOut', 'standardError' } - reports.html.enabled = !System.getenv("TRAVIS") - reports.junitXml.enabled = !System.getenv("TRAVIS") - beforeTest { descriptor -> logger.quiet " -- $descriptor" } } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 941144813d241db74e1bf25b6804c679fbe7f0a3..afba109285af78dbd2a1d187e33ac4f87c76e392 100644 GIT binary patch literal 61624 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�Zy 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 literal 53636 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 DXC5Z7 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7b62f0f..c44c230 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Mar 20 15:35:02 CET 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 9d82f78..65dcd68 100755 --- a/gradlew +++ b/gradlew @@ -1,74 +1,129 @@ -#!/usr/bin/env bash +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed 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 +# +# https://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. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum -warn ( ) { +warn () { echo "$*" -} +} >&2 -die ( ) { +die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -77,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -85,76 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index aec9973..6689b85 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,4 +1,20 @@ -@if "%DEBUG%" == "" @echo off +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -8,20 +24,24 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,44 +65,26 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/misc-functional-test-app/custom_user_details_context_mapper/build.gradle b/misc-functional-test-app/custom_user_details_context_mapper/build.gradle index a824dd8..3d4e8e0 100644 --- a/misc-functional-test-app/custom_user_details_context_mapper/build.gradle +++ b/misc-functional-test-app/custom_user_details_context_mapper/build.gradle @@ -5,8 +5,8 @@ buildscript { dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" classpath "gradle.plugin.com.github.erdi.webdriver-binaries:webdriver-binaries-gradle-plugin:2.2" - classpath "org.grails.plugins:hibernate5:7.0.0" - classpath "com.bertramlabs.plugins:asset-pipeline-gradle:3.0.10" + classpath "org.grails.plugins:hibernate5:9.0.0-SNAPSHOT" + classpath "com.bertramlabs.plugins:asset-pipeline-gradle:5.0.1" } } @@ -26,69 +26,50 @@ repositories { maven { url "https://repo.grails.org/grails/core" } } -configurations { - developmentOnly - runtimeClasspath { - extendsFrom developmentOnly - } -} - dependencies { developmentOnly("org.springframework.boot:spring-boot-devtools") - compile "org.springframework.boot:spring-boot-starter-logging" - compile "org.springframework.boot:spring-boot-autoconfigure" - compile "org.grails:grails-core" - compile "org.springframework.boot:spring-boot-starter-actuator" - compile "org.springframework.boot:spring-boot-starter-tomcat" - compile "org.grails:grails-web-boot" - compile "org.grails:grails-logging" - compile "org.grails:grails-plugin-rest" - compile "org.grails:grails-plugin-databinding" - compile "org.grails:grails-plugin-i18n" - compile "org.grails:grails-plugin-services" - compile "org.grails:grails-plugin-url-mappings" - compile "org.grails:grails-plugin-interceptors" - compile "org.grails.plugins:cache" - compile "org.grails.plugins:async" - compile "org.grails.plugins:scaffolding" - compile "org.grails.plugins:events" - compile "org.grails.plugins:hibernate5" - compile "org.hibernate:hibernate-core:5.4.0.Final" - compile "org.grails.plugins:gsp" + implementation "org.springframework.boot:spring-boot-starter-logging" + implementation "org.springframework.boot:spring-boot-autoconfigure" + implementation "org.grails:grails-core" + implementation "org.springframework.boot:spring-boot-starter-actuator" + implementation "org.springframework.boot:spring-boot-starter-tomcat" + implementation "org.grails:grails-web-boot" + implementation "org.grails:grails-logging" + implementation "org.grails:grails-plugin-rest" + implementation "org.grails:grails-plugin-databinding" + implementation "org.grails:grails-plugin-i18n" + implementation "org.grails:grails-plugin-services" + implementation "org.grails:grails-plugin-url-mappings" + implementation "org.grails:grails-plugin-interceptors" + implementation "org.grails.plugins:cache" + implementation "org.grails.plugins:async" + implementation "org.grails.plugins:scaffolding" + implementation "org.grails.plugins:events" + implementation "org.grails.plugins:hibernate5" + implementation "org.hibernate:hibernate-core-jakarta:5.6.15.Final" + implementation "org.grails.plugins:gsp" compileOnly "io.micronaut:micronaut-inject-groovy" console "org.grails:grails-console" profile "org.grails.profiles:web" - runtime "org.glassfish.web:el-impl:2.1.2-b03" - runtime "com.h2database:h2" - runtime "org.apache.tomcat:tomcat-jdbc" - runtime "javax.xml.bind:jaxb-api:2.3.0" - runtime "com.bertramlabs.plugins:asset-pipeline-grails:3.0.10" - testCompile "org.grails:grails-gorm-testing-support" - testCompile "org.mockito:mockito-core" - testCompile "org.grails:grails-web-testing-support" - compile "org.grails.plugins:spring-security-ldap:${file('../../version.txt').text.trim()}" - testCompile "org.grails.plugins:geb" - testCompile "org.seleniumhq.selenium:selenium-remote-driver:3.141.59" - testCompile "org.seleniumhq.selenium:selenium-api:3.141.59" - testCompile "org.seleniumhq.selenium:selenium-support:3.141.59" - testRuntime "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59" - testRuntime "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59" - testCompile "org.seleniumhq.selenium:htmlunit-driver:2.35.1" - testRuntime 'net.sourceforge.htmlunit:htmlunit:2.35.0' + runtimeOnly "com.h2database:h2" + runtimeOnly "org.apache.tomcat:tomcat-jdbc" + runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:5.0.1" + testImplementation "org.grails:grails-gorm-testing-support" + testImplementation "org.mockito:mockito-core" + testImplementation "org.grails:grails-web-testing-support" + implementation "org.grails.plugins:spring-security-ldap:${file('../../version.txt').text.trim()}" + testImplementation "org.grails.plugins:geb" + testImplementation "org.seleniumhq.selenium:selenium-remote-driver:3.141.59" + testImplementation "org.seleniumhq.selenium:selenium-api:3.141.59" + testImplementation "org.seleniumhq.selenium:selenium-support:3.141.59" + testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59" + testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59" + testImplementation "org.seleniumhq.selenium:htmlunit-driver:2.35.1" + testRuntimeOnly 'net.sourceforge.htmlunit:htmlunit:2.35.0' } -apply from: "../../gradle/testVerbose.gradle" -bootRun { - ignoreExitValue true - jvmArgs( - '-Dspring.output.ansi.enabled=always', - '-noverify', - '-XX:TieredStopAtLevel=1', - '-Xmx1024m') - sourceResources sourceSets.main - String springProfilesActive = 'spring.profiles.active' - systemProperty springProfilesActive, System.getProperty(springProfilesActive) -} +apply from: "../../gradle/testVerbose.gradle" +apply from: "../../gradle/groovy-config.gradle" tasks.withType(GroovyCompile) { configure(groovyOptions) { diff --git a/misc-functional-test-app/custom_user_details_context_mapper/gradle.properties b/misc-functional-test-app/custom_user_details_context_mapper/gradle.properties index 04c3976..a4eb242 100644 --- a/misc-functional-test-app/custom_user_details_context_mapper/gradle.properties +++ b/misc-functional-test-app/custom_user_details_context_mapper/gradle.properties @@ -1,5 +1,5 @@ -grailsVersion=4.0.2 -gorm.version=7.0.3.RELEASE +grailsVersion=7.0.0-SNAPSHOT +gorm.version=9.0.0-SNAPSHOT org.gradle.daemon=true org.gradle.parallel=true org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx1024M diff --git a/misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.jar b/misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.jar index 87b738cbd051603d91cc39de6cb000dd98fe6b02..afba109285af78dbd2a1d187e33ac4f87c76e392 100644 GIT binary patch delta 41425 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 Cu|Gxt diff --git a/misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.properties b/misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.properties index 558870d..c44c230 100644 --- a/misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.properties +++ b/misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/misc-functional-test-app/custom_user_details_context_mapper/gradlew b/misc-functional-test-app/custom_user_details_context_mapper/gradlew index af6708f..65dcd68 100755 --- a/misc-functional-test-app/custom_user_details_context_mapper/gradlew +++ b/misc-functional-test-app/custom_user_details_context_mapper/gradlew @@ -1,78 +1,129 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed 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 +# +# https://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. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/misc-functional-test-app/custom_user_details_context_mapper/gradlew.bat b/misc-functional-test-app/custom_user_details_context_mapper/gradlew.bat old mode 100755 new mode 100644 index 0f8d593..6689b85 --- a/misc-functional-test-app/custom_user_details_context_mapper/gradlew.bat +++ b/misc-functional-test-app/custom_user_details_context_mapper/gradlew.bat @@ -1,4 +1,20 @@ -@if "%DEBUG%" == "" @echo off +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -9,19 +25,23 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,38 +65,26 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/misc-functional-test-app/retrieve-db-roles/build.gradle b/misc-functional-test-app/retrieve-db-roles/build.gradle index 146215f..0e9353a 100644 --- a/misc-functional-test-app/retrieve-db-roles/build.gradle +++ b/misc-functional-test-app/retrieve-db-roles/build.gradle @@ -5,8 +5,8 @@ buildscript { dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" classpath "gradle.plugin.com.github.erdi.webdriver-binaries:webdriver-binaries-gradle-plugin:2.2" - classpath "org.grails.plugins:hibernate5:7.0.0" - classpath "com.bertramlabs.plugins:asset-pipeline-gradle:3.0.10" + classpath "org.grails.plugins:hibernate5:9.0.0-SNAPSHOT" + classpath "com.bertramlabs.plugins:asset-pipeline-gradle:5.0.1" } } @@ -26,70 +26,51 @@ repositories { maven { url "https://repo.grails.org/grails/core" } } -configurations { - developmentOnly - runtimeClasspath { - extendsFrom developmentOnly - } -} - dependencies { developmentOnly("org.springframework.boot:spring-boot-devtools") - compile "org.springframework.boot:spring-boot-starter-logging" - compile "org.springframework.boot:spring-boot-autoconfigure" - compile "org.grails:grails-core" - compile "org.springframework.boot:spring-boot-starter-actuator" - compile "org.springframework.boot:spring-boot-starter-tomcat" - compile "org.grails:grails-web-boot" - compile "org.grails:grails-logging" - compile "org.grails:grails-plugin-rest" - compile "org.grails:grails-plugin-databinding" - compile "org.grails.plugins:spring-security-ldap:${file('../../version.txt').text.trim()}" - compile "org.grails:grails-plugin-i18n" - compile "org.grails:grails-plugin-services" - compile "org.grails:grails-plugin-url-mappings" - compile "org.grails:grails-plugin-interceptors" - compile "org.grails.plugins:cache" - compile "org.grails.plugins:async" - compile "org.grails.plugins:scaffolding" - compile "org.grails.plugins:events" - compile "org.grails.plugins:hibernate5" - compile "org.hibernate:hibernate-core:5.4.0.Final" - compile "org.grails.plugins:gsp" + implementation "org.springframework.boot:spring-boot-starter-logging" + implementation "org.springframework.boot:spring-boot-autoconfigure" + implementation "org.grails:grails-core" + implementation "org.springframework.boot:spring-boot-starter-actuator" + implementation "org.springframework.boot:spring-boot-starter-tomcat" + implementation "org.grails:grails-web-boot" + implementation "org.grails:grails-logging" + implementation "org.grails:grails-plugin-rest" + implementation "org.grails:grails-plugin-databinding" + implementation "org.grails.plugins:spring-security-ldap:${file('../../version.txt').text.trim()}" + implementation "org.grails:grails-plugin-i18n" + implementation "org.grails:grails-plugin-services" + implementation "org.grails:grails-plugin-url-mappings" + implementation "org.grails:grails-plugin-interceptors" + implementation "org.grails.plugins:cache" + implementation "org.grails.plugins:async" + implementation "org.grails.plugins:scaffolding" + implementation "org.grails.plugins:events" + implementation "org.grails.plugins:hibernate5" + implementation "org.hibernate:hibernate-core-jakarta:5.6.15.Final" + implementation "org.grails.plugins:gsp" compileOnly "io.micronaut:micronaut-inject-groovy" console "org.grails:grails-console" profile "org.grails.profiles:web" - runtime "org.glassfish.web:el-impl:2.1.2-b03" - runtime "com.h2database:h2" - runtime "org.apache.tomcat:tomcat-jdbc" - runtime "javax.xml.bind:jaxb-api:2.3.0" - runtime "com.bertramlabs.plugins:asset-pipeline-grails:3.0.10" - testCompile "org.grails:grails-gorm-testing-support" - testCompile "org.mockito:mockito-core" - testCompile "org.grails:grails-web-testing-support" - compile "org.grails.plugins:spring-security-ldap:${file('../../version.txt').text.trim()}" - testCompile "org.grails.plugins:geb" - testCompile "org.seleniumhq.selenium:selenium-remote-driver:3.141.59" - testCompile "org.seleniumhq.selenium:selenium-api:3.141.59" - testCompile "org.seleniumhq.selenium:selenium-support:3.141.59" - testRuntime "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59" - testRuntime "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59" - testCompile "org.seleniumhq.selenium:htmlunit-driver:2.35.1" - testRuntime 'net.sourceforge.htmlunit:htmlunit:2.35.0' + runtimeOnly "com.h2database:h2" + runtimeOnly "org.apache.tomcat:tomcat-jdbc" + runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:5.0.1" + testImplementation "org.grails:grails-gorm-testing-support" + testImplementation "org.mockito:mockito-core" + testImplementation "org.grails:grails-web-testing-support" + implementation "org.grails.plugins:spring-security-ldap:${file('../../version.txt').text.trim()}" + testImplementation "org.grails.plugins:geb" + testImplementation "org.seleniumhq.selenium:selenium-remote-driver:3.141.59" + testImplementation "org.seleniumhq.selenium:selenium-api:3.141.59" + testImplementation "org.seleniumhq.selenium:selenium-support:3.141.59" + testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59" + testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59" + testImplementation "org.seleniumhq.selenium:htmlunit-driver:2.35.1" + testRuntimeOnly 'net.sourceforge.htmlunit:htmlunit:2.35.0' } -apply from: "../../gradle/testVerbose.gradle" -bootRun { - ignoreExitValue true - jvmArgs( - '-Dspring.output.ansi.enabled=always', - '-noverify', - '-XX:TieredStopAtLevel=1', - '-Xmx1024m') - sourceResources sourceSets.main - String springProfilesActive = 'spring.profiles.active' - systemProperty springProfilesActive, System.getProperty(springProfilesActive) -} +apply from: "../../gradle/testVerbose.gradle" +apply from: "../../gradle/groovy-config.gradle" tasks.withType(GroovyCompile) { configure(groovyOptions) { diff --git a/misc-functional-test-app/retrieve-db-roles/gradle.properties b/misc-functional-test-app/retrieve-db-roles/gradle.properties index 04c3976..a4eb242 100644 --- a/misc-functional-test-app/retrieve-db-roles/gradle.properties +++ b/misc-functional-test-app/retrieve-db-roles/gradle.properties @@ -1,5 +1,5 @@ -grailsVersion=4.0.2 -gorm.version=7.0.3.RELEASE +grailsVersion=7.0.0-SNAPSHOT +gorm.version=9.0.0-SNAPSHOT org.gradle.daemon=true org.gradle.parallel=true org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx1024M diff --git a/misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.jar b/misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.jar index 87b738cbd051603d91cc39de6cb000dd98fe6b02..afba109285af78dbd2a1d187e33ac4f87c76e392 100644 GIT binary patch delta 41425 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 Cu|Gxt diff --git a/misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.properties b/misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.properties index 0d44a8d..c44c230 100644 --- a/misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.properties +++ b/misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Mar 20 16:10:45 CET 2020 -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/misc-functional-test-app/retrieve-db-roles/gradlew b/misc-functional-test-app/retrieve-db-roles/gradlew index af6708f..65dcd68 100755 --- a/misc-functional-test-app/retrieve-db-roles/gradlew +++ b/misc-functional-test-app/retrieve-db-roles/gradlew @@ -1,78 +1,129 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed 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 +# +# https://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. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/misc-functional-test-app/retrieve-db-roles/gradlew.bat b/misc-functional-test-app/retrieve-db-roles/gradlew.bat old mode 100755 new mode 100644 index 0f8d593..6689b85 --- a/misc-functional-test-app/retrieve-db-roles/gradlew.bat +++ b/misc-functional-test-app/retrieve-db-roles/gradlew.bat @@ -1,4 +1,20 @@ -@if "%DEBUG%" == "" @echo off +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -9,19 +25,23 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,38 +65,26 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/misc-functional-test-app/retrieve-group-rules/build.gradle b/misc-functional-test-app/retrieve-group-rules/build.gradle index 960052d..96fce55 100644 --- a/misc-functional-test-app/retrieve-group-rules/build.gradle +++ b/misc-functional-test-app/retrieve-group-rules/build.gradle @@ -5,8 +5,8 @@ buildscript { dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" classpath "gradle.plugin.com.github.erdi.webdriver-binaries:webdriver-binaries-gradle-plugin:2.2" - classpath "org.grails.plugins:hibernate5:7.0.0" - classpath "com.bertramlabs.plugins:asset-pipeline-gradle:3.0.10" + classpath "org.grails.plugins:hibernate5:9.0.0-SNAPSHOT" + classpath "com.bertramlabs.plugins:asset-pipeline-gradle:5.0.1" } } @@ -26,69 +26,50 @@ repositories { maven { url "https://repo.grails.org/grails/core" } } -configurations { - developmentOnly - runtimeClasspath { - extendsFrom developmentOnly - } -} - dependencies { developmentOnly("org.springframework.boot:spring-boot-devtools") - compile "org.springframework.boot:spring-boot-starter-logging" - compile "org.springframework.boot:spring-boot-autoconfigure" - compile "org.grails:grails-core" - compile "org.springframework.boot:spring-boot-starter-actuator" - compile "org.springframework.boot:spring-boot-starter-tomcat" - compile "org.grails:grails-web-boot" - compile "org.grails:grails-logging" - compile "org.grails:grails-plugin-rest" - compile "org.grails:grails-plugin-databinding" - compile "org.grails:grails-plugin-i18n" - compile "org.grails:grails-plugin-services" - compile "org.grails:grails-plugin-url-mappings" - compile "org.grails:grails-plugin-interceptors" - compile "org.grails.plugins:cache" - compile "org.grails.plugins:async" - compile "org.grails.plugins:scaffolding" - compile "org.grails.plugins:events" - compile "org.grails.plugins:hibernate5" - compile "org.hibernate:hibernate-core:5.4.0.Final" - compile "org.grails.plugins:gsp" + implementation "org.springframework.boot:spring-boot-starter-logging" + implementation "org.springframework.boot:spring-boot-autoconfigure" + implementation "org.grails:grails-core" + implementation "org.springframework.boot:spring-boot-starter-actuator" + implementation "org.springframework.boot:spring-boot-starter-tomcat" + implementation "org.grails:grails-web-boot" + implementation "org.grails:grails-logging" + implementation "org.grails:grails-plugin-rest" + implementation "org.grails:grails-plugin-databinding" + implementation "org.grails:grails-plugin-i18n" + implementation "org.grails:grails-plugin-services" + implementation "org.grails:grails-plugin-url-mappings" + implementation "org.grails:grails-plugin-interceptors" + implementation "org.grails.plugins:cache" + implementation "org.grails.plugins:async" + implementation "org.grails.plugins:scaffolding" + implementation "org.grails.plugins:events" + implementation "org.grails.plugins:hibernate5" + implementation "org.hibernate:hibernate-core-jakarta:5.6.15.Final" + implementation "org.grails.plugins:gsp" compileOnly "io.micronaut:micronaut-inject-groovy" console "org.grails:grails-console" profile "org.grails.profiles:web" - runtime "org.glassfish.web:el-impl:2.1.2-b03" - runtime "com.h2database:h2" - runtime "org.apache.tomcat:tomcat-jdbc" - runtime "javax.xml.bind:jaxb-api:2.3.0" - runtime "com.bertramlabs.plugins:asset-pipeline-grails:3.0.10" - testCompile "org.grails:grails-gorm-testing-support" - testCompile "org.mockito:mockito-core" - testCompile "org.grails:grails-web-testing-support" - compile "org.grails.plugins:spring-security-ldap:${file('../../version.txt').text.trim()}" - testCompile "org.grails.plugins:geb" - testCompile "org.seleniumhq.selenium:selenium-remote-driver:3.141.59" - testCompile "org.seleniumhq.selenium:selenium-api:3.141.59" - testCompile "org.seleniumhq.selenium:selenium-support:3.141.59" - testRuntime "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59" - testRuntime "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59" - testCompile "org.seleniumhq.selenium:htmlunit-driver:2.35.1" - testRuntime 'net.sourceforge.htmlunit:htmlunit:2.35.0' + runtimeOnly "com.h2database:h2" + runtimeOnly "org.apache.tomcat:tomcat-jdbc" + runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:3.0.10" + testImplementation "org.grails:grails-gorm-testing-support" + testImplementation "org.mockito:mockito-core" + testImplementation "org.grails:grails-web-testing-support" + implementation "org.grails.plugins:spring-security-ldap:${file('../../version.txt').text.trim()}" + testImplementation "org.grails.plugins:geb" + testImplementation "org.seleniumhq.selenium:selenium-remote-driver:3.141.59" + testImplementation "org.seleniumhq.selenium:selenium-api:3.141.59" + testImplementation "org.seleniumhq.selenium:selenium-support:3.141.59" + testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59" + testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59" + testImplementation "org.seleniumhq.selenium:htmlunit-driver:2.35.1" + testRuntimeOnly 'net.sourceforge.htmlunit:htmlunit:2.35.0' } -apply from: "../../gradle/testVerbose.gradle" -bootRun { - ignoreExitValue true - jvmArgs( - '-Dspring.output.ansi.enabled=always', - '-noverify', - '-XX:TieredStopAtLevel=1', - '-Xmx1024m') - sourceResources sourceSets.main - String springProfilesActive = 'spring.profiles.active' - systemProperty springProfilesActive, System.getProperty(springProfilesActive) -} +apply from: "../../gradle/testVerbose.gradle" +apply from: "../../gradle/groovy-config.gradle" tasks.withType(GroovyCompile) { configure(groovyOptions) { diff --git a/misc-functional-test-app/retrieve-group-rules/gradle.properties b/misc-functional-test-app/retrieve-group-rules/gradle.properties index 04c3976..a4eb242 100644 --- a/misc-functional-test-app/retrieve-group-rules/gradle.properties +++ b/misc-functional-test-app/retrieve-group-rules/gradle.properties @@ -1,5 +1,5 @@ -grailsVersion=4.0.2 -gorm.version=7.0.3.RELEASE +grailsVersion=7.0.0-SNAPSHOT +gorm.version=9.0.0-SNAPSHOT org.gradle.daemon=true org.gradle.parallel=true org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx1024M diff --git a/misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.jar b/misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.jar index 87b738cbd051603d91cc39de6cb000dd98fe6b02..afba109285af78dbd2a1d187e33ac4f87c76e392 100644 GIT binary patch delta 41425 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 Cu|Gxt diff --git a/misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.properties b/misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.properties index 558870d..c44c230 100644 --- a/misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.properties +++ b/misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/misc-functional-test-app/retrieve-group-rules/gradlew b/misc-functional-test-app/retrieve-group-rules/gradlew index af6708f..65dcd68 100755 --- a/misc-functional-test-app/retrieve-group-rules/gradlew +++ b/misc-functional-test-app/retrieve-group-rules/gradlew @@ -1,78 +1,129 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed 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 +# +# https://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. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m"' +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" fi +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + exec "$JAVACMD" "$@" diff --git a/misc-functional-test-app/retrieve-group-rules/gradlew.bat b/misc-functional-test-app/retrieve-group-rules/gradlew.bat old mode 100755 new mode 100644 index 0f8d593..6689b85 --- a/misc-functional-test-app/retrieve-group-rules/gradlew.bat +++ b/misc-functional-test-app/retrieve-group-rules/gradlew.bat @@ -1,4 +1,20 @@ -@if "%DEBUG%" == "" @echo off +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -9,19 +25,23 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -35,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -45,38 +65,26 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/src/main/groovy/grails/plugin/springsecurity/ldap/SpringSecurityLdapGrailsPlugin.groovy b/src/main/groovy/grails/plugin/springsecurity/ldap/SpringSecurityLdapGrailsPlugin.groovy index c4a1423..2e10221 100644 --- a/src/main/groovy/grails/plugin/springsecurity/ldap/SpringSecurityLdapGrailsPlugin.groovy +++ b/src/main/groovy/grails/plugin/springsecurity/ldap/SpringSecurityLdapGrailsPlugin.groovy @@ -38,7 +38,7 @@ import grails.plugins.Plugin class SpringSecurityLdapGrailsPlugin extends Plugin { - String grailsVersion = '4.0.0 > *' + String grailsVersion = '7.0.0 > *' List loadAfter = ['springSecurityCore'] String author = 'Burt Beckwith' String authorEmail = 'burt@burtbeckwith.com' diff --git a/version.txt b/version.txt index ebe886e..71d2eb1 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -4.0.0.M1 +5.0.0-SNAPSHOT From 6e4c50536dda5d0f86c262c6860bf21fba7239e2 Mon Sep 17 00:00:00 2001 From: Brian Koehmstedt <1261658+bkoehm@users.noreply.github.com> Date: Tue, 12 Nov 2024 13:41:57 -0800 Subject: [PATCH 2/3] Grails 7: further work, including getting tests working --- README.md | 5 +- build.gradle | 18 +- functional-test-app/build.gradle | 44 ++- functional-test-app/gradle.properties | 5 - .../gradle/wrapper/gradle-wrapper.jar | Bin 61624 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - functional-test-app/gradlew | 244 --------------- functional-test-app/gradlew.bat | 92 ------ .../grails-app/conf/application.yml | 194 ++++-------- .../grails-app/conf/logback.groovy | 37 --- .../grails-app/conf/logback.xml | 19 ++ .../grails-app/conf/spring/resources.groovy | 17 +- .../grails-app/domain/com/test/User.groovy | 4 + .../domain/com/test/UserRole.groovy | 2 +- functional-test-app/settings.gradle | 0 .../resources/GebConfig.groovy | 31 +- .../server/TransientGrailsLdapServer.groovy | 280 ++++++++++++++++++ gradle.properties | 8 +- gradle/groovy-config.gradle | 8 - gradle/testVerbose.gradle | 3 +- gradle/wrapper/gradle-wrapper.jar | Bin 61624 -> 43583 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 34 ++- gradlew.bat | 22 +- grails-app/conf/logback.groovy | 31 -- grails-app/conf/logback.xml | 19 ++ .../build.gradle | 40 ++- .../gradle.properties | 5 - .../gradle/wrapper/gradle-wrapper.jar | Bin 61624 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../gradlew | 244 --------------- .../gradlew.bat | 92 ------ .../grails-app/conf/application.yml | 195 ++++-------- .../grails-app/conf/logback.groovy | 37 --- .../grails-app/conf/logback.xml | 19 ++ .../grails-app/domain/com/test/User.groovy | 4 + .../domain/com/test/UserRole.groovy | 2 +- .../grails-wrapper.jar | Bin 4821 -> 0 bytes .../grailsw | 152 ---------- .../grailsw.bat | 89 ------ .../settings.gradle | 0 .../resources/GebConfig.groovy | 31 +- .../retrieve-db-roles/build.gradle | 41 ++- .../retrieve-db-roles/gradle.properties | 5 - .../gradle/wrapper/gradle-wrapper.jar | Bin 61624 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../retrieve-db-roles/gradlew | 244 --------------- .../retrieve-db-roles/gradlew.bat | 92 ------ .../grails-app/conf/application.yml | 195 ++++-------- .../grails-app/conf/logback.groovy | 37 --- .../grails-app/conf/logback.xml | 19 ++ .../grails-app/domain/com/test/User.groovy | 4 + .../domain/com/test/UserRole.groovy | 2 +- .../retrieve-db-roles/grails-wrapper.jar | Bin 4821 -> 0 bytes .../retrieve-db-roles/grailsw | 152 ---------- .../retrieve-db-roles/grailsw.bat | 89 ------ .../retrieve-db-roles/settings.gradle | 0 .../resources/GebConfig.groovy | 31 +- .../retrieve-group-rules/build.gradle | 43 ++- .../retrieve-group-rules/gradle.properties | 5 - .../gradle/wrapper/gradle-wrapper.jar | Bin 61624 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../retrieve-group-rules/gradlew | 244 --------------- .../retrieve-group-rules/gradlew.bat | 92 ------ .../grails-app/conf/application.yml | 195 ++++-------- .../grails-app/conf/logback.groovy | 37 --- .../grails-app/conf/logback.xml | 19 ++ .../grails-app/domain/com/test/User.groovy | 4 + .../domain/com/test/UserRole.groovy | 2 +- .../retrieve-group-rules/grails-wrapper.jar | Bin 4821 -> 0 bytes .../retrieve-group-rules/grailsw | 152 ---------- .../retrieve-group-rules/grailsw.bat | 89 ------ .../retrieve-group-rules/settings.gradle | 0 .../resources/GebConfig.groovy | 31 +- release.sh | 9 - settings.gradle | 10 + travis-build.sh | 126 -------- version.txt | 1 - 78 files changed, 854 insertions(+), 3170 deletions(-) delete mode 100644 functional-test-app/gradle.properties delete mode 100644 functional-test-app/gradle/wrapper/gradle-wrapper.jar delete mode 100644 functional-test-app/gradle/wrapper/gradle-wrapper.properties delete mode 100755 functional-test-app/gradlew delete mode 100644 functional-test-app/gradlew.bat delete mode 100644 functional-test-app/grails-app/conf/logback.groovy create mode 100644 functional-test-app/grails-app/conf/logback.xml delete mode 100644 functional-test-app/settings.gradle create mode 100644 functional-test-app/src/main/groovy/grails/ldap/server/TransientGrailsLdapServer.groovy delete mode 100644 gradle/groovy-config.gradle delete mode 100644 grails-app/conf/logback.groovy create mode 100644 grails-app/conf/logback.xml delete mode 100644 misc-functional-test-app/custom_user_details_context_mapper/gradle.properties delete mode 100644 misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.jar delete mode 100644 misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.properties delete mode 100755 misc-functional-test-app/custom_user_details_context_mapper/gradlew delete mode 100644 misc-functional-test-app/custom_user_details_context_mapper/gradlew.bat delete mode 100644 misc-functional-test-app/custom_user_details_context_mapper/grails-app/conf/logback.groovy create mode 100644 misc-functional-test-app/custom_user_details_context_mapper/grails-app/conf/logback.xml delete mode 100644 misc-functional-test-app/custom_user_details_context_mapper/grails-wrapper.jar delete mode 100755 misc-functional-test-app/custom_user_details_context_mapper/grailsw delete mode 100755 misc-functional-test-app/custom_user_details_context_mapper/grailsw.bat delete mode 100644 misc-functional-test-app/custom_user_details_context_mapper/settings.gradle delete mode 100644 misc-functional-test-app/retrieve-db-roles/gradle.properties delete mode 100644 misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.jar delete mode 100644 misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.properties delete mode 100755 misc-functional-test-app/retrieve-db-roles/gradlew delete mode 100644 misc-functional-test-app/retrieve-db-roles/gradlew.bat delete mode 100644 misc-functional-test-app/retrieve-db-roles/grails-app/conf/logback.groovy create mode 100644 misc-functional-test-app/retrieve-db-roles/grails-app/conf/logback.xml delete mode 100644 misc-functional-test-app/retrieve-db-roles/grails-wrapper.jar delete mode 100755 misc-functional-test-app/retrieve-db-roles/grailsw delete mode 100755 misc-functional-test-app/retrieve-db-roles/grailsw.bat delete mode 100644 misc-functional-test-app/retrieve-db-roles/settings.gradle delete mode 100644 misc-functional-test-app/retrieve-group-rules/gradle.properties delete mode 100644 misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.jar delete mode 100644 misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.properties delete mode 100755 misc-functional-test-app/retrieve-group-rules/gradlew delete mode 100644 misc-functional-test-app/retrieve-group-rules/gradlew.bat delete mode 100644 misc-functional-test-app/retrieve-group-rules/grails-app/conf/logback.groovy create mode 100644 misc-functional-test-app/retrieve-group-rules/grails-app/conf/logback.xml delete mode 100644 misc-functional-test-app/retrieve-group-rules/grails-wrapper.jar delete mode 100755 misc-functional-test-app/retrieve-group-rules/grailsw delete mode 100755 misc-functional-test-app/retrieve-group-rules/grailsw.bat delete mode 100644 misc-functional-test-app/retrieve-group-rules/settings.gradle delete mode 100755 release.sh delete mode 100755 travis-build.sh delete mode 100644 version.txt diff --git a/README.md b/README.md index b02ff95..276f3a7 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -[![Build Status](https://travis-ci.org/grails-plugins/grails-spring-security-ldap.svg)](https://travis-ci.org/grails-plugins/grails-spring-security-ldap) - Grails Spring Security LDAP Plugin ================================== @@ -19,5 +17,6 @@ See [documentation](https://grails-plugins.github.io/grails-spring-security-ldap Branches: -- `master` Grails 4 compatible versions. +- '5.0.x' Grails 7 compatible versions. +- '4.0.x' Grails 4 compatible versions. - `3.x` Grails 3 compatible versions. \ No newline at end of file diff --git a/build.gradle b/build.gradle index 6316f90..44d571a 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ plugins { id 'java-library' } -version = file('version.txt').text.trim() +version = projectVersion group 'org.grails.plugins' apply plugin: 'org.grails.grails-plugin' @@ -44,17 +44,22 @@ repositories { maven { url 'https://repo.grails.org/grails/core' } } -configurations { - all { - exclude group: 'javax.servlet' +subprojects { + configurations { + all { + resolutionStrategy.eachDependency { DependencyResolveDetails details-> + if (details.requested.group == 'org.seleniumhq.selenium') { + details.useVersion(seleniumVersion) + } + } + } } } dependencies { - runtimeOnly 'org.grails:grails-web-boot' - api 'org.grails.plugins:spring-security-core:7.0.0-SNAPSHOT' + api "org.grails.plugins:spring-security-core:$grailsSpringSecurityCoreVersion" api "org.springframework.security:spring-security-ldap:$springSecurityVersion", { ['apacheds-core', 'apacheds-core-entry', 'apacheds-protocol-ldap', 'apacheds-protocol-shared', @@ -76,7 +81,6 @@ dependencies { } apply from: "${rootProject.projectDir}/gradle/testVerbose.gradle" -apply from: "${rootProject.projectDir}/gradle/groovy-config.gradle" asciidoctor { sources { diff --git a/functional-test-app/build.gradle b/functional-test-app/build.gradle index a7e8fe4..aa4e405 100644 --- a/functional-test-app/build.gradle +++ b/functional-test-app/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" - classpath "gradle.plugin.com.github.erdi.webdriver-binaries:webdriver-binaries-gradle-plugin:2.2" + classpath "com.github.erdi:webdriver-binaries-gradle-plugin:3.2" classpath "org.grails.plugins:hibernate5:9.0.0-SNAPSHOT" classpath "com.bertramlabs.plugins:asset-pipeline-gradle:5.0.1" } @@ -49,10 +49,11 @@ dependencies { implementation "org.hibernate:hibernate-core-jakarta:5.6.15.Final" implementation "org.grails.plugins:gsp" - implementation "org.grails.plugins:spring-security-ldap:${file('../version.txt').text.trim()}" - implementation 'org.grails.plugins:ldap-server:1.0.0' + implementation project(":") + + implementation 'org.apache.directory.server:apacheds-core:1.5.4' + implementation 'org.apache.directory.server:apacheds-protocol-ldap:1.5.4' - compileOnly "io.micronaut:micronaut-inject-groovy" console "org.grails:grails-console" profile "org.grails.profiles:web" runtimeOnly "com.h2database:h2" @@ -62,17 +63,19 @@ dependencies { testImplementation "org.mockito:mockito-core" testImplementation "org.grails:grails-web-testing-support" testImplementation "org.grails.plugins:geb" - testImplementation "org.seleniumhq.selenium:selenium-remote-driver:3.141.59" - testImplementation "org.seleniumhq.selenium:selenium-api:3.141.59" - testImplementation "org.seleniumhq.selenium:selenium-support:3.141.59" - testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59" - testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59" - testImplementation "org.seleniumhq.selenium:htmlunit-driver:2.35.1" - testRuntimeOnly 'net.sourceforge.htmlunit:htmlunit:2.35.0' + testImplementation "org.gebish:geb-core:7.0" + testImplementation "org.gebish:geb-spock:7.0" + testImplementation "org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion" + testImplementation "org.seleniumhq.selenium:selenium-api:$seleniumVersion" + testImplementation "org.seleniumhq.selenium:selenium-support:$seleniumVersion" + testImplementation "org.spockframework:spock-core" + testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion" + testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion" + testRuntimeOnly "org.seleniumhq.selenium:selenium-safari-driver:$seleniumVersion" + runtimeOnly "org.fusesource.jansi:jansi:1.18" } apply from: "../gradle/testVerbose.gradle" -apply from: "../gradle/groovy-config.gradle" tasks.withType(GroovyCompile) { configure(groovyOptions) { @@ -80,22 +83,17 @@ tasks.withType(GroovyCompile) { } } -webdriverBinaries { - chromedriver { - version = '80.0.3987.16' - } - geckodriver { - version = '0.26.0' - } -} tasks.withType(Test) { systemProperty "geb.env", System.getProperty('geb.env') systemProperty "geb.build.reportsDir", reporting.file("geb/integrationTest") - systemProperty "webdriver.chrome.driver", System.getProperty('webdriver.chrome.driver') - systemProperty "webdriver.gecko.driver", System.getProperty('webdriver.gecko.driver') + if (System.getenv('CHROMEWEBDRIVER')) { + systemProperty 'webdriver.chrome.driver', "${System.getenv('CHROMEWEBDRIVER')}/chromedriver" + } + if (System.getenv('GECKOWEBDRIVER')) { + systemProperty 'webdriver.gecko.driver', "${System.getenv('GECKOWEBDRIVER')}/geckodriver" + } } - assets { minifyJs = true minifyCss = true diff --git a/functional-test-app/gradle.properties b/functional-test-app/gradle.properties deleted file mode 100644 index a4eb242..0000000 --- a/functional-test-app/gradle.properties +++ /dev/null @@ -1,5 +0,0 @@ -grailsVersion=7.0.0-SNAPSHOT -gorm.version=9.0.0-SNAPSHOT -org.gradle.daemon=true -org.gradle.parallel=true -org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx1024M diff --git a/functional-test-app/gradle/wrapper/gradle-wrapper.jar b/functional-test-app/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index afba109285af78dbd2a1d187e33ac4f87c76e392..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61624 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�Zy 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 diff --git a/functional-test-app/gradle/wrapper/gradle-wrapper.properties b/functional-test-app/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index c44c230..0000000 --- a/functional-test-app/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip -networkTimeout=10000 -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/functional-test-app/gradlew b/functional-test-app/gradlew deleted file mode 100755 index 65dcd68..0000000 --- a/functional-test-app/gradlew +++ /dev/null @@ -1,244 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed 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 -# -# https://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. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/functional-test-app/gradlew.bat b/functional-test-app/gradlew.bat deleted file mode 100644 index 6689b85..0000000 --- a/functional-test-app/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/functional-test-app/grails-app/conf/application.yml b/functional-test-app/grails-app/conf/application.yml index d2ae800..a7482e2 100644 --- a/functional-test-app/grails-app/conf/application.yml +++ b/functional-test-app/grails-app/conf/application.yml @@ -2,145 +2,73 @@ server: port: 8238 --- -grails: - profile: web - codegen: - defaultPackage: com.test - gorm: - reactor: - # Whether to translate GORM events into Reactor events - # Disabled by default for performance reasons - events: false info: - app: - name: '@info.app.name@' - version: '@info.app.version@' - grailsVersion: '@info.app.grailsVersion@' -spring: - jmx: - unique-names: true - main: - banner-mode: "off" - groovy: - template: - check-template-location: false - devtools: - restart: - additional-exclude: - - '*.gsp' - - '**/*.gsp' - - '*.gson' - - '**/*.gson' - - 'logback.groovy' - - '*.properties' -management: - endpoints: - enabled-by-default: false - ---- -grails: - mime: - disable: - accept: - header: - userAgents: - - Gecko - - WebKit - - Presto - - Trident - types: - all: '*/*' - atom: application/atom+xml - css: text/css - csv: text/csv - form: application/x-www-form-urlencoded - html: - - text/html - - application/xhtml+xml - js: text/javascript - json: - - application/json - - text/json - multipartForm: multipart/form-data - pdf: application/pdf - rss: application/rss+xml - text: text/plain - hal: - - application/hal+json - - application/hal+xml - xml: - - text/xml - - application/xml - urlmapping: - cache: - maxsize: 1000 - controllers: - defaultScope: singleton - converters: - encoding: UTF-8 - views: - default: - codec: html - gsp: - encoding: UTF-8 - htmlcodec: xml - codecs: - expression: html - scriptlet: html - taglib: none - staticparts: none -management: - endpoints: - jmx: - unique-names: true - ---- -hibernate: - cache: - queries: false - use_second_level_cache: false - use_query_cache: false + app: + name: '@info.app.name@' + version: '@info.app.version@' + grailsVersion: '@info.app.grailsVersion@' dataSource: - pooled: true - jmxExport: true - driverClassName: org.h2.Driver - username: sa - password: '' + url: jdbc:h2:mem:devDb;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE + driverClassName: org.h2.Driver + username: sa + password: '' + pooled: true + jmxExport: true + dbCreate: update +hibernate: + cache: + queries: false + use_second_level_cache: false + use_query_cache: false +grails: + views: + default: + codec: html + gsp: + encoding: UTF-8 + htmlcodec: xml + codecs: + expression: html + scriptlet: html + taglib: none + staticparts: none + mime: + disable: + accept: + header: + userAgents: + - Gecko + - WebKit + - Presto + - Trident + types: + all: '*/*' + atom: application/atom+xml + css: text/css + csv: text/csv + form: application/x-www-form-urlencoded + html: + - text/html + - application/xhtml+xml + js: text/javascript + json: + - application/json + - text/json + multipartForm: multipart/form-data + pdf: application/pdf + rss: application/rss+xml + text: text/plain + hal: + - application/hal+json + - application/hal+xml + xml: + - text/xml + - application/xml -environments: - development: - dataSource: - dbCreate: create-drop - url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE - test: - dataSource: - dbCreate: update - url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE - production: - dataSource: - dbCreate: none - url: jdbc:h2:./prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE - properties: - jmxEnabled: true - initialSize: 5 - maxActive: 50 - minIdle: 5 - maxIdle: 25 - maxWait: 10000 - maxAge: 600000 - timeBetweenEvictionRunsMillis: 5000 - minEvictableIdleTimeMillis: 60000 - validationQuery: SELECT 1 - validationQueryTimeout: 3 - validationInterval: 15000 - testOnBorrow: true - testWhileIdle: true - testOnReturn: false - jdbcInterceptors: ConnectionState - defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED --- ldapServers: d1: + baseWorkDir: 'build' base: 'dc=d1,dc=example,dc=com' port: 10389 indexed: diff --git a/functional-test-app/grails-app/conf/logback.groovy b/functional-test-app/grails-app/conf/logback.groovy deleted file mode 100644 index b835215..0000000 --- a/functional-test-app/grails-app/conf/logback.groovy +++ /dev/null @@ -1,37 +0,0 @@ -import grails.util.BuildSettings -import grails.util.Environment -import org.springframework.boot.logging.logback.ColorConverter -import org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter - -import java.nio.charset.StandardCharsets - -conversionRule 'clr', ColorConverter -conversionRule 'wex', WhitespaceThrowableProxyConverter - -// See http://logback.qos.ch/manual/groovy.html for details on configuration -appender('STDOUT', ConsoleAppender) { - encoder(PatternLayoutEncoder) { - charset = StandardCharsets.UTF_8 - - pattern = - '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} ' + // Date - '%clr(%5p) ' + // Log level - '%clr(---){faint} %clr([%15.15t]){faint} ' + // Thread - '%clr(%-40.40logger{39}){cyan} %clr(:){faint} ' + // Logger - '%m%n%wex' // Message - } -} - -def targetDir = BuildSettings.TARGET_DIR -if (Environment.isDevelopmentMode() && targetDir != null) { - appender("FULL_STACKTRACE", FileAppender) { - file = "${targetDir}/stacktrace.log" - append = true - encoder(PatternLayoutEncoder) { - charset = StandardCharsets.UTF_8 - pattern = "%level %logger - %msg%n" - } - } - logger("StackTrace", ERROR, ['FULL_STACKTRACE'], false) -} -root(ERROR, ['STDOUT']) diff --git a/functional-test-app/grails-app/conf/logback.xml b/functional-test-app/grails-app/conf/logback.xml new file mode 100644 index 0000000..70b1484 --- /dev/null +++ b/functional-test-app/grails-app/conf/logback.xml @@ -0,0 +1,19 @@ + + + + + + + + true + + UTF-8 + %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex + + + + + + + + diff --git a/functional-test-app/grails-app/conf/spring/resources.groovy b/functional-test-app/grails-app/conf/spring/resources.groovy index fa95006..ceb9f4d 100644 --- a/functional-test-app/grails-app/conf/spring/resources.groovy +++ b/functional-test-app/grails-app/conf/spring/resources.groovy @@ -1,3 +1,18 @@ -// Place your Spring DSL code here +import grails.ldap.server.TransientGrailsLdapServer + beans = { + d1LdapServer(TransientGrailsLdapServer) { + baseWorkDir = "build" + def conf = application.config.ldapServers.d1 + baseWorkDir = conf.baseWorkDir ?: "build" + if (conf.base) { + base = conf.base + } + if (conf.port) { + port = conf.port + } + if (conf.indexed) { + indexed = conf.indexed + } + } } diff --git a/functional-test-app/grails-app/domain/com/test/User.groovy b/functional-test-app/grails-app/domain/com/test/User.groovy index 4ba3494..3d599d7 100644 --- a/functional-test-app/grails-app/domain/com/test/User.groovy +++ b/functional-test-app/grails-app/domain/com/test/User.groovy @@ -44,6 +44,10 @@ class User implements Serializable { static transients = ['springSecurityService'] + static mapping = { + table name: '`user`' + } + static constraints = { username blank: false, unique: true password blank: false diff --git a/functional-test-app/grails-app/domain/com/test/UserRole.groovy b/functional-test-app/grails-app/domain/com/test/UserRole.groovy index 6a8dc15..8eb14b0 100644 --- a/functional-test-app/grails-app/domain/com/test/UserRole.groovy +++ b/functional-test-app/grails-app/domain/com/test/UserRole.groovy @@ -3,7 +3,7 @@ package com.test import grails.gorm.DetachedCriteria import groovy.transform.ToString -import org.apache.commons.lang.builder.HashCodeBuilder +import org.apache.commons.lang3.builder.HashCodeBuilder @ToString(cache=true, includeNames=true, includePackage=false) class UserRole implements Serializable { diff --git a/functional-test-app/settings.gradle b/functional-test-app/settings.gradle deleted file mode 100644 index e69de29..0000000 diff --git a/functional-test-app/src/integration-test/resources/GebConfig.groovy b/functional-test-app/src/integration-test/resources/GebConfig.groovy index 16d38b9..adb480e 100644 --- a/functional-test-app/src/integration-test/resources/GebConfig.groovy +++ b/functional-test-app/src/integration-test/resources/GebConfig.groovy @@ -1,24 +1,16 @@ import org.openqa.selenium.chrome.ChromeDriver import org.openqa.selenium.chrome.ChromeOptions import org.openqa.selenium.firefox.FirefoxDriver -import org.openqa.selenium.htmlunit.HtmlUnitDriver - -// default is to use htmlunit -driver = { - HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver() - htmlUnitDriver.javascriptEnabled = true - htmlUnitDriver -} +import org.openqa.selenium.firefox.FirefoxOptions +import org.openqa.selenium.safari.SafariDriver environments { - htmlUnit { - driver = { - HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver() - htmlUnitDriver.javascriptEnabled = true - htmlUnitDriver - } + // You need to configure in Safari -> Develop -> Allowed Remote Automation + safari { + driver = { new SafariDriver() } } + // run via “./gradlew -Dgeb.env=chrome iT” chrome { driver = { new ChromeDriver() } @@ -33,8 +25,17 @@ environments { } } + // run via “./gradlew -Dgeb.env=firefoxHeadless iT” + firefoxHeadless { + driver = { + FirefoxOptions o = new FirefoxOptions() + o.addArguments('-headless') + new FirefoxDriver(o) + } + } + // run via “./gradlew -Dgeb.env=firefox iT” firefox { driver = { new FirefoxDriver() } } -} +} \ No newline at end of file diff --git a/functional-test-app/src/main/groovy/grails/ldap/server/TransientGrailsLdapServer.groovy b/functional-test-app/src/main/groovy/grails/ldap/server/TransientGrailsLdapServer.groovy new file mode 100644 index 0000000..d4078f2 --- /dev/null +++ b/functional-test-app/src/main/groovy/grails/ldap/server/TransientGrailsLdapServer.groovy @@ -0,0 +1,280 @@ +package grails.ldap.server + +import grails.core.support.GrailsApplicationAware +import groovy.util.logging.Slf4j + +import org.apache.directory.server.core.DefaultDirectoryService +import org.apache.directory.server.ldap.LdapService +import org.apache.directory.server.protocol.shared.SocketAcceptor +import org.apache.directory.shared.ldap.name.LdapDN +import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmPartition +import org.apache.directory.server.core.partition.impl.btree.jdbm.JdbmIndex +import org.apache.directory.shared.ldap.ldif.LdifEntry +import org.apache.directory.shared.ldap.ldif.LdifReader +import org.apache.directory.shared.ldap.ldif.LdifUtils +import org.apache.directory.shared.ldap.exception.LdapNameNotFoundException + +import org.springframework.beans.factory.InitializingBean +import org.springframework.beans.factory.DisposableBean +import org.springframework.beans.factory.BeanNameAware + +import grails.core.GrailsApplication + +import groovy.text.SimpleTemplateEngine + +/** + * This class was originally authored by Luke Daley from + * https://github.com/ldaley/grails-ldap-server/blob/master/src/groovy/grails/ldap/server/TransientGrailsLdapServer.groovy + * and licensed under the Apache License, Version 2.0: + * https://github.com/ldaley/grails-ldap-server/blob/master/LICENSE + */ +@Slf4j +class TransientGrailsLdapServer implements InitializingBean, DisposableBean, BeanNameAware, GrailsApplicationAware { + + final static configOptions = ["port", "base", "indexed"] + final static ldifFileNameFilter = [accept: { File dir, String name -> name.endsWith(".ldif") }] as FilenameFilter + + String beanName + + String baseWorkDir + Integer port = 10389 + String base = "dc=grails,dc=org" + String[] indexed = ["objectClass", "ou", "uid"] + + GrailsApplication grailsApplication + DefaultDirectoryService directoryService + LdapService ldapService + + LdapDN baseDn + + File configDir + File dataDir + File fixturesDir + File schemaDir + + boolean running = false + boolean initialised = false + + private def getLdapServerName() { + return beanName - "LdapServer" + } + + void afterPropertiesSet() + { + if (!initialised) { + log.info("${beanName} config: " + configOptions.collect { "$it = ${this.properties[it]}" }.join(', ')) + + def baseConfigDirPath = (grailsApplication.warDeployed) ? grailsApplication.parentContext.getResource("WEB-INF/grails-app/ldap-servers").file.path : "grails-app/ldap-servers" + def baseConfigDir = new File(baseConfigDirPath) + configDir = new File(baseConfigDir, ldapServerName) + dataDir = new File(configDir, "data") + fixturesDir = new File(configDir, "fixtures") + schemaDir = new File(configDir, "schema") + baseDn = new LdapDN(base) + + start() + initialised = true + + addShutdownHook { + this.stop() + } + } + } + + void start() { + if (!running) { + log.info("${beanName} starting") + startDirectoryService() + + loadLdif(schemaDir) + loadLdif(dataDir) + + directoryService.changeLog.tag() + + startLdapService() + running = true + log.info("${beanName} starup complete") + } + } + + void stop() { + if (running) { + log.info("${beanName} stopping") + stopDirectoryService() + stopLdapService() + running = false + log.info("${beanName} stopped") + } + } + + void destroy() { + stop() + } + + void restart() { + stop() + start() + } + + void clean() { + if (running) { + log.info("${beanName} cleaning") + directoryService.revert() + directoryService.changeLog.tag() + } + } + + void loadFixture(String fixtureName) { + loadFixtures(fixtureName) + } + + void loadFixture(Map binding, String fixtureName) { + loadFixtures([fixtureName] as String[], binding) + } + + void loadFixture(String fixtureName, Map binding) { + loadFixtures([fixtureName] as String[], binding) + } + + void loadFixtures(String[] fixtureNames) { + loadFixtures(fixtureNames, [:]) + } + + void loadFixtures(Map binding, String[] fixtureNames) { + loadFixtures(fixtureNames, binding) + } + + void loadFixtures(String[] fixtureNames, Map binding) { + binding = binding ?: [:] + fixtureNames.each { fixtureName -> + def fixture = new File(fixturesDir, "${fixtureName}.ldif") + if (fixture.exists()) { + log.debug("${beanName}: loading fixture ${fixtureName}, binding = ${binding}") + def fixtureReader = new FileReader(fixture) + def engine = new SimpleTemplateEngine() + def ldif = engine.createTemplate(fixtureReader).make(binding).toString() + loadLdif(ldif) + } else { + throw new IllegalArgumentException("Cannot load fixture '${fixtureName} as it does not exist") + } + } + } + + void loadLdif(String ldif) { + log.debug("${beanName}: loading ldif '$ldif'") + consumeLdifReader(new LdifReader(new StringReader(ldif))) + } + + void loadLdif(File file) { + if (file.exists()) { + if (file.directory) { + log.debug("Loading ldif in dir: ${file}") + file.listFiles(ldifFileNameFilter).sort().each { + loadLdif(it) + } + } else { + log.debug("Loading ldif in file: ${file}") + consumeLdifReader(new LdifReader(file)) + } + } + } + + void loadLdif(ldif) { + loadLdif(ldif as String) + } + + boolean exists(String dn) { + directoryService.adminSession.exists(new LdapDN(dn as String)) + } + + Map getAt(String dn) { + try { + def entry = directoryService.adminSession.lookup(new LdapDN(dn)) + def entryMap = [:] + entry.attributeTypes.each { at -> + def attribute = entry.get(at) + if (at.singleValue) { + entryMap[attribute.id] = (attribute.isHR()) ? attribute.string : attribute.bytes + } else { + def values = [] + attribute.all.each { + values << it.get() + } + entryMap[attribute.id] = values + } + } + entryMap + } catch (LdapNameNotFoundException e) { + null + } + } + + private startDirectoryService() { + + directoryService = new DefaultDirectoryService() + directoryService.changeLog.enabled = true + def workingDir = getWorkDir() + if (workingDir.exists()) workingDir.deleteDir() + directoryService.workingDirectory = workingDir + + def partition = addPartition(baseDn.rdn.normValue, base) + addIndex(partition, *indexed) + + directoryService.startup() + createBase() + } + + private startLdapService() { + ldapService = new LdapService() + ldapService.socketAcceptor = new SocketAcceptor(null) + ldapService.directoryService = directoryService + ldapService.ipPort = port + + ldapService.start() + } + + private stopDirectoryService() { + directoryService.shutdown() + } + + private stopLdapService() { + ldapService.stop() + } + + private createBase() { + def entry = directoryService.newEntry(baseDn) + entry.add("objectClass", "top", "domain", "extensibleObject") + entry.add(baseDn.rdn.normType, baseDn.rdn.normValue) + directoryService.adminSession.add(entry) + } + + private addPartition(partitionId, partitionDn) { + def partition = new JdbmPartition() + partition.id = partitionId + partition.suffix = partitionDn + directoryService.addPartition(partition) + + partition + } + + private addIndex(partition, String[] attrs) { + partition.indexedAttributes = attrs.collect { new JdbmIndex(it) } as Set + } + + private consumeLdifReader(ldifReader) { + while (ldifReader.hasNext()) { + LdifEntry entry = ldifReader.next() + if ( entry.isChangeModify() ) { + directoryService.adminSession.modify(entry.dn, entry.modificationList) + } else { + def ldif = LdifUtils.convertToLdif(entry, Integer.MAX_VALUE) + directoryService.adminSession.add(directoryService.newEntry(ldif, entry.dn.toString())) + } + } + } + + private getWorkDir() { + def base = baseWorkDir ?: "." + new File(base, "ldap-servers/$ldapServerName") + } +} diff --git a/gradle.properties b/gradle.properties index c478d39..acbf8c3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,9 @@ +projectVersion=5.0.0-SNAPSHOT grailsVersion=7.0.0-SNAPSHOT -springSecurityVersion=6.3.3 -springLdapCoreVersion=3.2.6 -groovyVersion=4.0.22 +springSecurityVersion=6.3.4 +springLdapCoreVersion=3.2.7 +grailsSpringSecurityCoreVersion=7.0.0-SNAPSHOT +seleniumVersion=4.26.0 websiteUrl=http://grails-plugins.github.io/grails-spring-security-ldap/ issueTrackerUrl=https://github.com/grails-plugins/grails-spring-security-ldap/issues vcsUrl=https://github.com/grails-plugins/grails-spring-security-ldap diff --git a/gradle/groovy-config.gradle b/gradle/groovy-config.gradle deleted file mode 100644 index 31809c5..0000000 --- a/gradle/groovy-config.gradle +++ /dev/null @@ -1,8 +0,0 @@ -configurations.configureEach { - resolutionStrategy.eachDependency { DependencyResolveDetails details -> - if ((details.requested.group == 'org.codehaus.groovy' || details.requested.group == 'org.apache.groovy') && details.requested.name != 'groovy-bom') { - details.useTarget(group: 'org.apache.groovy', name: details.requested.name, version: groovyVersion) - details.because "The dependency coordinates are changed in Apache Groovy 4, plus ensure version" - } - } -} diff --git a/gradle/testVerbose.gradle b/gradle/testVerbose.gradle index a3a2bcf..771ebc7 100644 --- a/gradle/testVerbose.gradle +++ b/gradle/testVerbose.gradle @@ -1,7 +1,8 @@ tasks.withType(Test) { + useJUnitPlatform() testLogging { exceptionFormat = 'full' - events 'passed', 'failed'//, 'standardOut', 'standardError' + events 'passed', 'skipped', 'failed'//, 'standardOut', 'standardError' } beforeTest { descriptor -> logger.quiet " -- $descriptor" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index afba109285af78dbd2a1d187e33ac4f87c76e392..a4b76b9530d66f5e68d973ea569d8e19de379189 100644 GIT binary patch literal 43583 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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 GZ~q4|mN%#X literal 61624 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�Zy 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c44c230..94113f2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 65dcd68..f5feea6 100755 --- a/gradlew +++ b/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -55,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -83,10 +85,9 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,10 +134,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -144,7 +148,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +156,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -197,11 +201,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 6689b85..9b42019 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## @@ -43,11 +45,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/grails-app/conf/logback.groovy b/grails-app/conf/logback.groovy deleted file mode 100644 index 2fe97a8..0000000 --- a/grails-app/conf/logback.groovy +++ /dev/null @@ -1,31 +0,0 @@ -import grails.util.BuildSettings -import grails.util.Environment - -String defaultPattern = '%-65(%.-2level %date{HH:mm:ss.SSS} %logger{32}) - %message%n' - -appender('STDOUT', ConsoleAppender) { - encoder(PatternLayoutEncoder) { - pattern = defaultPattern - } -} - -// logger 'grails.plugin.springsecurity', TRACE -// logger 'org.springframework.security', DEBUG -// logger 'org.hibernate.SQL', DEBUG -// logger 'org.hibernate.type.descriptor.sql.BasicBinder', TRACE - -root ERROR, ['STDOUT'] - -File targetDir = BuildSettings.TARGET_DIR -if (Environment.developmentMode && targetDir) { - - appender('FULL_STACKTRACE', FileAppender) { - file = "$targetDir/stacktrace.log" - append = true - encoder(PatternLayoutEncoder) { - pattern = defaultPattern - } - } - - logger 'StackTrace', ERROR, ['FULL_STACKTRACE'], false -} diff --git a/grails-app/conf/logback.xml b/grails-app/conf/logback.xml new file mode 100644 index 0000000..70b1484 --- /dev/null +++ b/grails-app/conf/logback.xml @@ -0,0 +1,19 @@ + + + + + + + + true + + UTF-8 + %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex + + + + + + + + diff --git a/misc-functional-test-app/custom_user_details_context_mapper/build.gradle b/misc-functional-test-app/custom_user_details_context_mapper/build.gradle index 3d4e8e0..ca22291 100644 --- a/misc-functional-test-app/custom_user_details_context_mapper/build.gradle +++ b/misc-functional-test-app/custom_user_details_context_mapper/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" - classpath "gradle.plugin.com.github.erdi.webdriver-binaries:webdriver-binaries-gradle-plugin:2.2" + classpath "com.github.erdi:webdriver-binaries-gradle-plugin:3.2" classpath "org.grails.plugins:hibernate5:9.0.0-SNAPSHOT" classpath "com.bertramlabs.plugins:asset-pipeline-gradle:5.0.1" } @@ -48,7 +48,6 @@ dependencies { implementation "org.grails.plugins:hibernate5" implementation "org.hibernate:hibernate-core-jakarta:5.6.15.Final" implementation "org.grails.plugins:gsp" - compileOnly "io.micronaut:micronaut-inject-groovy" console "org.grails:grails-console" profile "org.grails.profiles:web" runtimeOnly "com.h2database:h2" @@ -57,19 +56,20 @@ dependencies { testImplementation "org.grails:grails-gorm-testing-support" testImplementation "org.mockito:mockito-core" testImplementation "org.grails:grails-web-testing-support" - implementation "org.grails.plugins:spring-security-ldap:${file('../../version.txt').text.trim()}" + implementation project(":") testImplementation "org.grails.plugins:geb" - testImplementation "org.seleniumhq.selenium:selenium-remote-driver:3.141.59" - testImplementation "org.seleniumhq.selenium:selenium-api:3.141.59" - testImplementation "org.seleniumhq.selenium:selenium-support:3.141.59" - testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59" - testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59" - testImplementation "org.seleniumhq.selenium:htmlunit-driver:2.35.1" - testRuntimeOnly 'net.sourceforge.htmlunit:htmlunit:2.35.0' + testImplementation "org.gebish:geb-core:7.0" + testImplementation "org.gebish:geb-spock:7.0" + testImplementation "org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion" + testImplementation "org.seleniumhq.selenium:selenium-api:$seleniumVersion" + testImplementation "org.seleniumhq.selenium:selenium-support:$seleniumVersion" + testImplementation "org.spockframework:spock-core" + testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion" + testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion" + testRuntimeOnly "org.seleniumhq.selenium:selenium-safari-driver:$seleniumVersion" } apply from: "../../gradle/testVerbose.gradle" -apply from: "../../gradle/groovy-config.gradle" tasks.withType(GroovyCompile) { configure(groovyOptions) { @@ -77,23 +77,17 @@ tasks.withType(GroovyCompile) { } } -webdriverBinaries { - chromedriver { - version = '80.0.3987.16' - } - geckodriver { - version = '0.26.0' - } -} - tasks.withType(Test) { systemProperty "geb.env", System.getProperty('geb.env') systemProperty "geb.build.reportsDir", reporting.file("geb/integrationTest") - systemProperty "webdriver.chrome.driver", System.getProperty('webdriver.chrome.driver') - systemProperty "webdriver.gecko.driver", System.getProperty('webdriver.gecko.driver') + if (System.getenv('CHROMEWEBDRIVER')) { + systemProperty 'webdriver.chrome.driver', "${System.getenv('CHROMEWEBDRIVER')}/chromedriver" + } + if (System.getenv('GECKOWEBDRIVER')) { + systemProperty 'webdriver.gecko.driver', "${System.getenv('GECKOWEBDRIVER')}/geckodriver" + } } - assets { minifyJs = true minifyCss = true diff --git a/misc-functional-test-app/custom_user_details_context_mapper/gradle.properties b/misc-functional-test-app/custom_user_details_context_mapper/gradle.properties deleted file mode 100644 index a4eb242..0000000 --- a/misc-functional-test-app/custom_user_details_context_mapper/gradle.properties +++ /dev/null @@ -1,5 +0,0 @@ -grailsVersion=7.0.0-SNAPSHOT -gorm.version=9.0.0-SNAPSHOT -org.gradle.daemon=true -org.gradle.parallel=true -org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx1024M diff --git a/misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.jar b/misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index afba109285af78dbd2a1d187e33ac4f87c76e392..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61624 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�Zy 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 diff --git a/misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.properties b/misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index c44c230..0000000 --- a/misc-functional-test-app/custom_user_details_context_mapper/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip -networkTimeout=10000 -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/misc-functional-test-app/custom_user_details_context_mapper/gradlew b/misc-functional-test-app/custom_user_details_context_mapper/gradlew deleted file mode 100755 index 65dcd68..0000000 --- a/misc-functional-test-app/custom_user_details_context_mapper/gradlew +++ /dev/null @@ -1,244 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed 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 -# -# https://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. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/misc-functional-test-app/custom_user_details_context_mapper/gradlew.bat b/misc-functional-test-app/custom_user_details_context_mapper/gradlew.bat deleted file mode 100644 index 6689b85..0000000 --- a/misc-functional-test-app/custom_user_details_context_mapper/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/misc-functional-test-app/custom_user_details_context_mapper/grails-app/conf/application.yml b/misc-functional-test-app/custom_user_details_context_mapper/grails-app/conf/application.yml index 0b8ccac..dc4b968 100644 --- a/misc-functional-test-app/custom_user_details_context_mapper/grails-app/conf/application.yml +++ b/misc-functional-test-app/custom_user_details_context_mapper/grails-app/conf/application.yml @@ -1,137 +1,62 @@ ---- -grails: - profile: web - codegen: - defaultPackage: com.test - gorm: - reactor: - # Whether to translate GORM events into Reactor events - # Disabled by default for performance reasons - events: false info: - app: - name: '@info.app.name@' - version: '@info.app.version@' - grailsVersion: '@info.app.grailsVersion@' -spring: - jmx: - unique-names: true - main: - banner-mode: "off" - groovy: - template: - check-template-location: false - devtools: - restart: - additional-exclude: - - '*.gsp' - - '**/*.gsp' - - '*.gson' - - '**/*.gson' - - 'logback.groovy' - - '*.properties' -management: - endpoints: - enabled-by-default: false - ---- -grails: - mime: - disable: - accept: - header: - userAgents: - - Gecko - - WebKit - - Presto - - Trident - types: - all: '*/*' - atom: application/atom+xml - css: text/css - csv: text/csv - form: application/x-www-form-urlencoded - html: - - text/html - - application/xhtml+xml - js: text/javascript - json: - - application/json - - text/json - multipartForm: multipart/form-data - pdf: application/pdf - rss: application/rss+xml - text: text/plain - hal: - - application/hal+json - - application/hal+xml - xml: - - text/xml - - application/xml - urlmapping: - cache: - maxsize: 1000 - controllers: - defaultScope: singleton - converters: - encoding: UTF-8 - views: - default: - codec: html - gsp: - encoding: UTF-8 - htmlcodec: xml - codecs: - expression: html - scriptlet: html - taglib: none - staticparts: none -management: - endpoints: - jmx: - unique-names: true - ---- -hibernate: - cache: - queries: false - use_second_level_cache: false - use_query_cache: false + app: + name: '@info.app.name@' + version: '@info.app.version@' + grailsVersion: '@info.app.grailsVersion@' dataSource: - pooled: true - jmxExport: true - driverClassName: org.h2.Driver - username: sa - password: '' - -environments: - development: - dataSource: - dbCreate: create-drop - url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE - test: - dataSource: - dbCreate: update - url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE - production: - dataSource: - dbCreate: none - url: jdbc:h2:./prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE - properties: - jmxEnabled: true - initialSize: 5 - maxActive: 50 - minIdle: 5 - maxIdle: 25 - maxWait: 10000 - maxAge: 600000 - timeBetweenEvictionRunsMillis: 5000 - minEvictableIdleTimeMillis: 60000 - validationQuery: SELECT 1 - validationQueryTimeout: 3 - validationInterval: 15000 - testOnBorrow: true - testWhileIdle: true - testOnReturn: false - jdbcInterceptors: ConnectionState - defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED + url: jdbc:h2:mem:devDb;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE + driverClassName: org.h2.Driver + username: sa + password: '' + pooled: true + jmxExport: true + dbCreate: update +hibernate: + cache: + queries: false + use_second_level_cache: false + use_query_cache: false +grails: + views: + default: + codec: html + gsp: + encoding: UTF-8 + htmlcodec: xml + codecs: + expression: html + scriptlet: html + taglib: none + staticparts: none + mime: + disable: + accept: + header: + userAgents: + - Gecko + - WebKit + - Presto + - Trident + types: + all: '*/*' + atom: application/atom+xml + css: text/css + csv: text/csv + form: application/x-www-form-urlencoded + html: + - text/html + - application/xhtml+xml + js: text/javascript + json: + - application/json + - text/json + multipartForm: multipart/form-data + pdf: application/pdf + rss: application/rss+xml + text: text/plain + hal: + - application/hal+json + - application/hal+xml + xml: + - text/xml + - application/xml diff --git a/misc-functional-test-app/custom_user_details_context_mapper/grails-app/conf/logback.groovy b/misc-functional-test-app/custom_user_details_context_mapper/grails-app/conf/logback.groovy deleted file mode 100644 index b835215..0000000 --- a/misc-functional-test-app/custom_user_details_context_mapper/grails-app/conf/logback.groovy +++ /dev/null @@ -1,37 +0,0 @@ -import grails.util.BuildSettings -import grails.util.Environment -import org.springframework.boot.logging.logback.ColorConverter -import org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter - -import java.nio.charset.StandardCharsets - -conversionRule 'clr', ColorConverter -conversionRule 'wex', WhitespaceThrowableProxyConverter - -// See http://logback.qos.ch/manual/groovy.html for details on configuration -appender('STDOUT', ConsoleAppender) { - encoder(PatternLayoutEncoder) { - charset = StandardCharsets.UTF_8 - - pattern = - '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} ' + // Date - '%clr(%5p) ' + // Log level - '%clr(---){faint} %clr([%15.15t]){faint} ' + // Thread - '%clr(%-40.40logger{39}){cyan} %clr(:){faint} ' + // Logger - '%m%n%wex' // Message - } -} - -def targetDir = BuildSettings.TARGET_DIR -if (Environment.isDevelopmentMode() && targetDir != null) { - appender("FULL_STACKTRACE", FileAppender) { - file = "${targetDir}/stacktrace.log" - append = true - encoder(PatternLayoutEncoder) { - charset = StandardCharsets.UTF_8 - pattern = "%level %logger - %msg%n" - } - } - logger("StackTrace", ERROR, ['FULL_STACKTRACE'], false) -} -root(ERROR, ['STDOUT']) diff --git a/misc-functional-test-app/custom_user_details_context_mapper/grails-app/conf/logback.xml b/misc-functional-test-app/custom_user_details_context_mapper/grails-app/conf/logback.xml new file mode 100644 index 0000000..70b1484 --- /dev/null +++ b/misc-functional-test-app/custom_user_details_context_mapper/grails-app/conf/logback.xml @@ -0,0 +1,19 @@ + + + + + + + + true + + UTF-8 + %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex + + + + + + + + diff --git a/misc-functional-test-app/custom_user_details_context_mapper/grails-app/domain/com/test/User.groovy b/misc-functional-test-app/custom_user_details_context_mapper/grails-app/domain/com/test/User.groovy index 4ba3494..3d599d7 100644 --- a/misc-functional-test-app/custom_user_details_context_mapper/grails-app/domain/com/test/User.groovy +++ b/misc-functional-test-app/custom_user_details_context_mapper/grails-app/domain/com/test/User.groovy @@ -44,6 +44,10 @@ class User implements Serializable { static transients = ['springSecurityService'] + static mapping = { + table name: '`user`' + } + static constraints = { username blank: false, unique: true password blank: false diff --git a/misc-functional-test-app/custom_user_details_context_mapper/grails-app/domain/com/test/UserRole.groovy b/misc-functional-test-app/custom_user_details_context_mapper/grails-app/domain/com/test/UserRole.groovy index 6a8dc15..8eb14b0 100644 --- a/misc-functional-test-app/custom_user_details_context_mapper/grails-app/domain/com/test/UserRole.groovy +++ b/misc-functional-test-app/custom_user_details_context_mapper/grails-app/domain/com/test/UserRole.groovy @@ -3,7 +3,7 @@ package com.test import grails.gorm.DetachedCriteria import groovy.transform.ToString -import org.apache.commons.lang.builder.HashCodeBuilder +import org.apache.commons.lang3.builder.HashCodeBuilder @ToString(cache=true, includeNames=true, includePackage=false) class UserRole implements Serializable { diff --git a/misc-functional-test-app/custom_user_details_context_mapper/grails-wrapper.jar b/misc-functional-test-app/custom_user_details_context_mapper/grails-wrapper.jar deleted file mode 100644 index b9bd249f589660cf867961102cb1760974e60dcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4821 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -JAR_PATH=$APP_HOME/grails-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - JAVACMD=`cygpath --unix "$JAVACMD"` - JAR_PATH=`cygpath --path --mixed "$JAR_PATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRAILS_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRAILS_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRAILS_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRAILS_OPTS - -exec "$JAVACMD" -jar "${JVM_OPTS[@]}" "$JAR_PATH" "$@" diff --git a/misc-functional-test-app/custom_user_details_context_mapper/grailsw.bat b/misc-functional-test-app/custom_user_details_context_mapper/grailsw.bat deleted file mode 100755 index c48c384..0000000 --- a/misc-functional-test-app/custom_user_details_context_mapper/grailsw.bat +++ /dev/null @@ -1,89 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Grails startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRAILS_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-XX:+TieredCompilation" "-XX:TieredStopAtLevel=1" "-XX:CICompilerCount=3" - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line -set JAR_PATH=%APP_HOME%/grails-wrapper.jar - -@rem Execute Grails -"%JAVA_EXE%" -jar %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRAILS_OPTS% %JAR_PATH% %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRAILS_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRAILS_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/misc-functional-test-app/custom_user_details_context_mapper/settings.gradle b/misc-functional-test-app/custom_user_details_context_mapper/settings.gradle deleted file mode 100644 index e69de29..0000000 diff --git a/misc-functional-test-app/custom_user_details_context_mapper/src/integration-test/resources/GebConfig.groovy b/misc-functional-test-app/custom_user_details_context_mapper/src/integration-test/resources/GebConfig.groovy index 16d38b9..adb480e 100644 --- a/misc-functional-test-app/custom_user_details_context_mapper/src/integration-test/resources/GebConfig.groovy +++ b/misc-functional-test-app/custom_user_details_context_mapper/src/integration-test/resources/GebConfig.groovy @@ -1,24 +1,16 @@ import org.openqa.selenium.chrome.ChromeDriver import org.openqa.selenium.chrome.ChromeOptions import org.openqa.selenium.firefox.FirefoxDriver -import org.openqa.selenium.htmlunit.HtmlUnitDriver - -// default is to use htmlunit -driver = { - HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver() - htmlUnitDriver.javascriptEnabled = true - htmlUnitDriver -} +import org.openqa.selenium.firefox.FirefoxOptions +import org.openqa.selenium.safari.SafariDriver environments { - htmlUnit { - driver = { - HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver() - htmlUnitDriver.javascriptEnabled = true - htmlUnitDriver - } + // You need to configure in Safari -> Develop -> Allowed Remote Automation + safari { + driver = { new SafariDriver() } } + // run via “./gradlew -Dgeb.env=chrome iT” chrome { driver = { new ChromeDriver() } @@ -33,8 +25,17 @@ environments { } } + // run via “./gradlew -Dgeb.env=firefoxHeadless iT” + firefoxHeadless { + driver = { + FirefoxOptions o = new FirefoxOptions() + o.addArguments('-headless') + new FirefoxDriver(o) + } + } + // run via “./gradlew -Dgeb.env=firefox iT” firefox { driver = { new FirefoxDriver() } } -} +} \ No newline at end of file diff --git a/misc-functional-test-app/retrieve-db-roles/build.gradle b/misc-functional-test-app/retrieve-db-roles/build.gradle index 0e9353a..be876f0 100644 --- a/misc-functional-test-app/retrieve-db-roles/build.gradle +++ b/misc-functional-test-app/retrieve-db-roles/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" - classpath "gradle.plugin.com.github.erdi.webdriver-binaries:webdriver-binaries-gradle-plugin:2.2" + classpath "com.github.erdi:webdriver-binaries-gradle-plugin:3.2" classpath "org.grails.plugins:hibernate5:9.0.0-SNAPSHOT" classpath "com.bertramlabs.plugins:asset-pipeline-gradle:5.0.1" } @@ -37,7 +37,7 @@ dependencies { implementation "org.grails:grails-logging" implementation "org.grails:grails-plugin-rest" implementation "org.grails:grails-plugin-databinding" - implementation "org.grails.plugins:spring-security-ldap:${file('../../version.txt').text.trim()}" + implementation project(":") implementation "org.grails:grails-plugin-i18n" implementation "org.grails:grails-plugin-services" implementation "org.grails:grails-plugin-url-mappings" @@ -49,7 +49,6 @@ dependencies { implementation "org.grails.plugins:hibernate5" implementation "org.hibernate:hibernate-core-jakarta:5.6.15.Final" implementation "org.grails.plugins:gsp" - compileOnly "io.micronaut:micronaut-inject-groovy" console "org.grails:grails-console" profile "org.grails.profiles:web" runtimeOnly "com.h2database:h2" @@ -58,19 +57,19 @@ dependencies { testImplementation "org.grails:grails-gorm-testing-support" testImplementation "org.mockito:mockito-core" testImplementation "org.grails:grails-web-testing-support" - implementation "org.grails.plugins:spring-security-ldap:${file('../../version.txt').text.trim()}" testImplementation "org.grails.plugins:geb" - testImplementation "org.seleniumhq.selenium:selenium-remote-driver:3.141.59" - testImplementation "org.seleniumhq.selenium:selenium-api:3.141.59" - testImplementation "org.seleniumhq.selenium:selenium-support:3.141.59" - testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59" - testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59" - testImplementation "org.seleniumhq.selenium:htmlunit-driver:2.35.1" - testRuntimeOnly 'net.sourceforge.htmlunit:htmlunit:2.35.0' + testImplementation "org.gebish:geb-core:7.0" + testImplementation "org.gebish:geb-spock:7.0" + testImplementation "org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion" + testImplementation "org.seleniumhq.selenium:selenium-api:$seleniumVersion" + testImplementation "org.seleniumhq.selenium:selenium-support:$seleniumVersion" + testImplementation "org.spockframework:spock-core" + testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion" + testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion" + testRuntimeOnly "org.seleniumhq.selenium:selenium-safari-driver:$seleniumVersion" } apply from: "../../gradle/testVerbose.gradle" -apply from: "../../gradle/groovy-config.gradle" tasks.withType(GroovyCompile) { configure(groovyOptions) { @@ -78,23 +77,17 @@ tasks.withType(GroovyCompile) { } } -webdriverBinaries { - chromedriver { - version = '80.0.3987.16' - } - geckodriver { - version = '0.26.0' - } -} - tasks.withType(Test) { systemProperty "geb.env", System.getProperty('geb.env') systemProperty "geb.build.reportsDir", reporting.file("geb/integrationTest") - systemProperty "webdriver.chrome.driver", System.getProperty('webdriver.chrome.driver') - systemProperty "webdriver.gecko.driver", System.getProperty('webdriver.gecko.driver') + if (System.getenv('CHROMEWEBDRIVER')) { + systemProperty 'webdriver.chrome.driver', "${System.getenv('CHROMEWEBDRIVER')}/chromedriver" + } + if (System.getenv('GECKOWEBDRIVER')) { + systemProperty 'webdriver.gecko.driver', "${System.getenv('GECKOWEBDRIVER')}/geckodriver" + } } - assets { minifyJs = true minifyCss = true diff --git a/misc-functional-test-app/retrieve-db-roles/gradle.properties b/misc-functional-test-app/retrieve-db-roles/gradle.properties deleted file mode 100644 index a4eb242..0000000 --- a/misc-functional-test-app/retrieve-db-roles/gradle.properties +++ /dev/null @@ -1,5 +0,0 @@ -grailsVersion=7.0.0-SNAPSHOT -gorm.version=9.0.0-SNAPSHOT -org.gradle.daemon=true -org.gradle.parallel=true -org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx1024M diff --git a/misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.jar b/misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index afba109285af78dbd2a1d187e33ac4f87c76e392..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61624 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�Zy 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 diff --git a/misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.properties b/misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index c44c230..0000000 --- a/misc-functional-test-app/retrieve-db-roles/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip -networkTimeout=10000 -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/misc-functional-test-app/retrieve-db-roles/gradlew b/misc-functional-test-app/retrieve-db-roles/gradlew deleted file mode 100755 index 65dcd68..0000000 --- a/misc-functional-test-app/retrieve-db-roles/gradlew +++ /dev/null @@ -1,244 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed 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 -# -# https://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. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/misc-functional-test-app/retrieve-db-roles/gradlew.bat b/misc-functional-test-app/retrieve-db-roles/gradlew.bat deleted file mode 100644 index 6689b85..0000000 --- a/misc-functional-test-app/retrieve-db-roles/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/misc-functional-test-app/retrieve-db-roles/grails-app/conf/application.yml b/misc-functional-test-app/retrieve-db-roles/grails-app/conf/application.yml index 0b8ccac..dc4b968 100644 --- a/misc-functional-test-app/retrieve-db-roles/grails-app/conf/application.yml +++ b/misc-functional-test-app/retrieve-db-roles/grails-app/conf/application.yml @@ -1,137 +1,62 @@ ---- -grails: - profile: web - codegen: - defaultPackage: com.test - gorm: - reactor: - # Whether to translate GORM events into Reactor events - # Disabled by default for performance reasons - events: false info: - app: - name: '@info.app.name@' - version: '@info.app.version@' - grailsVersion: '@info.app.grailsVersion@' -spring: - jmx: - unique-names: true - main: - banner-mode: "off" - groovy: - template: - check-template-location: false - devtools: - restart: - additional-exclude: - - '*.gsp' - - '**/*.gsp' - - '*.gson' - - '**/*.gson' - - 'logback.groovy' - - '*.properties' -management: - endpoints: - enabled-by-default: false - ---- -grails: - mime: - disable: - accept: - header: - userAgents: - - Gecko - - WebKit - - Presto - - Trident - types: - all: '*/*' - atom: application/atom+xml - css: text/css - csv: text/csv - form: application/x-www-form-urlencoded - html: - - text/html - - application/xhtml+xml - js: text/javascript - json: - - application/json - - text/json - multipartForm: multipart/form-data - pdf: application/pdf - rss: application/rss+xml - text: text/plain - hal: - - application/hal+json - - application/hal+xml - xml: - - text/xml - - application/xml - urlmapping: - cache: - maxsize: 1000 - controllers: - defaultScope: singleton - converters: - encoding: UTF-8 - views: - default: - codec: html - gsp: - encoding: UTF-8 - htmlcodec: xml - codecs: - expression: html - scriptlet: html - taglib: none - staticparts: none -management: - endpoints: - jmx: - unique-names: true - ---- -hibernate: - cache: - queries: false - use_second_level_cache: false - use_query_cache: false + app: + name: '@info.app.name@' + version: '@info.app.version@' + grailsVersion: '@info.app.grailsVersion@' dataSource: - pooled: true - jmxExport: true - driverClassName: org.h2.Driver - username: sa - password: '' - -environments: - development: - dataSource: - dbCreate: create-drop - url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE - test: - dataSource: - dbCreate: update - url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE - production: - dataSource: - dbCreate: none - url: jdbc:h2:./prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE - properties: - jmxEnabled: true - initialSize: 5 - maxActive: 50 - minIdle: 5 - maxIdle: 25 - maxWait: 10000 - maxAge: 600000 - timeBetweenEvictionRunsMillis: 5000 - minEvictableIdleTimeMillis: 60000 - validationQuery: SELECT 1 - validationQueryTimeout: 3 - validationInterval: 15000 - testOnBorrow: true - testWhileIdle: true - testOnReturn: false - jdbcInterceptors: ConnectionState - defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED + url: jdbc:h2:mem:devDb;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE + driverClassName: org.h2.Driver + username: sa + password: '' + pooled: true + jmxExport: true + dbCreate: update +hibernate: + cache: + queries: false + use_second_level_cache: false + use_query_cache: false +grails: + views: + default: + codec: html + gsp: + encoding: UTF-8 + htmlcodec: xml + codecs: + expression: html + scriptlet: html + taglib: none + staticparts: none + mime: + disable: + accept: + header: + userAgents: + - Gecko + - WebKit + - Presto + - Trident + types: + all: '*/*' + atom: application/atom+xml + css: text/css + csv: text/csv + form: application/x-www-form-urlencoded + html: + - text/html + - application/xhtml+xml + js: text/javascript + json: + - application/json + - text/json + multipartForm: multipart/form-data + pdf: application/pdf + rss: application/rss+xml + text: text/plain + hal: + - application/hal+json + - application/hal+xml + xml: + - text/xml + - application/xml diff --git a/misc-functional-test-app/retrieve-db-roles/grails-app/conf/logback.groovy b/misc-functional-test-app/retrieve-db-roles/grails-app/conf/logback.groovy deleted file mode 100644 index b835215..0000000 --- a/misc-functional-test-app/retrieve-db-roles/grails-app/conf/logback.groovy +++ /dev/null @@ -1,37 +0,0 @@ -import grails.util.BuildSettings -import grails.util.Environment -import org.springframework.boot.logging.logback.ColorConverter -import org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter - -import java.nio.charset.StandardCharsets - -conversionRule 'clr', ColorConverter -conversionRule 'wex', WhitespaceThrowableProxyConverter - -// See http://logback.qos.ch/manual/groovy.html for details on configuration -appender('STDOUT', ConsoleAppender) { - encoder(PatternLayoutEncoder) { - charset = StandardCharsets.UTF_8 - - pattern = - '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} ' + // Date - '%clr(%5p) ' + // Log level - '%clr(---){faint} %clr([%15.15t]){faint} ' + // Thread - '%clr(%-40.40logger{39}){cyan} %clr(:){faint} ' + // Logger - '%m%n%wex' // Message - } -} - -def targetDir = BuildSettings.TARGET_DIR -if (Environment.isDevelopmentMode() && targetDir != null) { - appender("FULL_STACKTRACE", FileAppender) { - file = "${targetDir}/stacktrace.log" - append = true - encoder(PatternLayoutEncoder) { - charset = StandardCharsets.UTF_8 - pattern = "%level %logger - %msg%n" - } - } - logger("StackTrace", ERROR, ['FULL_STACKTRACE'], false) -} -root(ERROR, ['STDOUT']) diff --git a/misc-functional-test-app/retrieve-db-roles/grails-app/conf/logback.xml b/misc-functional-test-app/retrieve-db-roles/grails-app/conf/logback.xml new file mode 100644 index 0000000..70b1484 --- /dev/null +++ b/misc-functional-test-app/retrieve-db-roles/grails-app/conf/logback.xml @@ -0,0 +1,19 @@ + + + + + + + + true + + UTF-8 + %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex + + + + + + + + diff --git a/misc-functional-test-app/retrieve-db-roles/grails-app/domain/com/test/User.groovy b/misc-functional-test-app/retrieve-db-roles/grails-app/domain/com/test/User.groovy index 4ba3494..3d599d7 100644 --- a/misc-functional-test-app/retrieve-db-roles/grails-app/domain/com/test/User.groovy +++ b/misc-functional-test-app/retrieve-db-roles/grails-app/domain/com/test/User.groovy @@ -44,6 +44,10 @@ class User implements Serializable { static transients = ['springSecurityService'] + static mapping = { + table name: '`user`' + } + static constraints = { username blank: false, unique: true password blank: false diff --git a/misc-functional-test-app/retrieve-db-roles/grails-app/domain/com/test/UserRole.groovy b/misc-functional-test-app/retrieve-db-roles/grails-app/domain/com/test/UserRole.groovy index 6a8dc15..8eb14b0 100644 --- a/misc-functional-test-app/retrieve-db-roles/grails-app/domain/com/test/UserRole.groovy +++ b/misc-functional-test-app/retrieve-db-roles/grails-app/domain/com/test/UserRole.groovy @@ -3,7 +3,7 @@ package com.test import grails.gorm.DetachedCriteria import groovy.transform.ToString -import org.apache.commons.lang.builder.HashCodeBuilder +import org.apache.commons.lang3.builder.HashCodeBuilder @ToString(cache=true, includeNames=true, includePackage=false) class UserRole implements Serializable { diff --git a/misc-functional-test-app/retrieve-db-roles/grails-wrapper.jar b/misc-functional-test-app/retrieve-db-roles/grails-wrapper.jar deleted file mode 100644 index b9bd249f589660cf867961102cb1760974e60dcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4821 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -JAR_PATH=$APP_HOME/grails-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - JAVACMD=`cygpath --unix "$JAVACMD"` - JAR_PATH=`cygpath --path --mixed "$JAR_PATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRAILS_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRAILS_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRAILS_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRAILS_OPTS - -exec "$JAVACMD" -jar "${JVM_OPTS[@]}" "$JAR_PATH" "$@" diff --git a/misc-functional-test-app/retrieve-db-roles/grailsw.bat b/misc-functional-test-app/retrieve-db-roles/grailsw.bat deleted file mode 100755 index c48c384..0000000 --- a/misc-functional-test-app/retrieve-db-roles/grailsw.bat +++ /dev/null @@ -1,89 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Grails startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRAILS_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-XX:+TieredCompilation" "-XX:TieredStopAtLevel=1" "-XX:CICompilerCount=3" - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line -set JAR_PATH=%APP_HOME%/grails-wrapper.jar - -@rem Execute Grails -"%JAVA_EXE%" -jar %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRAILS_OPTS% %JAR_PATH% %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRAILS_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRAILS_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/misc-functional-test-app/retrieve-db-roles/settings.gradle b/misc-functional-test-app/retrieve-db-roles/settings.gradle deleted file mode 100644 index e69de29..0000000 diff --git a/misc-functional-test-app/retrieve-db-roles/src/integration-test/resources/GebConfig.groovy b/misc-functional-test-app/retrieve-db-roles/src/integration-test/resources/GebConfig.groovy index 16d38b9..adb480e 100644 --- a/misc-functional-test-app/retrieve-db-roles/src/integration-test/resources/GebConfig.groovy +++ b/misc-functional-test-app/retrieve-db-roles/src/integration-test/resources/GebConfig.groovy @@ -1,24 +1,16 @@ import org.openqa.selenium.chrome.ChromeDriver import org.openqa.selenium.chrome.ChromeOptions import org.openqa.selenium.firefox.FirefoxDriver -import org.openqa.selenium.htmlunit.HtmlUnitDriver - -// default is to use htmlunit -driver = { - HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver() - htmlUnitDriver.javascriptEnabled = true - htmlUnitDriver -} +import org.openqa.selenium.firefox.FirefoxOptions +import org.openqa.selenium.safari.SafariDriver environments { - htmlUnit { - driver = { - HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver() - htmlUnitDriver.javascriptEnabled = true - htmlUnitDriver - } + // You need to configure in Safari -> Develop -> Allowed Remote Automation + safari { + driver = { new SafariDriver() } } + // run via “./gradlew -Dgeb.env=chrome iT” chrome { driver = { new ChromeDriver() } @@ -33,8 +25,17 @@ environments { } } + // run via “./gradlew -Dgeb.env=firefoxHeadless iT” + firefoxHeadless { + driver = { + FirefoxOptions o = new FirefoxOptions() + o.addArguments('-headless') + new FirefoxDriver(o) + } + } + // run via “./gradlew -Dgeb.env=firefox iT” firefox { driver = { new FirefoxDriver() } } -} +} \ No newline at end of file diff --git a/misc-functional-test-app/retrieve-group-rules/build.gradle b/misc-functional-test-app/retrieve-group-rules/build.gradle index 96fce55..ca22291 100644 --- a/misc-functional-test-app/retrieve-group-rules/build.gradle +++ b/misc-functional-test-app/retrieve-group-rules/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" - classpath "gradle.plugin.com.github.erdi.webdriver-binaries:webdriver-binaries-gradle-plugin:2.2" + classpath "com.github.erdi:webdriver-binaries-gradle-plugin:3.2" classpath "org.grails.plugins:hibernate5:9.0.0-SNAPSHOT" classpath "com.bertramlabs.plugins:asset-pipeline-gradle:5.0.1" } @@ -48,28 +48,28 @@ dependencies { implementation "org.grails.plugins:hibernate5" implementation "org.hibernate:hibernate-core-jakarta:5.6.15.Final" implementation "org.grails.plugins:gsp" - compileOnly "io.micronaut:micronaut-inject-groovy" console "org.grails:grails-console" profile "org.grails.profiles:web" runtimeOnly "com.h2database:h2" runtimeOnly "org.apache.tomcat:tomcat-jdbc" - runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:3.0.10" + runtimeOnly "com.bertramlabs.plugins:asset-pipeline-grails:5.0.1" testImplementation "org.grails:grails-gorm-testing-support" testImplementation "org.mockito:mockito-core" testImplementation "org.grails:grails-web-testing-support" - implementation "org.grails.plugins:spring-security-ldap:${file('../../version.txt').text.trim()}" + implementation project(":") testImplementation "org.grails.plugins:geb" - testImplementation "org.seleniumhq.selenium:selenium-remote-driver:3.141.59" - testImplementation "org.seleniumhq.selenium:selenium-api:3.141.59" - testImplementation "org.seleniumhq.selenium:selenium-support:3.141.59" - testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59" - testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59" - testImplementation "org.seleniumhq.selenium:htmlunit-driver:2.35.1" - testRuntimeOnly 'net.sourceforge.htmlunit:htmlunit:2.35.0' + testImplementation "org.gebish:geb-core:7.0" + testImplementation "org.gebish:geb-spock:7.0" + testImplementation "org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion" + testImplementation "org.seleniumhq.selenium:selenium-api:$seleniumVersion" + testImplementation "org.seleniumhq.selenium:selenium-support:$seleniumVersion" + testImplementation "org.spockframework:spock-core" + testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion" + testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion" + testRuntimeOnly "org.seleniumhq.selenium:selenium-safari-driver:$seleniumVersion" } apply from: "../../gradle/testVerbose.gradle" -apply from: "../../gradle/groovy-config.gradle" tasks.withType(GroovyCompile) { configure(groovyOptions) { @@ -77,24 +77,17 @@ tasks.withType(GroovyCompile) { } } - -webdriverBinaries { - chromedriver { - version = '80.0.3987.16' - } - geckodriver { - version = '0.26.0' - } -} - tasks.withType(Test) { systemProperty "geb.env", System.getProperty('geb.env') systemProperty "geb.build.reportsDir", reporting.file("geb/integrationTest") - systemProperty "webdriver.chrome.driver", System.getProperty('webdriver.chrome.driver') - systemProperty "webdriver.gecko.driver", System.getProperty('webdriver.gecko.driver') + if (System.getenv('CHROMEWEBDRIVER')) { + systemProperty 'webdriver.chrome.driver', "${System.getenv('CHROMEWEBDRIVER')}/chromedriver" + } + if (System.getenv('GECKOWEBDRIVER')) { + systemProperty 'webdriver.gecko.driver', "${System.getenv('GECKOWEBDRIVER')}/geckodriver" + } } - assets { minifyJs = true minifyCss = true diff --git a/misc-functional-test-app/retrieve-group-rules/gradle.properties b/misc-functional-test-app/retrieve-group-rules/gradle.properties deleted file mode 100644 index a4eb242..0000000 --- a/misc-functional-test-app/retrieve-group-rules/gradle.properties +++ /dev/null @@ -1,5 +0,0 @@ -grailsVersion=7.0.0-SNAPSHOT -gorm.version=9.0.0-SNAPSHOT -org.gradle.daemon=true -org.gradle.parallel=true -org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx1024M diff --git a/misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.jar b/misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index afba109285af78dbd2a1d187e33ac4f87c76e392..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61624 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�Zy z^6AJh1X3pXq!CBB#`$5K8SM`A8- zu91@KW`jScvm}!^xaOr;l$}&)!qA=c4=tjb*AM^d9ZpDQjv*NDBXOUm9fM235A&Im zWb|jcBV^{}f>q*lY$s)A{g3K~i*dC}iz|ddMG+h2%gJJkYA%43!xj8A# zx}S=RPcxSSrC^je-O9-uG*4zN`%yO%D|8Y(M!;etj}#5<%)tweodG864mERu+wUwi zqO?7XNoGj5REy(>@FR?cmjdtzHh0Uyxc{bl7pq)x$iETy-gSOl4<=ay@B=!9(wjJhfW}ymgfT)tNU6b0S)wq zMeKw$AI+3w&@(KkXo2zZi+rD-;<`>S;(xh}N&A!yleW!DXaff`xq(&MU0v$=thsf{ zg(^n}x}gz%(ZMmnHv?lM149>hnCRcQl$2k+_R4YyxfW?lIfN`D`XCfH^dukp(N-@j zMOjDZSdpW2Zto4Xiwh$>MX#mx)#OxcM|qz7llutxlZ_J1E-I`Y&pzh)RfL03EK;d5 zsT1+B_S@MLCz)zQys)rDnV4a5!lT8<#kf<49)lNk;@0XW#dWoeCWlSU+e{zMyS1wNXB%6Un^?S8n~Jr%mk_^NT02xU zcTMjr6I|wbWAcf|&V@-_UA*XcHhl7mB~=D;T8nHdVRQX{LQT~{H7`n|hq82!6^^Qw zk3=bdrx(+2sKb?>S1*r#`#OK-jkDlW+^JkfcM1$YFJ9fi*s(8+3Ci?UHN7bY? zh4N;Ruf^YWl3Qug_Tt8ssOAr0u~l&@T3xKa)~WpBgpn}4a($+RfpKJts{-~X3lBbV zc}00$dp*~Rd#{MEJ)=}o%Ba+MxXj)G#S95An)W3pi<`?g$LYqs4y$@&P;h2dic|#Y zLG)4ki^^AYUpsZAtoN-`*PqRPm+BW{Sv93rQm8yHt2BO(SDmGJrDwCJ{h{LXJS+K? zT1`EUhgnKGwTy3CHN7c~OstGDJK;&0nUisI+TC|(NNeXbcpIy&DJ~-gy%PgMJwLdo zM-N=_#u(Fd`$DV<|BjAmhg*xPy8UhsziP>UzRJia${pQz)OyY|sn2Gsb@F5HMbeG4MJ)A6 zip8_D9EG_-mY)rt>E9tGKb6fE<=v;PY4-MR6_G!&r%+)@O^Sbo&N-QmW{8WLEyL}XI25|Lqcq;31FtfOg)YjO+kPkZx<1Xmr5EtjPCpi(FSH)6*cL~Wd3u@NkeeRsqV;PX~8DoAyr~*@QZEkWN8=j68 zK#oirFgtzpre!U$S(>lCULpEEsv^+Ew$A>6ZcsaAzLnn&J!{=Ke|!u)B`dFIl( z?vlF5euE?z5|cU)OPbl|@}Y3*ZkOOxEGXmrJOU-KoLFT{TuqWvZCG2==*;<06n)skW(dvAJ*9=S9v^7qHS$`Dl`eJ81@Mlj~ z%Bo)zV6lv$?7RyQZk6arskVWO0fvBrre8Jb*1R-cnz|i~~_ZLzp^Z zdUn~P6=9O$!Q)VJRz{VIA?$9b0acoc>g7?zFWpmZ`LCh`ie2bgsRy+C*Kf9A&<|h` zsZ76F{`l!LU2>tQjr$3#kYM{%d`Isn`WyaKUjrDwRSP0!kYpX9^R#RX!bjqmXkl!N zs))gf1ol~L3Xef4B?`<1GD_lBnuW{~+??9GRAgt)(@DZTFH|4Pb1o4CG6_f6rtEL@s<5ctjNIRvCMi=l?B-P+D8i*$H^-jz8Z{US(1{-DrHKNdc1xhp*${Nt%oj8oK2`gW#Eln z_W0bDj>|ck)XEBq1P`QeJDFebd}11SLV)K$4t+l=Q{P6MQl7?TD{C;U&*dbLVA^+O|OPt6jn6n7E<+DFOlud1?|k`TpU64 z;$jlu4;R1(yvFk@WgytV_g~pmB`+$<$!chFsmh@uY-a&yhCdS66WdAK#PQ(!wie!> za^US|K-U#D3pwGEmZaAO5FGbBetWB&z!hL(Y#21lO< z==S{#=CQN3-q!B>xq*jTqmfoF$8F`mZFNt^eYl~ZfNo4ZesiHf6ckDWcr$E=Jljnf2>9=rB~7>G4$a`w_O`ZQ>r=(b4ho+AfwCzm=D{`` zxKUQ313J(GXdjVXY;es$Y=PrSl(Ox@gV<_27CbzWPkyI|JZNrZP?!DnC<2`dh3H?f zl1?xeTOery;+#Pp_VzDOo33PR@(U$^hXMHgO(zGQ-u@f@FXqv(zXpH6P(7H2 z_BZ4J^&wCtEkGBMvvP8VYq*&1nE&7&Q|V%yoCd7S0*oDU|z z;;3i(25RC0#+>LbI=E&a?3fNgAO*FscLLGy4pEgQ+a;py{$7t;FDno1Gd|q8GdaBptjT1bT9H=(4$xg(a^;9al$zc!KrKq zG}eBa?`J81tSKCNupu9b9huAk)ms5{`wf}KcL*v~D`#g=p`T=682*7N*bv<$7ceyg zru~&l5j+Ib4uzYE6ZEf@!Y__6tN~QHfa>f%`(*+Ln!mQ$PpZE)QXFUfR5qAR(m^-e zcFWmK8Hh44whl@1*Qy9}vM%I+s+5DNeg8-*21Yz2%g21|mWF5LAD))kxG9Vie$C1GCQds%bZ6Ads?$z`tU5 z?SB|JXQy=zH6(LHy8kTU;v!ohrDI+JF=6#HPj6L z|5+8_zB(ti&9ez=A-s>L*YYw(a_ang3D#00_4+d%7%~TH_MtMMYJ%-CwE6y#;b4P%poCH0gPXelM>tU415{2?ON$z{cn`ie z;z0Pn#V|%CK#d2vM=<>0K!X2{4v7kl8m4a#Iw|o$Xq2FRsCcNs@b>U-CLN5oKQtaH z9%}rWJv`>@KjQr!%?1_vJW5cJJ?QzIKS3Yd$56fS_t3Dxe#5^OH@lP3zkTvii-zhZ zy$4p>cp%t5huZ&gnnqa?_nIo@#~ChARYp9>ReiBVku_RyDJ v9f-cOr*eQp04g-<;pZOo<=#I*?>`DvQ^o}A^zD`USu`GEG&HBt?O*=~soeXc diff --git a/misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.properties b/misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index c44c230..0000000 --- a/misc-functional-test-app/retrieve-group-rules/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip -networkTimeout=10000 -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists diff --git a/misc-functional-test-app/retrieve-group-rules/gradlew b/misc-functional-test-app/retrieve-group-rules/gradlew deleted file mode 100755 index 65dcd68..0000000 --- a/misc-functional-test-app/retrieve-group-rules/gradlew +++ /dev/null @@ -1,244 +0,0 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed 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 -# -# https://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. -# - -############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# -############################################################################## - -# Attempt to set APP_HOME - -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum - -warn () { - echo "$*" -} >&2 - -die () { - echo - echo "$*" - echo - exit 1 -} >&2 - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "$( uname )" in #( - CYGWIN* ) cygwin=true ;; #( - Darwin* ) darwin=true ;; #( - MSYS* | MINGW* ) msys=true ;; #( - NONSTOP* ) nonstop=true ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD=$JAVA_HOME/jre/sh/java - else - JAVACMD=$JAVA_HOME/bin/java - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then - case $MAX_FD in #( - max*) - # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - MAX_FD=$( ulimit -H -n ) || - warn "Could not query maximum file descriptor limit" - esac - case $MAX_FD in #( - '' | soft) :;; #( - *) - # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 - ulimit -n "$MAX_FD" || - warn "Could not set maximum file descriptor limit to $MAX_FD" - esac -fi - -# Collect all arguments for the java command, stacking in reverse order: -# * args from the command line -# * the main class name -# * -classpath -# * -D...appname settings -# * --module-path (only if needed) -# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. - -# For Cygwin or MSYS, switch paths to Windows format before running java -if "$cygwin" || "$msys" ; then - APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) - - JAVACMD=$( cygpath --unix "$JAVACMD" ) - - # Now convert the arguments - kludge to limit ourselves to /bin/sh - for arg do - if - case $arg in #( - -*) false ;; # don't mess with options #( - /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath - [ -e "$t" ] ;; #( - *) false ;; - esac - then - arg=$( cygpath --path --ignore --mixed "$arg" ) - fi - # Roll the args list around exactly as many times as the number of - # args, so each arg winds up back in the position where it started, but - # possibly modified. - # - # NB: a `for` loop captures its iteration list before it begins, so - # changing the positional parameters here affects neither the number of - # iterations, nor the values presented in `arg`. - shift # remove old arg - set -- "$@" "$arg" # push replacement arg - done -fi - -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. - -set -- \ - "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ - "$@" - -# Stop when "xargs" is not available. -if ! command -v xargs >/dev/null 2>&1 -then - die "xargs is not available" -fi - -# Use "xargs" to parse quoted args. -# -# With -n1 it outputs one arg per line, with the quotes and backslashes removed. -# -# In Bash we could simply go: -# -# readarray ARGS < <( xargs -n1 <<<"$var" ) && -# set -- "${ARGS[@]}" "$@" -# -# but POSIX shell has neither arrays nor command substitution, so instead we -# post-process each arg (as a line of input to sed) to backslash-escape any -# character that might be a shell metacharacter, then use eval to reverse -# that process (while maintaining the separation between arguments), and wrap -# the whole thing up as a single "set" statement. -# -# This will of course break if any of these variables contains a newline or -# an unmatched quote. -# - -eval "set -- $( - printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | - xargs -n1 | - sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | - tr '\n' ' ' - )" '"$@"' - -exec "$JAVACMD" "$@" diff --git a/misc-functional-test-app/retrieve-group-rules/gradlew.bat b/misc-functional-test-app/retrieve-group-rules/gradlew.bat deleted file mode 100644 index 6689b85..0000000 --- a/misc-functional-test-app/retrieve-group-rules/gradlew.bat +++ /dev/null @@ -1,92 +0,0 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%"=="" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if %ERRORLEVEL% equ 0 goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -set EXIT_CODE=%ERRORLEVEL% -if %EXIT_CODE% equ 0 set EXIT_CODE=1 -if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% -exit /b %EXIT_CODE% - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/misc-functional-test-app/retrieve-group-rules/grails-app/conf/application.yml b/misc-functional-test-app/retrieve-group-rules/grails-app/conf/application.yml index 0b8ccac..dc4b968 100644 --- a/misc-functional-test-app/retrieve-group-rules/grails-app/conf/application.yml +++ b/misc-functional-test-app/retrieve-group-rules/grails-app/conf/application.yml @@ -1,137 +1,62 @@ ---- -grails: - profile: web - codegen: - defaultPackage: com.test - gorm: - reactor: - # Whether to translate GORM events into Reactor events - # Disabled by default for performance reasons - events: false info: - app: - name: '@info.app.name@' - version: '@info.app.version@' - grailsVersion: '@info.app.grailsVersion@' -spring: - jmx: - unique-names: true - main: - banner-mode: "off" - groovy: - template: - check-template-location: false - devtools: - restart: - additional-exclude: - - '*.gsp' - - '**/*.gsp' - - '*.gson' - - '**/*.gson' - - 'logback.groovy' - - '*.properties' -management: - endpoints: - enabled-by-default: false - ---- -grails: - mime: - disable: - accept: - header: - userAgents: - - Gecko - - WebKit - - Presto - - Trident - types: - all: '*/*' - atom: application/atom+xml - css: text/css - csv: text/csv - form: application/x-www-form-urlencoded - html: - - text/html - - application/xhtml+xml - js: text/javascript - json: - - application/json - - text/json - multipartForm: multipart/form-data - pdf: application/pdf - rss: application/rss+xml - text: text/plain - hal: - - application/hal+json - - application/hal+xml - xml: - - text/xml - - application/xml - urlmapping: - cache: - maxsize: 1000 - controllers: - defaultScope: singleton - converters: - encoding: UTF-8 - views: - default: - codec: html - gsp: - encoding: UTF-8 - htmlcodec: xml - codecs: - expression: html - scriptlet: html - taglib: none - staticparts: none -management: - endpoints: - jmx: - unique-names: true - ---- -hibernate: - cache: - queries: false - use_second_level_cache: false - use_query_cache: false + app: + name: '@info.app.name@' + version: '@info.app.version@' + grailsVersion: '@info.app.grailsVersion@' dataSource: - pooled: true - jmxExport: true - driverClassName: org.h2.Driver - username: sa - password: '' - -environments: - development: - dataSource: - dbCreate: create-drop - url: jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE - test: - dataSource: - dbCreate: update - url: jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE - production: - dataSource: - dbCreate: none - url: jdbc:h2:./prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE - properties: - jmxEnabled: true - initialSize: 5 - maxActive: 50 - minIdle: 5 - maxIdle: 25 - maxWait: 10000 - maxAge: 600000 - timeBetweenEvictionRunsMillis: 5000 - minEvictableIdleTimeMillis: 60000 - validationQuery: SELECT 1 - validationQueryTimeout: 3 - validationInterval: 15000 - testOnBorrow: true - testWhileIdle: true - testOnReturn: false - jdbcInterceptors: ConnectionState - defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED + url: jdbc:h2:mem:devDb;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE + driverClassName: org.h2.Driver + username: sa + password: '' + pooled: true + jmxExport: true + dbCreate: update +hibernate: + cache: + queries: false + use_second_level_cache: false + use_query_cache: false +grails: + views: + default: + codec: html + gsp: + encoding: UTF-8 + htmlcodec: xml + codecs: + expression: html + scriptlet: html + taglib: none + staticparts: none + mime: + disable: + accept: + header: + userAgents: + - Gecko + - WebKit + - Presto + - Trident + types: + all: '*/*' + atom: application/atom+xml + css: text/css + csv: text/csv + form: application/x-www-form-urlencoded + html: + - text/html + - application/xhtml+xml + js: text/javascript + json: + - application/json + - text/json + multipartForm: multipart/form-data + pdf: application/pdf + rss: application/rss+xml + text: text/plain + hal: + - application/hal+json + - application/hal+xml + xml: + - text/xml + - application/xml diff --git a/misc-functional-test-app/retrieve-group-rules/grails-app/conf/logback.groovy b/misc-functional-test-app/retrieve-group-rules/grails-app/conf/logback.groovy deleted file mode 100644 index b835215..0000000 --- a/misc-functional-test-app/retrieve-group-rules/grails-app/conf/logback.groovy +++ /dev/null @@ -1,37 +0,0 @@ -import grails.util.BuildSettings -import grails.util.Environment -import org.springframework.boot.logging.logback.ColorConverter -import org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter - -import java.nio.charset.StandardCharsets - -conversionRule 'clr', ColorConverter -conversionRule 'wex', WhitespaceThrowableProxyConverter - -// See http://logback.qos.ch/manual/groovy.html for details on configuration -appender('STDOUT', ConsoleAppender) { - encoder(PatternLayoutEncoder) { - charset = StandardCharsets.UTF_8 - - pattern = - '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} ' + // Date - '%clr(%5p) ' + // Log level - '%clr(---){faint} %clr([%15.15t]){faint} ' + // Thread - '%clr(%-40.40logger{39}){cyan} %clr(:){faint} ' + // Logger - '%m%n%wex' // Message - } -} - -def targetDir = BuildSettings.TARGET_DIR -if (Environment.isDevelopmentMode() && targetDir != null) { - appender("FULL_STACKTRACE", FileAppender) { - file = "${targetDir}/stacktrace.log" - append = true - encoder(PatternLayoutEncoder) { - charset = StandardCharsets.UTF_8 - pattern = "%level %logger - %msg%n" - } - } - logger("StackTrace", ERROR, ['FULL_STACKTRACE'], false) -} -root(ERROR, ['STDOUT']) diff --git a/misc-functional-test-app/retrieve-group-rules/grails-app/conf/logback.xml b/misc-functional-test-app/retrieve-group-rules/grails-app/conf/logback.xml new file mode 100644 index 0000000..70b1484 --- /dev/null +++ b/misc-functional-test-app/retrieve-group-rules/grails-app/conf/logback.xml @@ -0,0 +1,19 @@ + + + + + + + + true + + UTF-8 + %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wex + + + + + + + + diff --git a/misc-functional-test-app/retrieve-group-rules/grails-app/domain/com/test/User.groovy b/misc-functional-test-app/retrieve-group-rules/grails-app/domain/com/test/User.groovy index 4ba3494..3d599d7 100644 --- a/misc-functional-test-app/retrieve-group-rules/grails-app/domain/com/test/User.groovy +++ b/misc-functional-test-app/retrieve-group-rules/grails-app/domain/com/test/User.groovy @@ -44,6 +44,10 @@ class User implements Serializable { static transients = ['springSecurityService'] + static mapping = { + table name: '`user`' + } + static constraints = { username blank: false, unique: true password blank: false diff --git a/misc-functional-test-app/retrieve-group-rules/grails-app/domain/com/test/UserRole.groovy b/misc-functional-test-app/retrieve-group-rules/grails-app/domain/com/test/UserRole.groovy index 6a8dc15..8eb14b0 100644 --- a/misc-functional-test-app/retrieve-group-rules/grails-app/domain/com/test/UserRole.groovy +++ b/misc-functional-test-app/retrieve-group-rules/grails-app/domain/com/test/UserRole.groovy @@ -3,7 +3,7 @@ package com.test import grails.gorm.DetachedCriteria import groovy.transform.ToString -import org.apache.commons.lang.builder.HashCodeBuilder +import org.apache.commons.lang3.builder.HashCodeBuilder @ToString(cache=true, includeNames=true, includePackage=false) class UserRole implements Serializable { diff --git a/misc-functional-test-app/retrieve-group-rules/grails-wrapper.jar b/misc-functional-test-app/retrieve-group-rules/grails-wrapper.jar deleted file mode 100644 index b9bd249f589660cf867961102cb1760974e60dcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4821 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -JAR_PATH=$APP_HOME/grails-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - JAVACMD=`cygpath --unix "$JAVACMD"` - JAR_PATH=`cygpath --path --mixed "$JAR_PATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRAILS_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRAILS_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRAILS_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRAILS_OPTS - -exec "$JAVACMD" -jar "${JVM_OPTS[@]}" "$JAR_PATH" "$@" diff --git a/misc-functional-test-app/retrieve-group-rules/grailsw.bat b/misc-functional-test-app/retrieve-group-rules/grailsw.bat deleted file mode 100755 index c48c384..0000000 --- a/misc-functional-test-app/retrieve-group-rules/grailsw.bat +++ /dev/null @@ -1,89 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Grails startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRAILS_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-XX:+TieredCompilation" "-XX:TieredStopAtLevel=1" "-XX:CICompilerCount=3" - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line -set JAR_PATH=%APP_HOME%/grails-wrapper.jar - -@rem Execute Grails -"%JAVA_EXE%" -jar %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRAILS_OPTS% %JAR_PATH% %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRAILS_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRAILS_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/misc-functional-test-app/retrieve-group-rules/settings.gradle b/misc-functional-test-app/retrieve-group-rules/settings.gradle deleted file mode 100644 index e69de29..0000000 diff --git a/misc-functional-test-app/retrieve-group-rules/src/integration-test/resources/GebConfig.groovy b/misc-functional-test-app/retrieve-group-rules/src/integration-test/resources/GebConfig.groovy index 16d38b9..adb480e 100644 --- a/misc-functional-test-app/retrieve-group-rules/src/integration-test/resources/GebConfig.groovy +++ b/misc-functional-test-app/retrieve-group-rules/src/integration-test/resources/GebConfig.groovy @@ -1,24 +1,16 @@ import org.openqa.selenium.chrome.ChromeDriver import org.openqa.selenium.chrome.ChromeOptions import org.openqa.selenium.firefox.FirefoxDriver -import org.openqa.selenium.htmlunit.HtmlUnitDriver - -// default is to use htmlunit -driver = { - HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver() - htmlUnitDriver.javascriptEnabled = true - htmlUnitDriver -} +import org.openqa.selenium.firefox.FirefoxOptions +import org.openqa.selenium.safari.SafariDriver environments { - htmlUnit { - driver = { - HtmlUnitDriver htmlUnitDriver = new HtmlUnitDriver() - htmlUnitDriver.javascriptEnabled = true - htmlUnitDriver - } + // You need to configure in Safari -> Develop -> Allowed Remote Automation + safari { + driver = { new SafariDriver() } } + // run via “./gradlew -Dgeb.env=chrome iT” chrome { driver = { new ChromeDriver() } @@ -33,8 +25,17 @@ environments { } } + // run via “./gradlew -Dgeb.env=firefoxHeadless iT” + firefoxHeadless { + driver = { + FirefoxOptions o = new FirefoxOptions() + o.addArguments('-headless') + new FirefoxDriver(o) + } + } + // run via “./gradlew -Dgeb.env=firefox iT” firefox { driver = { new FirefoxDriver() } } -} +} \ No newline at end of file diff --git a/release.sh b/release.sh deleted file mode 100755 index 84e8d40..0000000 --- a/release.sh +++ /dev/null @@ -1,9 +0,0 @@ -rm -rf build/release -mkdir -p build/release -cd build/release -git clone git@github.com:grails-plugins/grails-spring-security-ldap.git -cd grails-spring-security-ldap -grails clean -grails compile - -gradle bintrayUpload --stacktrace diff --git a/settings.gradle b/settings.gradle index 9a69432..d434084 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,11 @@ rootProject.name = 'spring-security-ldap' + +include 'functional-test-app' +include 'misc-functional-test-app-custom_user_details_context_mapper' +include 'misc-functional-test-app-retrieve-db-roles' +include 'misc-functional-test-app-retrieve-group-rules' + +project(':functional-test-app').projectDir = [settingsDir, 'functional-test-app'] as File +project(':misc-functional-test-app-custom_user_details_context_mapper').projectDir = [settingsDir, 'misc-functional-test-app/custom_user_details_context_mapper'] as File +project(':misc-functional-test-app-retrieve-db-roles').projectDir = [settingsDir, 'misc-functional-test-app/retrieve-db-roles'] as File +project(':misc-functional-test-app-retrieve-group-rules').projectDir = [settingsDir, 'misc-functional-test-app/retrieve-group-rules'] as File diff --git a/travis-build.sh b/travis-build.sh deleted file mode 100755 index 18c1ab6..0000000 --- a/travis-build.sh +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env bash - -set -e - -EXIT_STATUS=0 - -echo "TRAVIS_TAG : $TRAVIS_TAG" -echo "TRAVIS_BRANCH : $TRAVIS_BRANCH" -echo "TRAVIS_PULL_REQUEST : $TRAVIS_PULL_REQUEST" - - - -echo "*******************************" -echo "grails-spring-security-ldap" -echo "*******************************" - -./gradlew clean check install --stacktrace --console=plain || EXIT_STATUS=$? - -if [ $EXIT_STATUS -ne 0 ]; then - echo "grails-spring-security-ldap:check failed => exit $EXIT_STATUS" - exit $EXIT_STATUS -fi - -PROJECTS="retrieve-group-rules retrieve-db-roles custom_user_details_context_mapper" - -cd functional-test-app - -./gradlew clean check --stacktrace --console=plain || EXIT_STATUS=$? - -if [ $EXIT_STATUS -ne 0 ]; then - echo "functional-test-app:check failed => exit $EXIT_STATUS" - exit $EXIT_STATUS -fi - -cd .. - -cd misc-functional-test-app - -for project in $PROJECTS; do - - cd $project - - ./gradlew clean check --stacktrace --console=plain || EXIT_STATUS=$? - - if [ $EXIT_STATUS -ne 0 ]; then - echo "$project check failed => exit $EXIT_STATUS" - exit $EXIT_STATUS - fi - - cd .. - -done - -cd .. - -# Only publish if the branch is on master, and it is not a PR -if [[ -n $TRAVIS_TAG ]] || [[ $TRAVIS_BRANCH == 'master' && $TRAVIS_PULL_REQUEST == 'false' ]]; then - echo "Publishing archives for branch $TRAVIS_BRANCH" - if [[ -n $TRAVIS_TAG ]]; then - echo "Pushing build to Bintray" - ./gradlew bintrayUpload || EXIT_STATUS=$? - else - pluginversion=$( ~/.git-credentials - - git clone https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git -b gh-pages gh-pages --single-branch > /dev/null - cd gh-pages - - # If this is the master branch then update the snapshot - if [[ $TRAVIS_BRANCH == 'master' ]]; then - - mkdir -p v4 - cp ../build/docs/index.html v4 - git add v4/index.html - - cp ../build/docs/ghpages.html index.html - git add index.html - - git rm -rf snapshot/ - mkdir -p snapshot - cp ../build/docs/index.html snapshot - git add snapshot/index.html - - fi - - # If there is a tag present then this becomes the latest - if [[ -n $TRAVIS_TAG ]]; then - git rm -rf latest/ - mkdir -p latest - cp ../build/docs/index.html latest - git add latest/* - - version="$TRAVIS_TAG" # eg: v3.0.1 - version=${version:1} # 3.0.1 - majorVersion=${version:0:4} # 3.0. - majorVersion="${majorVersion}x" # 3.0.x - - mkdir -p "$version" - cp -r ../build/docs/index.html "./$version/" - git add "$version/*" - - git rm -rf "$majorVersion" - cp -r ../build/docs/index.html "./$majorVersion/" - git add "$majorVersion/*" - fi - - git commit -a -m "Updating docs for Travis build: https://travis-ci.org/$TRAVIS_REPO_SLUG/builds/$TRAVIS_BUILD_ID" - git push origin HEAD - cd .. - rm -rf gh-pages -fi - -exit $EXIT_STATUS - -EXIT_STATUS=0 \ No newline at end of file diff --git a/version.txt b/version.txt deleted file mode 100644 index 71d2eb1..0000000 --- a/version.txt +++ /dev/null @@ -1 +0,0 @@ -5.0.0-SNAPSHOT From 563ca953f6cea7e18e3b2e37e717bcb389220199 Mon Sep 17 00:00:00 2001 From: Brian Koehmstedt <1261658+bkoehm@users.noreply.github.com> Date: Wed, 13 Nov 2024 08:30:10 -0800 Subject: [PATCH 3/3] Grails 7: GitHub Actions workflow --- .github/workflows/gradle.yml | 51 ++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/gradle.yml diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml new file mode 100644 index 0000000..a0255db --- /dev/null +++ b/.github/workflows/gradle.yml @@ -0,0 +1,51 @@ +name: Java CI +on: + push: + branches: + - '[5-9]+.[0-9]+.x' + pull_request: + branches: + - '[5-9]+.[0-9]+.x' + workflow_dispatch: +jobs: + build: + runs-on: ubuntu-latest + env: + WORKSPACE: ${{ github.workspace }} + GRADLE_OPTS: -Xmx1500m -Dfile.encoding=UTF-8 + steps: + - uses: actions/checkout@v4 + - name: Set up JDK + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: 17 + - name: Run Tests + if: github.event_name == 'pull_request' + id: tests + uses: gradle/gradle-build-action@v2 + with: + arguments: check -Dgeb.env=chromeHeadless + - name: Run Build + if: github.event_name == 'push' + id: build + uses: gradle/gradle-build-action@v2 + env: + GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} + with: + arguments: build -Dgeb.env=chromeHeadless + - name: Publish Test Report + if: steps.build.outcome == 'failure' || steps.tests.outcome == 'failure' + uses: scacap/action-surefire-report@v1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + report_paths: '**/build/test-results/test/TEST-*.xml' + - name: Publish to repo.grails.org + id: publish + uses: gradle/gradle-build-action@v2 + if: steps.build.outcome == 'success' && github.event_name == 'push' + env: + ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} + ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} + with: + arguments: -Dorg.gradle.internal.publish.checksums.insecure=true publish