From 5ef3c1c147b6199c06093ce617c57e90a5c425e6 Mon Sep 17 00:00:00 2001 From: Sushant Date: Tue, 6 Sep 2022 12:03:03 +1000 Subject: [PATCH 1/7] #113 initial update grails4 --- .travis.yml | 5 +- build.gradle | 68 ++++--- gradle.properties | 11 +- gradle/publish.gradle | 32 +++ gradle/wrapper/gradle-wrapper.jar | Bin 54212 -> 55616 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 92 ++++++--- gradlew.bat | 184 ++++++++++-------- grails-app/conf/application.yml | 19 +- .../ala/dashboard/DashboardController.groovy | 2 +- .../groovy/MetadataServiceSpec.groovy | 11 +- .../resources/GebConfig.groovy | 25 +++ .../org/ala/dashboard/CacheServiceSpec.groovy | 6 +- 13 files changed, 292 insertions(+), 166 deletions(-) create mode 100644 gradle/publish.gradle create mode 100644 src/integration-test/resources/GebConfig.groovy diff --git a/.travis.yml b/.travis.yml index 14e3a1f..f4c3fe5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,12 @@ language: groovy jdk: -- openjdk8 +- openjdk11 sudo: false branches: only: - master - dev - - grails3 + - oidc-grails4 before_cache: - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ @@ -21,6 +21,7 @@ after_success: - '[ "${TRAVIS_PULL_REQUEST}" = "false" ] && travis_retry ./gradlew publish' env: global: + - JAVA_TOOL_OPTIONS=-Dhttps.protocols=TLSv1.2 - secure: PhZOxgYEeHTiKBX91OQK66Wuby1N7uJ+6QuqfpP/D/CaYANznICxepHxWyv3j1aQqOM13n+6sIHp+5BW/LMFK6NqxKt0TtNi/zEZfetsYBlrfZoClZPxQIkby5OlONxhFhpRQYd4LIhup04XNZayc0nvPSNjoQJhryA8ahvG5PQ= - secure: Ns1bV2qlVX5hMhUoPg4HcIcQ59i2zznecy2hSfjwp6KTAdzUXLswNROv+iL8uXLsIlEZlkglKsfAYRpta0FLPSsrFay5h7nZuD9L4rMM7nrVRnDW+dBK/RmWUTx8mKNntA4wkvlChuaY7v/vF8K9HvSRUM8UjIdqAtwq9ZaFB1M= diff --git a/build.gradle b/build.gradle index de9c201..fd14dc7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,14 @@ buildscript { repositories { - //mavenLocal() + mavenLocal() maven { url "https://nexus.ala.org.au/content/groups/public/" } maven { url "https://repo.grails.org/grails/core" } } dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" - classpath "com.bertramlabs.plugins:asset-pipeline-gradle:2.14.1" + classpath "gradle.plugin.com.github.erdi.webdriver-binaries:webdriver-binaries-gradle-plugin:2.0" + classpath "com.bertramlabs.plugins:asset-pipeline-gradle:3.2.4" + classpath 'org.grails.plugins:quartz:2.0.13' } } plugins { @@ -23,23 +25,26 @@ apply plugin:"eclipse" apply plugin:"idea" apply plugin:"war" apply plugin:"org.grails.grails-web" +apply plugin:"com.github.erdi.webdriver-binaries" apply plugin:"org.grails.grails-gsp" -apply plugin:"asset-pipeline" -apply from: 'https://raw.githubusercontent.com/AtlasOfLivingAustralia/travis-build-configuration/master/travis_grails_publish.gradle' +apply plugin:"com.bertramlabs.asset-pipeline" + +apply from: "${project.projectDir}/gradle/publish.gradle" repositories { - // mavenLocal() + mavenLocal() maven { url "https://nexus.ala.org.au/content/groups/public/" } maven { url "https://repo.grails.org/grails/core" } } -/*grails { - plugins { - compile project(':ala-bootstrap3') +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" @@ -47,17 +52,23 @@ dependencies { compile "org.springframework.boot:spring-boot-starter-tomcat" compile "org.grails:grails-dependencies" compile "org.grails:grails-web-boot" + compile "org.grails:grails-logging" compile "org.grails.plugins:cache" compile "org.grails.plugins:scaffolding" console "org.grails:grails-console" profile "org.grails.profiles:web" - runtime "com.bertramlabs.plugins:asset-pipeline-grails:2.14.1" - testCompile "org.grails:grails-plugin-testing" + runtime "com.bertramlabs.plugins:asset-pipeline-grails:3.2.4" testCompile "org.grails.plugins:geb" - testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1" - testRuntime "net.sourceforge.htmlunit:htmlunit:2.18" + testRuntime "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion" + testRuntime "org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion" + testRuntime "org.seleniumhq.selenium:selenium-safari-driver:$seleniumSafariDriverVersion" - compile 'org.grails.plugins:external-config:1.1.1' + testCompile "org.seleniumhq.selenium:selenium-remote-driver:$seleniumVersion" + testCompile "org.seleniumhq.selenium:selenium-api:$seleniumVersion" + testCompile "org.seleniumhq.selenium:selenium-support:$seleniumVersion" + testCompile "org.grails:grails-web-testing-support" + + compile 'org.grails.plugins:external-config:2.0.0' runtime 'org.apache.ant:ant:1.7.1' //you can also use runtime runtime 'org.apache.ant:ant-launcher:1.7.1' // compile 'net.sf.opencsv:opencsv:2.3' @@ -72,19 +83,30 @@ dependencies { // compile 'org.grails.grails-plugin-rest:2.3.0.M2' compile 'org.codehaus.groovy:groovy-ant:2.0.0' - compile "org.grails.plugins:ala-bootstrap3:3.2.3" + compile "org.grails.plugins:ala-bootstrap3:4.1.0" compile "org.grails.plugins:grails-google-visualization:2.0" - compile "org.grails.plugins:ala-admin-plugin:2.0" - runtime "org.grails.plugins:ala-auth:3.1.3" - compile 'org.grails.plugins:quartz:2.0.12' -// compile "org.spockframework:spock-core:1.0-groovy-2.4" + compile "org.grails.plugins:ala-admin-plugin:2.3.0" + runtime "org.grails.plugins:ala-auth:5.1.1" + compile 'org.grails.plugins:quartz:2.0.13' + + implementation group: 'com.opencsv', name: 'opencsv', version: '5.7.0' } bootRun { jvmArgs('-Dspring.output.ansi.enabled=always') - // jvmArgs('-Dlocal.config.location=grails-app/conf/application.yml') - addResources = true -// systemProperty 'management.info.git.mode', 'FULL' + sourceResources sourceSets.main +} + +webdriverBinaries { + chromedriver '2.45.0' + geckodriver '0.24.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') } assets { diff --git a/gradle.properties b/gradle.properties index 2ec2ead..d6d0bb9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,8 @@ -grailsVersion=3.2.11 -gormVersion=6.0.12.RELEASE -gradleWrapperVersion=3.4.1 +grailsVersion=4.1.1 +gormVersion=7.0.9 +gradleWrapperVersion=5.0 +gebVersion=2.3 +seleniumVersion=3.14.0 +webdriverBinariesVersion=2.0 +hibernateCoreVersion=5.1.5.Final +seleniumSafariDriverVersion=3.14.0 diff --git a/gradle/publish.gradle b/gradle/publish.gradle new file mode 100644 index 0000000..7357282 --- /dev/null +++ b/gradle/publish.gradle @@ -0,0 +1,32 @@ +apply plugin:"maven-publish" + +publishing { + repositories { + maven { + name 'Nexus' + url "https://nexus.ala.org.au/content/repositories/${project.version.endsWith('-SNAPSHOT') ? 'snapshots' : 'releases' }" + credentials { + username = System.getenv('TRAVIS_DEPLOY_USERNAME') + password = System.getenv('TRAVIS_DEPLOY_PASSWORD') + } + } + } + publications { + mavenJar(MavenPublication) { + pom.withXml { + def pomNode = asNode() + pomNode.dependencyManagement.replaceNode {} + + // simply remove dependencies without a version + // version-less dependencies are handled with dependencyManagement + // see https://github.com/spring-gradle-plugins/dependency-management-plugin/issues/8 for more complete solutions + pomNode.dependencies.dependency.findAll { + it.version.text().isEmpty() + }.each { + it.replaceNode {} + } + } + from components.web + } + } +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 36d5b90f069afa141d0de107f74c178827cea54d..5c2d1cf016b3885f6930543d57b744ea8c220a1a 100644 GIT binary patch literal 55616 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

  • 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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 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" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -30,6 +64,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,26 +75,11 @@ case "`uname`" in 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. @@ -85,7 +105,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +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 @@ -105,8 +125,8 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` JAVACMD=`cygpath --unix "$JAVACMD"` @@ -150,11 +170,19 @@ if $cygwin ; then 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=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +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")" +fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index f955316..24467a1 100755 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,84 +1,100 @@ -@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=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@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= - -@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 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% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="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 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@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=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@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 + +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 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% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="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 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/grails-app/conf/application.yml b/grails-app/conf/application.yml index a566220..7d11b30 100644 --- a/grails-app/conf/application.yml +++ b/grails-app/conf/application.yml @@ -11,8 +11,17 @@ grails: spring: transactionManagement: proxies: false - servlet: - version: 3.0 + jmx: + unique-names: true + management: + endpoints: + enabled-by-default: true + devtools: + restart: + exclude: + - grails-app/views/** + - grails-app/i18n/** + - grails-app/conf/** gorm: # Whether to autowire entities. # Disabled by default for performance reasons. @@ -34,12 +43,6 @@ spring: template: check-template-location: false -# Spring Actuator Endpoints are Disabled by Default -endpoints: - enabled: true - jmx: - enabled: true - --- grails: cors: diff --git a/grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy b/grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy index 33660f9..77b8fb4 100644 --- a/grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy +++ b/grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy @@ -15,8 +15,8 @@ package au.org.ala.dashboard -import au.com.bytecode.opencsv.CSVWriter import grails.converters.JSON +import com.opencsv.CSVWriter class DashboardController { diff --git a/src/integration-test/groovy/MetadataServiceSpec.groovy b/src/integration-test/groovy/MetadataServiceSpec.groovy index 7ca6355..18cab2c 100644 --- a/src/integration-test/groovy/MetadataServiceSpec.groovy +++ b/src/integration-test/groovy/MetadataServiceSpec.groovy @@ -1,20 +1,15 @@ package au.org.ala.dashboard -//import grails.test.spock.IntegrationSpec -import grails.test.mixin.integration.Integration +import grails.testing.services.ServiceUnitTest import org.springframework.beans.factory.annotation.Autowired -import spock.lang.Shared -import grails.test.mixin.TestFor import spock.lang.Specification -@Integration -@TestFor(MetadataService) -class MetadataServiceSpec extends Specification { + +class MetadataServiceSpec extends Specification implements ServiceUnitTest { // @Shared def metadataService @Autowired MetadataService metadataService - def grailsApplication // def cacheService def "test retrieval of states and territories records"() { diff --git a/src/integration-test/resources/GebConfig.groovy b/src/integration-test/resources/GebConfig.groovy new file mode 100644 index 0000000..0d97e35 --- /dev/null +++ b/src/integration-test/resources/GebConfig.groovy @@ -0,0 +1,25 @@ +import org.openqa.selenium.chrome.ChromeDriver +import org.openqa.selenium.chrome.ChromeOptions +import org.openqa.selenium.firefox.FirefoxDriver + +environments { + + // run via “./gradlew -Dgeb.env=chrome iT” + chrome { + driver = { new ChromeDriver() } + } + + // run via “./gradlew -Dgeb.env=chromeHeadless iT” + chromeHeadless { + driver = { + ChromeOptions o = new ChromeOptions() + o.addArguments('headless') + new ChromeDriver(o) + } + } + + // run via “./gradlew -Dgeb.env=firefox iT” + firefox { + driver = { new FirefoxDriver() } + } +} diff --git a/src/test/groovy/au/org/ala/dashboard/CacheServiceSpec.groovy b/src/test/groovy/au/org/ala/dashboard/CacheServiceSpec.groovy index 205cbed..8c9e11e 100644 --- a/src/test/groovy/au/org/ala/dashboard/CacheServiceSpec.groovy +++ b/src/test/groovy/au/org/ala/dashboard/CacheServiceSpec.groovy @@ -1,11 +1,11 @@ package au.org.ala.dashboard -import grails.test.mixin.TestFor +import grails.testing.services.ServiceUnitTest import groovy.time.TimeCategory import spock.lang.Specification -@TestFor(CacheService) -class CacheServiceSpec extends Specification{ + +class CacheServiceSpec extends Specification implements ServiceUnitTest { def setup() { //Initialize cache before each test From 8dcc469b2cd525e8a7779f63115be81e115f7a0d Mon Sep 17 00:00:00 2001 From: Sushant Date: Tue, 6 Sep 2022 14:50:10 +1000 Subject: [PATCH 2/7] #113 adding groovy-dateutil plugin for date diff checks with grails4, removing getLoggerSourceBreakdown method, calling methods, and view as requesting sourceBreakdown without entityUid is no longer supported by logger-service --- build.gradle | 1 + .../ala/dashboard/DashboardController.groovy | 8 +-- .../org/ala/dashboard/MetadataService.groovy | 51 ------------------- grails-app/views/dashboard/index.gsp | 2 - .../panels/downloadsBySourcePanel.gsp | 23 --------- 5 files changed, 2 insertions(+), 83 deletions(-) delete mode 100644 grails-app/views/dashboard/panels/downloadsBySourcePanel.gsp diff --git a/build.gradle b/build.gradle index fd14dc7..812b0ec 100644 --- a/build.gradle +++ b/build.gradle @@ -57,6 +57,7 @@ dependencies { compile "org.grails.plugins:scaffolding" console "org.grails:grails-console" profile "org.grails.profiles:web" + compile "org.codehaus.groovy:groovy-dateutil" runtime "com.bertramlabs.plugins:asset-pipeline-grails:3.2.4" testCompile "org.grails.plugins:geb" testRuntime "org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion" diff --git a/grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy b/grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy index 77b8fb4..55dd474 100644 --- a/grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy +++ b/grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy @@ -178,12 +178,6 @@ class DashboardController { render view: 'panels/empty' } - def downloadsBySourcePanel = { - if (metadataService.getLoggerSourceBreakdown()) - render view: 'panels/downloadsBySourcePanel', model: [loggerSourceBreakdown: metadataService.getLoggerSourceBreakdown()] - else - render view: 'panels/empty' - } def downloadsByUserTypePanel = { if (metadataService.getLoggerEmailBreakdown()) @@ -376,7 +370,7 @@ class DashboardController { typeCounts: metadataService.getTypeStats(), taxaCounts: metadataService.getTaxaCounts(), bhlCounts: metadataService.getBHLCounts(), - volunteerPortalCounts: metadataService.getVolunteerStats(), +// volunteerPortalCounts: metadataService.getVolunteerStats(), occurrenceDownloadByReason: metadataService.getLoggerReasonBreakdown().collect {["Download Reason": it[0], "Events": it[1].trim(), "Records": it[2].trim()]}] //volunteerPortalCounts: metadataService.get('volunteerPortalCounts'), //identifyLifeCounts: metadataService.getIdentifyLifeCounts()] diff --git a/grails-app/services/au/org/ala/dashboard/MetadataService.groovy b/grails-app/services/au/org/ala/dashboard/MetadataService.groovy index 924a8f0..c07c359 100644 --- a/grails-app/services/au/org/ala/dashboard/MetadataService.groovy +++ b/grails-app/services/au/org/ala/dashboard/MetadataService.groovy @@ -54,7 +54,6 @@ class MetadataService { stateConservation : getSpeciesByConservationStatus(), loggerTotals : getLoggerTotals(), loggerReasonBreakdown : getLoggerReasonBreakdown(), -// loggerSourceBreakdown : getLoggerSourceBreakdown(), loggerEmailBreakdown : getLoggerEmailBreakdown(), loggerTemporalBreakdown : getLoggerReasonTemporalBreakdown(), imagesBreakdown : getImagesBreakdown(), @@ -548,56 +547,6 @@ class MetadataService { }) } - def getLoggerSourceBreakdown() { - cacheService.get('loggerSourceBreakdown', { - def results = [] - - // this number includes testing - we need to remove this - def allTimeSourceBreakdown = webService.getJson("${LOGGER_URL}${Constants.WebServices.PARTIAL_URL_LOGGER_SOURCE_BREAKDOWN}").all - - //order by counts - def sortedBreakdowns = allTimeSourceBreakdown.sourceBreakdown.sort { -it.value["events"] } - - //but then place "Other", "Unclassified", "Testing" at the bottom & combined - def other = sortedBreakdowns.get("other") - if (!other) other = [events: 0, records:0] - - def unclassifiedCount = sortedBreakdowns.get("unclassified") - def testingCount = sortedBreakdowns.get("testing") - - if (unclassifiedCount) { - other["events"] = other["events"] + unclassifiedCount["events"] - other["records"] = other["records"] + unclassifiedCount["records"] - } - - //testing events - def testingEvents = 0 - def testingRecords = 0 - - if (testingCount) { - testingEvents = testingCount["events"] as long - testingRecords = testingCount["records"] as long - } - - sortedBreakdowns.remove("other") - sortedBreakdowns.remove("unclassified") - sortedBreakdowns.remove("testing") - sortedBreakdowns.put("other", other) - - for (k in sortedBreakdowns.keySet()) { - def keyMap = sortedBreakdowns[k] - results.add([StringUtils.capitalize(k), format(keyMap["events"] as long), format(keyMap["records"] as long)]) - } - - results.add(["TOTAL", - format((allTimeSourceBreakdown.events as long) - testingEvents), - format((allTimeSourceBreakdown.records as long) - testingRecords)] - ) - - return results - }) - } - def getLoggerReasonTemporalBreakdown() { cacheService.get('loggerReasonBreakdown', { def results = [] diff --git a/grails-app/views/dashboard/index.gsp b/grails-app/views/dashboard/index.gsp index 837cb11..5c7d421 100644 --- a/grails-app/views/dashboard/index.gsp +++ b/grails-app/views/dashboard/index.gsp @@ -78,8 +78,6 @@ - - diff --git a/grails-app/views/dashboard/panels/downloadsBySourcePanel.gsp b/grails-app/views/dashboard/panels/downloadsBySourcePanel.gsp deleted file mode 100644 index e1170e0..0000000 --- a/grails-app/views/dashboard/panels/downloadsBySourcePanel.gsp +++ /dev/null @@ -1,23 +0,0 @@ - \ No newline at end of file From 46b892c858f45f80fa30467d5062b9f2008e89b6 Mon Sep 17 00:00:00 2001 From: Sushant Date: Tue, 6 Sep 2022 17:16:46 +1000 Subject: [PATCH 3/7] #113 adding oidc config, updating volunteer stats data retrival to static file to prevent timeout from digivol due to long response time on /ws/stats.json, removing render of topTenColunteers no longer available via digivol --- grails-app/conf/application.yml | 11 ++++++++-- .../ala/dashboard/DashboardController.groovy | 1 - .../org/ala/dashboard/MetadataService.groovy | 11 ++++------ .../dashboard/panels/volunteerPortalPanel.gsp | 21 ------------------- 4 files changed, 13 insertions(+), 31 deletions(-) diff --git a/grails-app/conf/application.yml b/grails-app/conf/application.yml index 7d11b30..4354928 100644 --- a/grails-app/conf/application.yml +++ b/grails-app/conf/application.yml @@ -112,8 +112,15 @@ privacyPolicy: "https://www.ala.org.au/about/terms-of-use/privacy-policy/" --- security: cas: - uriFilterPattern: "/alaAdmin.*" - uriExclusionFilterPattern: "/images.*,/css.*,/js.*,/less.*" + uriFilterPattern: "/alaAdmin/*" + uriExclusionFilterPattern: "/images.*,/css.*,/js.*,/less.*" + enabled: false + oidc: + enabled: true + discovery-uri: 'https://auth-test.ala.org.au/cas/oidc/.well-known' + clientId: 'change me' + secret: 'change me' + scope: 'openid profile' environments: development: diff --git a/grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy b/grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy index 55dd474..2d2002a 100644 --- a/grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy +++ b/grails-app/controllers/au/org/ala/dashboard/DashboardController.groovy @@ -372,7 +372,6 @@ class DashboardController { bhlCounts: metadataService.getBHLCounts(), // volunteerPortalCounts: metadataService.getVolunteerStats(), occurrenceDownloadByReason: metadataService.getLoggerReasonBreakdown().collect {["Download Reason": it[0], "Events": it[1].trim(), "Records": it[2].trim()]}] - //volunteerPortalCounts: metadataService.get('volunteerPortalCounts'), //identifyLifeCounts: metadataService.getIdentifyLifeCounts()] ['All','Plants','Mammals','Reptiles','Birds','Animals','Arthropods', 'Fishes','Insects','Amphibians','Bacteria','Fungi'].each { diff --git a/grails-app/services/au/org/ala/dashboard/MetadataService.groovy b/grails-app/services/au/org/ala/dashboard/MetadataService.groovy index c07c359..33afe4e 100644 --- a/grails-app/services/au/org/ala/dashboard/MetadataService.groovy +++ b/grails-app/services/au/org/ala/dashboard/MetadataService.groovy @@ -123,13 +123,6 @@ class MetadataService { }) } - def getVolunteerStats() { - cacheService.get('volunteerStats', { - // earliest record - webService.getJson("${VOLUNTEER_URL}${Constants.WebServices.PARTIAL_URL_VOLUNTEER_STATS}") - }) - } - /** * Get cached data for the oldest and newest records and counts of * records by century. @@ -768,6 +761,10 @@ class MetadataService { return cacheService.get(key, { cacheService.loadStaticCacheFromFile(key) }) } + def getVolunteerStats() { + return get('volunteerPortalCounts') + } + def getCollectionsByCategory() { return get('collections') } diff --git a/grails-app/views/dashboard/panels/volunteerPortalPanel.gsp b/grails-app/views/dashboard/panels/volunteerPortalPanel.gsp index e950882..85f681f 100644 --- a/grails-app/views/dashboard/panels/volunteerPortalPanel.gsp +++ b/grails-app/views/dashboard/panels/volunteerPortalPanel.gsp @@ -40,24 +40,3 @@ - - -
    -
    - -
    - - - - - - -
    ${volunteer[0]}
    -
    -
    -
    -
    From 1d81b6cbad46d5b7e13eb80ce12077d6e1b87125 Mon Sep 17 00:00:00 2001 From: Sushant Date: Tue, 6 Sep 2022 17:33:04 +1000 Subject: [PATCH 4/7] #113 adding missing 'roles' scope for alaAdmin page access --- grails-app/conf/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grails-app/conf/application.yml b/grails-app/conf/application.yml index 4354928..ea0b150 100644 --- a/grails-app/conf/application.yml +++ b/grails-app/conf/application.yml @@ -120,7 +120,7 @@ security: discovery-uri: 'https://auth-test.ala.org.au/cas/oidc/.well-known' clientId: 'change me' secret: 'change me' - scope: 'openid profile' + scope: 'openid profile roles' environments: development: From f458998e934d0a8b7919d382943ff68602a9b944 Mon Sep 17 00:00:00 2001 From: Sushant Date: Wed, 7 Sep 2022 10:18:58 +1000 Subject: [PATCH 5/7] #113 fixing integration test for MetadataService --- .../{ => au/org/ala/dashboard}/MetadataServiceSpec.groovy | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename src/integration-test/groovy/{ => au/org/ala/dashboard}/MetadataServiceSpec.groovy (96%) diff --git a/src/integration-test/groovy/MetadataServiceSpec.groovy b/src/integration-test/groovy/au/org/ala/dashboard/MetadataServiceSpec.groovy similarity index 96% rename from src/integration-test/groovy/MetadataServiceSpec.groovy rename to src/integration-test/groovy/au/org/ala/dashboard/MetadataServiceSpec.groovy index 18cab2c..2dc9336 100644 --- a/src/integration-test/groovy/MetadataServiceSpec.groovy +++ b/src/integration-test/groovy/au/org/ala/dashboard/MetadataServiceSpec.groovy @@ -1,13 +1,13 @@ package au.org.ala.dashboard +import grails.testing.mixin.integration.Integration import grails.testing.services.ServiceUnitTest import org.springframework.beans.factory.annotation.Autowired import spock.lang.Specification - +@Integration class MetadataServiceSpec extends Specification implements ServiceUnitTest { - // @Shared def metadataService @Autowired MetadataService metadataService // def cacheService From bee1592f6ae13570a212224ddffc9478d54c7a27 Mon Sep 17 00:00:00 2001 From: Sushant Date: Wed, 7 Sep 2022 11:14:57 +1000 Subject: [PATCH 6/7] #113 updating cacheService failing test --- .../groovy/au/org/ala/dashboard/CacheServiceSpec.groovy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/groovy/au/org/ala/dashboard/CacheServiceSpec.groovy b/src/test/groovy/au/org/ala/dashboard/CacheServiceSpec.groovy index 8c9e11e..68219ab 100644 --- a/src/test/groovy/au/org/ala/dashboard/CacheServiceSpec.groovy +++ b/src/test/groovy/au/org/ala/dashboard/CacheServiceSpec.groovy @@ -60,11 +60,11 @@ class CacheServiceSpec extends Specification implements ServiceUnitTest Date: Wed, 7 Sep 2022 12:16:33 +1000 Subject: [PATCH 7/7] #113 updating spring jmx configs --- grails-app/conf/application.yml | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/grails-app/conf/application.yml b/grails-app/conf/application.yml index ea0b150..068e9fe 100644 --- a/grails-app/conf/application.yml +++ b/grails-app/conf/application.yml @@ -11,17 +11,6 @@ grails: spring: transactionManagement: proxies: false - jmx: - unique-names: true - management: - endpoints: - enabled-by-default: true - devtools: - restart: - exclude: - - grails-app/views/** - - grails-app/i18n/** - - grails-app/conf/** gorm: # Whether to autowire entities. # Disabled by default for performance reasons. @@ -42,7 +31,17 @@ spring: groovy: template: check-template-location: false - + jmx: + unique-names: true + devtools: + restart: + exclude: + - grails-app/views/** + - grails-app/i18n/** + - grails-app/conf/** +management: + endpoints: + enabled-by-default: true --- grails: cors: