diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index cd6e624ec..bf5d293ce 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -57,16 +57,18 @@ dependencies { implementation "org.nosphere.apache.rat:org.nosphere.apache.rat.gradle.plugin:${versions.get('ratVersion')}" implementation "org.gradle.crypto.checksum:org.gradle.crypto.checksum.gradle.plugin:${versions.get('gradleCryptoChecksumVersion')}" - testImplementation 'org.spockframework:spock-core' + testImplementation 'org.spockframework:spock-core', { + exclude(group: 'org.codehaus.groovy') // Use Gradle provided version because: Could not resolve org.codehaus.groovy:groovy:3.0.12 + } + testRuntimeOnly 'org.junit.platform:junit-platform-launcher', { + // In Gradle 9, this needs to be declared + // https://docs.gradle.org/8.3/userguide/upgrading_version_8.html#test_framework_implementation_dependencies + } } tasks.withType(Test).configureEach { onlyIf { - ![ - 'skipTests' - ].find { - project.hasProperty(it) - } + !project.hasProperty('skipTests') } useJUnitPlatform() diff --git a/gradle.properties b/gradle.properties index d2a17e35b..a57df120d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,12 +17,9 @@ # under the License. # projectVersion=7.0.0-SNAPSHOT -grailsVersion=7.0.0-SNAPSHOT +grailsVersion=7.0.0-M5 javaVersion=17 -# TODO: This is a work around since the bom does not support exclusions and spring forces groovy version 4.0.26 -groovy.version=4.0.27 - unboundidLdapSdk=7.0.2 apacheDsVersion=1.5.4 asciidoctorGradlePluginVersion=4.0.4 diff --git a/gradle/plugin-config.gradle b/gradle/plugin-config.gradle index 16b76bb15..c7a94a745 100644 --- a/gradle/plugin-config.gradle +++ b/gradle/plugin-config.gradle @@ -17,11 +17,13 @@ * under the License. */ +import org.grails.gradle.plugin.core.GrailsExtension + // The plugins do not have an Application class and are not runnable by themselves tasks.named('bootRun') { enabled = false } tasks.named('findMainClass') { enabled = false } -grails { - // turn off dependency management so we *know* we're testing with the right versions and not from a remote repository - springDependencyManagement = false +extensions.configure(GrailsExtension) { + // Explicit `it` is required in extension configuration blocks + it.springDependencyManagement = false } \ No newline at end of file diff --git a/gradle/test-config.gradle b/gradle/test-config.gradle index b31774371..641cfd41f 100644 --- a/gradle/test-config.gradle +++ b/gradle/test-config.gradle @@ -17,6 +17,8 @@ * under the License. */ +import org.grails.gradle.plugin.core.GrailsExtension + dependencies { // In Gradle 9, this needs to be declared // https://docs.gradle.org/8.3/userguide/upgrading_version_8.html#test_framework_implementation_dependencies @@ -25,11 +27,7 @@ dependencies { tasks.withType(Test).configureEach { onlyIf { - ![ - 'skipTests' - ].find { - project.hasProperty(it) - } + !project.hasProperty('skipTests') } useJUnitPlatform() @@ -42,15 +40,14 @@ tasks.withType(Test).configureEach { tasks.named('integrationTest', Test) { onlyIf { - ![ - 'skipTests' - ].find { - project.hasProperty(it) - } + !project.hasProperty('skipTests') } - systemProperty 'geb.build.reportsDir', reporting.file("$project.projectDir/build/geb-reports") - systemProperties System.properties + systemProperty('geb.build.reportsDir', reporting.file("$projectDir/build/geb-reports")) + systemProperty('grails.geb.reporting.directory', reporting.file("$projectDir/build/geb-reports").canonicalFile.absolutePath) + // systemProperty('grails.geb.recording.mode', 'RECORD_ALL') + systemProperties(System.properties) + doFirst { logger.quiet( '\n - Running tests for configuration: {} and Grails: {}', @@ -58,4 +55,12 @@ tasks.named('integrationTest', Test) { grailsVersion ) } +} + +extensions.configure(GrailsExtension) { + // Explicit `it` is required in extension configuration blocks + + // turn off dependency management so we *know* we're testing with the right + // versions and not from a remote repository + it.springDependencyManagement = false } \ No newline at end of file diff --git a/plugin-acl/examples/functional-test-app/src/integration-test/groovy/pages/LoginPage.groovy b/plugin-acl/examples/functional-test-app/src/integration-test/groovy/pages/LoginPage.groovy index 4b1ec44b7..1120f3004 100644 --- a/plugin-acl/examples/functional-test-app/src/integration-test/groovy/pages/LoginPage.groovy +++ b/plugin-acl/examples/functional-test-app/src/integration-test/groovy/pages/LoginPage.groovy @@ -25,7 +25,7 @@ class LoginPage extends Page { static url = 'login/auth' - static at = { waitFor { title == 'Login' } } + static at = { title == 'Login' } static content = { loginForm { $('form') } diff --git a/plugin-core/examples/functional-test-app/src/integration-test/groovy/pages/LoginPage.groovy b/plugin-core/examples/functional-test-app/src/integration-test/groovy/pages/LoginPage.groovy index dc5524518..4503c1ea5 100644 --- a/plugin-core/examples/functional-test-app/src/integration-test/groovy/pages/LoginPage.groovy +++ b/plugin-core/examples/functional-test-app/src/integration-test/groovy/pages/LoginPage.groovy @@ -25,7 +25,7 @@ class LoginPage extends Page { static url = 'login/auth' - static at = { waitFor { title == 'Login' } } + static at = { title == 'Login' } static content = { loginForm { $('form') } diff --git a/plugin-core/examples/integration-test-app/build.gradle b/plugin-core/examples/integration-test-app/build.gradle index 2186aae02..85f01f2ac 100644 --- a/plugin-core/examples/integration-test-app/build.gradle +++ b/plugin-core/examples/integration-test-app/build.gradle @@ -46,9 +46,6 @@ dependencies { integrationTestImplementation 'org.apache.grails:grails-testing-support-web', { // @Integration } - integrationTestImplementation 'org.sitemesh:sitemesh', { - // SiteMeshFilter - } integrationTestImplementation 'org.springframework:spring-test', { // MockFilterChain, MockHttpServletRequest, MockHttpServletResponse } diff --git a/plugin-core/examples/integration-test-app/src/integration-test/groovy/grails/plugin/springsecurity/SpringSecurityUtilsIntegrationSpec.groovy b/plugin-core/examples/integration-test-app/src/integration-test/groovy/grails/plugin/springsecurity/SpringSecurityUtilsIntegrationSpec.groovy index ef4197ed9..36814823a 100644 --- a/plugin-core/examples/integration-test-app/src/integration-test/groovy/grails/plugin/springsecurity/SpringSecurityUtilsIntegrationSpec.groovy +++ b/plugin-core/examples/integration-test-app/src/integration-test/groovy/grails/plugin/springsecurity/SpringSecurityUtilsIntegrationSpec.groovy @@ -18,7 +18,6 @@ */ package grails.plugin.springsecurity -import org.sitemesh.webapp.SiteMeshFilter import org.springframework.web.filter.FormContentFilter import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROTOTYPE @@ -90,7 +89,7 @@ class SpringSecurityUtilsIntegrationSpec extends AbstractIntegrationSpec { def map = SpringSecurityUtils.configuredOrderedFilters expect: - 11 == map.size() + 10 == map.size() map[Integer.MIN_VALUE + 10] instanceof SecurityRequestHolderFilter map[SecurityFilterPosition.SECURITY_CONTEXT_FILTER.order] instanceof SecurityContextPersistenceFilter map[SecurityFilterPosition.LOGOUT_FILTER.order] instanceof MutableLogoutFilter @@ -99,7 +98,6 @@ class SpringSecurityUtilsIntegrationSpec extends AbstractIntegrationSpec { map[SecurityFilterPosition.REMEMBER_ME_FILTER.order] instanceof GrailsRememberMeAuthenticationFilter map[SecurityFilterPosition.ANONYMOUS_FILTER.order] instanceof GrailsAnonymousAuthenticationFilter map[SecurityFilterPosition.EXCEPTION_TRANSLATION_FILTER.order-10] instanceof FormContentFilter - map[SecurityFilterPosition.EXCEPTION_TRANSLATION_FILTER.order-4] instanceof SiteMeshFilter map[SecurityFilterPosition.EXCEPTION_TRANSLATION_FILTER.order] instanceof ExceptionTranslationFilter map[SecurityFilterPosition.FILTER_SECURITY_INTERCEPTOR.order] instanceof FilterSecurityInterceptor @@ -128,7 +126,7 @@ class SpringSecurityUtilsIntegrationSpec extends AbstractIntegrationSpec { SpringSecurityUtils.clientRegisterFilter 'dummyFilter', SecurityFilterPosition.LOGOUT_FILTER.order + 10 then: - 12 == map.size() + 11 == map.size() map[SecurityFilterPosition.LOGOUT_FILTER.order + 10] instanceof DummyFilter when: @@ -144,9 +142,8 @@ class SpringSecurityUtilsIntegrationSpec extends AbstractIntegrationSpec { filters[6] instanceof GrailsRememberMeAuthenticationFilter filters[7] instanceof GrailsAnonymousAuthenticationFilter filters[8] instanceof FormContentFilter - filters[9] instanceof SiteMeshFilter - filters[10] instanceof ExceptionTranslationFilter - filters[11] instanceof FilterSecurityInterceptor + filters[9] instanceof ExceptionTranslationFilter + filters[10] instanceof FilterSecurityInterceptor } void 'reauthenticate'() { diff --git a/plugin-core/examples/misc-functional-test-app/grails-spring-security-group/src/integration-test/groovy/demo/LoginPage.groovy b/plugin-core/examples/misc-functional-test-app/grails-spring-security-group/src/integration-test/groovy/demo/LoginPage.groovy index 64c54945a..113ef7ff3 100644 --- a/plugin-core/examples/misc-functional-test-app/grails-spring-security-group/src/integration-test/groovy/demo/LoginPage.groovy +++ b/plugin-core/examples/misc-functional-test-app/grails-spring-security-group/src/integration-test/groovy/demo/LoginPage.groovy @@ -24,7 +24,7 @@ import geb.Page class LoginPage extends Page { static url = "login/auth" - static at = { waitFor { title == 'Login' } } + static at = { title == 'Login' } static content = { loginButton { $("#submit", 0) } diff --git a/plugin-core/examples/misc-functional-test-app/grails-spring-security-hierarchical-roles/src/integration-test/groovy/demo/LoginPage.groovy b/plugin-core/examples/misc-functional-test-app/grails-spring-security-hierarchical-roles/src/integration-test/groovy/demo/LoginPage.groovy index 023e8cedc..cc808888f 100644 --- a/plugin-core/examples/misc-functional-test-app/grails-spring-security-hierarchical-roles/src/integration-test/groovy/demo/LoginPage.groovy +++ b/plugin-core/examples/misc-functional-test-app/grails-spring-security-hierarchical-roles/src/integration-test/groovy/demo/LoginPage.groovy @@ -24,7 +24,7 @@ import geb.Page class LoginPage extends Page { static url = "login/auth" - static at = { waitFor { title == 'Login' } } + static at = { title == 'Login' } static content = { loginButton { $("#submit", 0) } diff --git a/plugin-ldap/examples/custom-user-details-context-mapper/src/integration-test/groovy/pages/LoginPage.groovy b/plugin-ldap/examples/custom-user-details-context-mapper/src/integration-test/groovy/pages/LoginPage.groovy index 4b1ec44b7..1120f3004 100644 --- a/plugin-ldap/examples/custom-user-details-context-mapper/src/integration-test/groovy/pages/LoginPage.groovy +++ b/plugin-ldap/examples/custom-user-details-context-mapper/src/integration-test/groovy/pages/LoginPage.groovy @@ -25,7 +25,7 @@ class LoginPage extends Page { static url = 'login/auth' - static at = { waitFor { title == 'Login' } } + static at = { title == 'Login' } static content = { loginForm { $('form') } diff --git a/plugin-ldap/examples/functional-test-app/src/integration-test/groovy/pages/LoginPage.groovy b/plugin-ldap/examples/functional-test-app/src/integration-test/groovy/pages/LoginPage.groovy index 4b1ec44b7..1120f3004 100644 --- a/plugin-ldap/examples/functional-test-app/src/integration-test/groovy/pages/LoginPage.groovy +++ b/plugin-ldap/examples/functional-test-app/src/integration-test/groovy/pages/LoginPage.groovy @@ -25,7 +25,7 @@ class LoginPage extends Page { static url = 'login/auth' - static at = { waitFor { title == 'Login' } } + static at = { title == 'Login' } static content = { loginForm { $('form') } diff --git a/plugin-ldap/examples/retrieve-db-roles/build.gradle b/plugin-ldap/examples/retrieve-db-roles/build.gradle index e3985586d..6e822fa23 100644 --- a/plugin-ldap/examples/retrieve-db-roles/build.gradle +++ b/plugin-ldap/examples/retrieve-db-roles/build.gradle @@ -37,6 +37,9 @@ dependencies { implementation 'org.webjars:bootstrap:4.1.3' implementation 'org.webjars:jquery:3.3.1' + // in-memory ldap server for testing + implementation "com.unboundid:unboundid-ldapsdk:$unboundidLdapSdk" + runtimeOnly 'cloud.wondrify:asset-pipeline-grails' runtimeOnly 'com.h2database:h2' runtimeOnly 'com.zaxxer:HikariCP' diff --git a/plugin-ldap/examples/retrieve-db-roles/grails-app/conf/application.groovy b/plugin-ldap/examples/retrieve-db-roles/grails-app/conf/application.groovy index 4d95b4d8e..ffe573786 100644 --- a/plugin-ldap/examples/retrieve-db-roles/grails-app/conf/application.groovy +++ b/plugin-ldap/examples/retrieve-db-roles/grails-app/conf/application.groovy @@ -47,12 +47,11 @@ grails { authorityJoinClassName = 'com.test.UserRole' } - // http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/ ldap { context { - managerDn = 'cn=read-only-admin,dc=example,dc=com' - managerPassword = 'password' - server = 'ldap://ldap.forumsys.com:389/' //'ldap://[ip]:[port]/' + managerDn = 'cn=admin,dc=example,dc=com' + managerPassword = 'secret' + server = System.getProperty('grails.test.ldap.url') } authorities { ignorePartialResultException = true diff --git a/plugin-ldap/examples/retrieve-db-roles/grails-app/init/com/test/Application.groovy b/plugin-ldap/examples/retrieve-db-roles/grails-app/init/com/test/Application.groovy index 56e851526..46299ef7e 100644 --- a/plugin-ldap/examples/retrieve-db-roles/grails-app/init/com/test/Application.groovy +++ b/plugin-ldap/examples/retrieve-db-roles/grails-app/init/com/test/Application.groovy @@ -19,6 +19,12 @@ package com.test +import com.unboundid.ldap.listener.InMemoryDirectoryServer +import com.unboundid.ldap.listener.InMemoryDirectoryServerConfig +import com.unboundid.ldap.listener.InMemoryListenerConfig +import com.unboundid.ldap.sdk.Attribute +import com.unboundid.ldap.sdk.Entry + import grails.boot.GrailsApp import grails.boot.config.GrailsAutoConfiguration @@ -26,7 +32,122 @@ import groovy.transform.CompileStatic @CompileStatic class Application extends GrailsAutoConfiguration { + + static InMemoryDirectoryServer directoryServer + static private Entry scientistsUnit + static void main(String[] args) { + def config = new InMemoryDirectoryServerConfig('dc=example,dc=com') + config.addAdditionalBindCredentials('cn=admin,dc=example,dc=com', 'secret') + config.setListenerConfigs( + InMemoryListenerConfig.createLDAPConfig( + 'default', + null, + 0, + null, + false, + false + ) + ) + + directoryServer = new InMemoryDirectoryServer(config) + def base = new Entry( + 'dc=example,dc=com', + new Attribute('objectClass', 'top', 'domain'), + new Attribute('dc', 'example') + ) + directoryServer.add(base) + + def people = new Entry( + 'ou=people,dc=example,dc=com', + new Attribute('objectClass', 'top', 'organizationalUnit'), + new Attribute('ou', 'people') + ) + directoryServer.add(people) + + def mathematiciansUnit = new Entry( + 'ou=mathematicians,dc=example,dc=com', + new Attribute('objectClass', 'top', 'organizationalUnit'), + new Attribute('ou', 'mathematicians') + ) + directoryServer.add(mathematiciansUnit) + + scientistsUnit = new Entry( + 'ou=scientists,dc=example,dc=com', + new Attribute('objectClass', 'top', 'organizationalUnit'), + new Attribute('ou', 'scientists') + ) + directoryServer.add(scientistsUnit) + + def jane = new Entry( + 'uid=jane,ou=people,dc=example,dc=com', + new Attribute('objectClass', 'inetOrgPerson'), + new Attribute('uid', 'jane'), + new Attribute('cn', 'Jane Doe'), + new Attribute('sn', 'Doe'), + new Attribute('mail', 'jane@example.com'), + new Attribute('telephoneNumber', '+1 555 111 2222'), + new Attribute('userPassword', 'password') + ) + directoryServer.add(jane) + + ['riemann', 'gauss', 'euler', 'euclid'].each { uid -> + directoryServer.add(new Entry( + "uid=$uid,ou=mathematicians,dc=example,dc=com" as String, + new Attribute('objectClass', 'inetOrgPerson'), + new Attribute('uid', uid), + new Attribute('cn', uid.capitalize()), + new Attribute('sn', uid.capitalize()), + new Attribute('userPassword', 'password') + )) + } + + def mathGroup = new Entry( + 'cn=mathematicians,ou=mathematicians,dc=example,dc=com', + new Attribute('objectClass', 'top', 'groupOfUniqueNames'), + new Attribute('cn', 'mathematicians'), + new Attribute('uniqueMember', + 'uid=riemann,ou=mathematicians,dc=example,dc=com', + 'uid=gauss,ou=mathematicians,dc=example,dc=com', + 'uid=euler,ou=mathematicians,dc=example,dc=com', + 'uid=euclid,ou=mathematicians,dc=example,dc=com' + ) + ) + directoryServer.add(mathGroup) + + ['einstein', 'newton', 'galieleo', 'tesla'].each { uid -> + directoryServer.add(new Entry( + "uid=$uid,ou=scientists,dc=example,dc=com" as String, + new Attribute('objectClass', 'inetOrgPerson'), + new Attribute('uid', uid), + new Attribute('cn', uid.capitalize()), + new Attribute('sn', uid.capitalize()), + new Attribute('userPassword', 'password') + )) + } + def scientistGroup = new Entry( + 'cn=scientists,ou=scientists,dc=example,dc=com', + new Attribute('objectClass', 'top', 'groupOfUniqueNames'), + new Attribute('cn', 'scientists'), + new Attribute('uniqueMember', + 'uid=einstein,ou=scientists,dc=example,dc=com', + 'uid=newton,ou=scientists,dc=example,dc=com', + 'uid=galieleo,ou=scientists,dc=example,dc=com', + 'uid=tesla,ou=scientists,dc=example,dc=com' + ) + ) + directoryServer.add(scientistGroup) + directoryServer.startListening() + System.setProperty('grails.test.ldap.url', "ldap://localhost:$directoryServer.listenPort") + GrailsApp.run(Application, args) } + + @Override + void onShutdown(Map event) { + if (directoryServer) { + directoryServer.close() + directoryServer = null + } + } } \ No newline at end of file diff --git a/plugin-ldap/examples/retrieve-db-roles/src/integration-test/groovy/pages/LoginPage.groovy b/plugin-ldap/examples/retrieve-db-roles/src/integration-test/groovy/pages/LoginPage.groovy index 4b1ec44b7..1120f3004 100644 --- a/plugin-ldap/examples/retrieve-db-roles/src/integration-test/groovy/pages/LoginPage.groovy +++ b/plugin-ldap/examples/retrieve-db-roles/src/integration-test/groovy/pages/LoginPage.groovy @@ -25,7 +25,7 @@ class LoginPage extends Page { static url = 'login/auth' - static at = { waitFor { title == 'Login' } } + static at = { title == 'Login' } static content = { loginForm { $('form') } diff --git a/plugin-ldap/examples/retrieve-group-roles/src/integration-test/groovy/pages/LoginPage.groovy b/plugin-ldap/examples/retrieve-group-roles/src/integration-test/groovy/pages/LoginPage.groovy index 4b1ec44b7..1120f3004 100644 --- a/plugin-ldap/examples/retrieve-group-roles/src/integration-test/groovy/pages/LoginPage.groovy +++ b/plugin-ldap/examples/retrieve-group-roles/src/integration-test/groovy/pages/LoginPage.groovy @@ -25,7 +25,7 @@ class LoginPage extends Page { static url = 'login/auth' - static at = { waitFor { title == 'Login' } } + static at = { title == 'Login' } static content = { loginForm { $('form') } diff --git a/plugin-ui/examples/extended/grails-app/views/layouts/register.gsp b/plugin-ui/examples/extended/grails-app/views/layouts/register.gsp index 391f685dc..9af92abf3 100644 --- a/plugin-ui/examples/extended/grails-app/views/layouts/register.gsp +++ b/plugin-ui/examples/extended/grails-app/views/layouts/register.gsp @@ -19,7 +19,6 @@ - <g:layoutTitle/> diff --git a/plugin-ui/examples/extended/grails-app/views/layouts/springSecurityUI.gsp b/plugin-ui/examples/extended/grails-app/views/layouts/springSecurityUI.gsp index e001b700e..908bc6c32 100644 --- a/plugin-ui/examples/extended/grails-app/views/layouts/springSecurityUI.gsp +++ b/plugin-ui/examples/extended/grails-app/views/layouts/springSecurityUI.gsp @@ -19,7 +19,6 @@ - <g:layoutTitle/> diff --git a/plugin-ui/examples/extended/src/integration-test/groovy/page/aclSid/AclSidCreatePage.groovy b/plugin-ui/examples/extended/src/integration-test/groovy/page/aclSid/AclSidCreatePage.groovy index e3c10c3de..6827b8cba 100644 --- a/plugin-ui/examples/extended/src/integration-test/groovy/page/aclSid/AclSidCreatePage.groovy +++ b/plugin-ui/examples/extended/src/integration-test/groovy/page/aclSid/AclSidCreatePage.groovy @@ -27,7 +27,7 @@ class AclSidCreatePage extends CreatePage { static url = 'aclSid/create' static typeName = { 'AclSid' } - static at = { waitFor { title == 'Create AclSid' } } + static at = { title == 'Create AclSid' } static content = { sid { $(name: 'sid').module(TextInput) } principal { $(name: 'principal').module(Checkbox) } diff --git a/plugin-ui/examples/extended/src/integration-test/groovy/page/aclSid/AclSidEditPage.groovy b/plugin-ui/examples/extended/src/integration-test/groovy/page/aclSid/AclSidEditPage.groovy index 82ec53647..ba1e4a864 100644 --- a/plugin-ui/examples/extended/src/integration-test/groovy/page/aclSid/AclSidEditPage.groovy +++ b/plugin-ui/examples/extended/src/integration-test/groovy/page/aclSid/AclSidEditPage.groovy @@ -27,7 +27,7 @@ class AclSidEditPage extends EditPage { static url = 'aclSid/edit' static typeName = { 'AclSid' } - static at = { waitFor { title == 'Edit AclSid' } } + static at = { title == 'Edit AclSid' } static content = { sid { $(name: 'sid').module(TextInput) } principal { $(name: 'principal').module(Checkbox) } diff --git a/plugin-ui/examples/extended/src/integration-test/groovy/page/aclSid/AclSidSearchPage.groovy b/plugin-ui/examples/extended/src/integration-test/groovy/page/aclSid/AclSidSearchPage.groovy index 228bf3de1..003266e1b 100644 --- a/plugin-ui/examples/extended/src/integration-test/groovy/page/aclSid/AclSidSearchPage.groovy +++ b/plugin-ui/examples/extended/src/integration-test/groovy/page/aclSid/AclSidSearchPage.groovy @@ -27,7 +27,7 @@ class AclSidSearchPage extends SearchPage { static url = 'aclSid/search' static typeName = { 'AclSid' } - static at = { waitFor { title == 'AclSid Search' } } + static at = { title == 'AclSid Search' } static content = { sid { $(name: 'sid').module(TextInput) } principal { $(name: 'principal').module(RadioButtons) } diff --git a/plugin-ui/examples/extended/src/integration-test/groovy/page/register/ForgotPasswordPage.groovy b/plugin-ui/examples/extended/src/integration-test/groovy/page/register/ForgotPasswordPage.groovy index a305438fa..b56020a1c 100644 --- a/plugin-ui/examples/extended/src/integration-test/groovy/page/register/ForgotPasswordPage.groovy +++ b/plugin-ui/examples/extended/src/integration-test/groovy/page/register/ForgotPasswordPage.groovy @@ -25,7 +25,7 @@ import page.AbstractSecurityPage class ForgotPasswordPage extends AbstractSecurityPage { static url = 'register/forgotPassword' - static at = { waitFor { title == 'Forgot Password' } } + static at = { title == 'Forgot Password' } static content = { form { $('forgotPasswordForm') } username { $(name: 'username').module(TextInput) } diff --git a/plugin-ui/examples/extended/src/integration-test/groovy/page/register/SecurityQuestionsPage.groovy b/plugin-ui/examples/extended/src/integration-test/groovy/page/register/SecurityQuestionsPage.groovy index 9edda1478..4d78a4949 100644 --- a/plugin-ui/examples/extended/src/integration-test/groovy/page/register/SecurityQuestionsPage.groovy +++ b/plugin-ui/examples/extended/src/integration-test/groovy/page/register/SecurityQuestionsPage.groovy @@ -25,7 +25,7 @@ import page.AbstractSecurityPage class SecurityQuestionsPage extends AbstractSecurityPage { static url = 'register/securityQuestions' - static at = { waitFor { title == 'Security Questions' } } + static at = { title == 'Security Questions' } static content = { form { $('securityQuestionsForm') } question1 { $('#myAnswer1').module(TextInput) } diff --git a/plugin-ui/examples/extended/src/integration-test/groovy/page/registrationCode/RegistrationCodeSearchPage.groovy b/plugin-ui/examples/extended/src/integration-test/groovy/page/registrationCode/RegistrationCodeSearchPage.groovy index fe059ad43..72341e529 100644 --- a/plugin-ui/examples/extended/src/integration-test/groovy/page/registrationCode/RegistrationCodeSearchPage.groovy +++ b/plugin-ui/examples/extended/src/integration-test/groovy/page/registrationCode/RegistrationCodeSearchPage.groovy @@ -26,7 +26,7 @@ class RegistrationCodeSearchPage extends SearchPage { static url = 'registrationCode/search' static typeName = { 'Registration Code' } - static at = { waitFor { title == 'Registration Code Search' } } + static at = { title == 'Registration Code Search' } static content = { token { $(name: 'token').module(TextInput) } username { $('#username').module(TextInput) } diff --git a/plugin-ui/examples/extended/src/integration-test/groovy/page/requestmap/RequestmapSearchPage.groovy b/plugin-ui/examples/extended/src/integration-test/groovy/page/requestmap/RequestmapSearchPage.groovy index 4c123e128..802481c5b 100644 --- a/plugin-ui/examples/extended/src/integration-test/groovy/page/requestmap/RequestmapSearchPage.groovy +++ b/plugin-ui/examples/extended/src/integration-test/groovy/page/requestmap/RequestmapSearchPage.groovy @@ -26,7 +26,7 @@ class RequestmapSearchPage extends SearchPage { static url = 'requestmap/search' static typeName = { 'Requestmap' } - static at = { waitFor { title == 'Requestmap Search' } } + static at = { title == 'Requestmap Search' } static content = { configAttribute { $(name: 'configAttribute').module(TextInput) } urlPattern { $(name: 'url').module(TextInput) } diff --git a/plugin-ui/examples/extended/src/integration-test/groovy/page/role/RoleSearchPage.groovy b/plugin-ui/examples/extended/src/integration-test/groovy/page/role/RoleSearchPage.groovy index 02f7e08da..29283e894 100644 --- a/plugin-ui/examples/extended/src/integration-test/groovy/page/role/RoleSearchPage.groovy +++ b/plugin-ui/examples/extended/src/integration-test/groovy/page/role/RoleSearchPage.groovy @@ -26,7 +26,7 @@ class RoleSearchPage extends SearchPage { static url = 'role/search' static typeName = { 'Role' } - static at = { waitFor { title == 'Role Search' } } + static at = { title == 'Role Search' } static content = { authority { $(name: 'authority').module(TextInput) } } diff --git a/plugin-ui/examples/extended/src/integration-test/groovy/page/user/UserSearchPage.groovy b/plugin-ui/examples/extended/src/integration-test/groovy/page/user/UserSearchPage.groovy index a20179383..75fbc271e 100644 --- a/plugin-ui/examples/extended/src/integration-test/groovy/page/user/UserSearchPage.groovy +++ b/plugin-ui/examples/extended/src/integration-test/groovy/page/user/UserSearchPage.groovy @@ -27,7 +27,7 @@ class UserSearchPage extends SearchPage { static url = 'user/search' static typeName = { 'User' } - static at = { waitFor { title == 'User Search' } } + static at = { title == 'User Search' } static content = { username { $('#username').module(TextInput) } enabled { $(name: 'enabled').module(RadioButtons) } diff --git a/plugin-ui/examples/simple/build.gradle b/plugin-ui/examples/simple/build.gradle index 29fa44939..ef89954d3 100644 --- a/plugin-ui/examples/simple/build.gradle +++ b/plugin-ui/examples/simple/build.gradle @@ -31,6 +31,8 @@ dependencies { implementation project(':core-plugin') implementation project(':ui-plugin') implementation 'org.apache.grails:grails-core' + implementation 'org.apache.grails:grails-gsp' + implementation 'org.apache.grails.views:grails-layout' implementation 'org.apache.grails:grails-interceptors' implementation 'org.apache.grails:grails-databinding' implementation 'org.apache.grails:grails-data-hibernate5' diff --git a/plugin-ui/examples/simple/grails-app/views/layouts/register.gsp b/plugin-ui/examples/simple/grails-app/views/layouts/register.gsp index 391f685dc..9af92abf3 100644 --- a/plugin-ui/examples/simple/grails-app/views/layouts/register.gsp +++ b/plugin-ui/examples/simple/grails-app/views/layouts/register.gsp @@ -19,7 +19,6 @@ - <g:layoutTitle/> diff --git a/plugin-ui/examples/simple/grails-app/views/layouts/springSecurityUI.gsp b/plugin-ui/examples/simple/grails-app/views/layouts/springSecurityUI.gsp index e001b700e..908bc6c32 100644 --- a/plugin-ui/examples/simple/grails-app/views/layouts/springSecurityUI.gsp +++ b/plugin-ui/examples/simple/grails-app/views/layouts/springSecurityUI.gsp @@ -19,7 +19,6 @@ - <g:layoutTitle/> diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/CreatePage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/CreatePage.groovy index 9db039dcb..266899a16 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/CreatePage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/CreatePage.groovy @@ -21,7 +21,7 @@ package page abstract class CreatePage extends AbstractSecurityPage { - static at = { waitFor { title == "Create ${typeName()}" } } + static at = { title == "Create ${typeName()}" } static content = { form { $('createForm') } submitBtn { $('a', id: 'create') } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/EditPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/EditPage.groovy index e80ec1b71..3ada96551 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/EditPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/EditPage.groovy @@ -21,7 +21,7 @@ package page abstract class EditPage extends AbstractSecurityPage { - static at = { waitFor { title == "Edit ${typeName()}" } } + static at = { title == "Edit ${typeName()}" } static content = { form { $('editForm') } submitBtn { $('a', id: 'update') } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/SearchPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/SearchPage.groovy index 7887b334d..97dc26ec9 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/SearchPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/SearchPage.groovy @@ -21,7 +21,7 @@ package page abstract class SearchPage extends AbstractSecurityPage { - static at = { waitFor { title == "${typeName()} Search" } } + static at = { title == "${typeName()} Search" } static atCheckWaiting = true static content = { form { $('search') } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclClass/AclClassCreatePage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclClass/AclClassCreatePage.groovy index 7c24ee065..8ea8edf77 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclClass/AclClassCreatePage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclClass/AclClassCreatePage.groovy @@ -26,7 +26,7 @@ class AclClassCreatePage extends CreatePage { static url = 'aclClass/create' static typeName = { 'AclClass' } - static at = { waitFor { title == 'Create AclClass' } } + static at = { title == 'Create AclClass' } static content = { className { $(name: 'className').module(TextInput) } } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclClass/AclClassEditPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclClass/AclClassEditPage.groovy index d68d37662..d36a34136 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclClass/AclClassEditPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclClass/AclClassEditPage.groovy @@ -26,7 +26,7 @@ class AclClassEditPage extends EditPage { static url = 'aclClass/edit' static typeName = { 'AclClass' } - static at = { waitFor { title == 'Edit AclClass' } } + static at = { title == 'Edit AclClass' } static content = { className { $(name: 'className').module(TextInput) } } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclClass/AclClassSearchPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclClass/AclClassSearchPage.groovy index dddce9ad7..55b3769c3 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclClass/AclClassSearchPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclClass/AclClassSearchPage.groovy @@ -26,7 +26,7 @@ class AclClassSearchPage extends SearchPage { static url = 'aclClass/search' static typeName = { 'AclClass' } - static at = { waitFor { title == 'AclClass Search' } } + static at = { title == 'AclClass Search' } static content = { className { $(name: 'className').module(TextInput) } } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclEntry/AclEntryCreatePage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclEntry/AclEntryCreatePage.groovy index 2b5cb7297..61e624839 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclEntry/AclEntryCreatePage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclEntry/AclEntryCreatePage.groovy @@ -28,7 +28,7 @@ class AclEntryCreatePage extends CreatePage { static url = 'aclEntry/create' static typeName = { 'AclEntry' } - static at = { waitFor { title == 'Create AclEntry' } } + static at = { title == 'Create AclEntry' } static content = { aclObjectIdentityId { $(name: 'aclObjectIdentity.id').module(TextInput) } aceOrder { $(name: 'aceOrder').module(TextInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclEntry/AclEntryEditPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclEntry/AclEntryEditPage.groovy index 7c4faf09a..3d3351121 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclEntry/AclEntryEditPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclEntry/AclEntryEditPage.groovy @@ -28,7 +28,7 @@ class AclEntryEditPage extends EditPage { static url = 'aclEntry/edit' static typeName = { 'AclEntry' } - static at = { waitFor { title == 'Edit AclEntry' } } + static at = { title == 'Edit AclEntry' } static content = { aclObjectIdentityId { $(name: 'aclObjectIdentity.id').module(TextInput) } aceOrder { $(name: 'aceOrder').module(TextInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclEntry/AclEntrySearchPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclEntry/AclEntrySearchPage.groovy index 1c68b0777..b90d214c9 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclEntry/AclEntrySearchPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclEntry/AclEntrySearchPage.groovy @@ -26,7 +26,7 @@ class AclEntrySearchPage extends SearchPage { static url = 'aclEntry/search' static typeName = { 'AclEntry' } - static at = { waitFor { title == 'AclEntry Search' } } + static at = { title == 'AclEntry Search' } static content = { aclObjectIdentity { $(name: 'aclObjectIdentity.id').module(TextInput) } aceOrder { $(name: 'aceOrder').module(TextInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclObjectIdentity/AclObjectIdentityCreatePage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclObjectIdentity/AclObjectIdentityCreatePage.groovy index ac9e1b137..c148e97e5 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclObjectIdentity/AclObjectIdentityCreatePage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclObjectIdentity/AclObjectIdentityCreatePage.groovy @@ -27,7 +27,7 @@ class AclObjectIdentityCreatePage extends CreatePage { static url = 'aclObjectIdentity/create' static typeName = { 'AclObjectIdentity' } - static at = { waitFor { title == 'Create AclObjectIdentity' } } + static at = { title == 'Create AclObjectIdentity' } static content = { aclClass { $(name: 'aclClass.id').module(Select) } objectId { $(name: 'objectId').module(TextInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclObjectIdentity/AclObjectIdentityEditPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclObjectIdentity/AclObjectIdentityEditPage.groovy index 009187e6b..d8e0f0027 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclObjectIdentity/AclObjectIdentityEditPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclObjectIdentity/AclObjectIdentityEditPage.groovy @@ -26,7 +26,7 @@ class AclObjectIdentityEditPage extends EditPage { static url = 'aclObjectIdentity/edit' static typeName = { 'AclObjectIdentity' } - static at = { waitFor { title == 'Edit AclObjectIdentity' } } + static at = { title == 'Edit AclObjectIdentity' } static content = { objectId { $(name: 'objectId').module(TextInput) } } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclObjectIdentity/AclObjectIdentitySearchPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclObjectIdentity/AclObjectIdentitySearchPage.groovy index 2e6641c79..6bac5ebfa 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclObjectIdentity/AclObjectIdentitySearchPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclObjectIdentity/AclObjectIdentitySearchPage.groovy @@ -27,7 +27,7 @@ class AclObjectIdentitySearchPage extends SearchPage { static url = 'aclObjectIdentity/search' static typeName = { 'AclObjectIdentity' } - static at = { waitFor { title == 'AclObjectIdentity Search' } } + static at = { title == 'AclObjectIdentity Search' } static content = { aclClass { $(name: 'aclClass.id').module(Select) } objectId { $(name: 'objectId').module(TextInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclSid/AclSidCreatePage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclSid/AclSidCreatePage.groovy index e3c10c3de..6827b8cba 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclSid/AclSidCreatePage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclSid/AclSidCreatePage.groovy @@ -27,7 +27,7 @@ class AclSidCreatePage extends CreatePage { static url = 'aclSid/create' static typeName = { 'AclSid' } - static at = { waitFor { title == 'Create AclSid' } } + static at = { title == 'Create AclSid' } static content = { sid { $(name: 'sid').module(TextInput) } principal { $(name: 'principal').module(Checkbox) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclSid/AclSidEditPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclSid/AclSidEditPage.groovy index 82ec53647..ba1e4a864 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclSid/AclSidEditPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclSid/AclSidEditPage.groovy @@ -27,7 +27,7 @@ class AclSidEditPage extends EditPage { static url = 'aclSid/edit' static typeName = { 'AclSid' } - static at = { waitFor { title == 'Edit AclSid' } } + static at = { title == 'Edit AclSid' } static content = { sid { $(name: 'sid').module(TextInput) } principal { $(name: 'principal').module(Checkbox) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclSid/AclSidSearchPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclSid/AclSidSearchPage.groovy index 228bf3de1..003266e1b 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/aclSid/AclSidSearchPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/aclSid/AclSidSearchPage.groovy @@ -27,7 +27,7 @@ class AclSidSearchPage extends SearchPage { static url = 'aclSid/search' static typeName = { 'AclSid' } - static at = { waitFor { title == 'AclSid Search' } } + static at = { title == 'AclSid Search' } static content = { sid { $(name: 'sid').module(TextInput) } principal { $(name: 'principal').module(RadioButtons) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/persistentLogin/PersistentLoginSearchPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/persistentLogin/PersistentLoginSearchPage.groovy index 7bdd4fe74..44e7533fb 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/persistentLogin/PersistentLoginSearchPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/persistentLogin/PersistentLoginSearchPage.groovy @@ -26,7 +26,7 @@ class PersistentLoginSearchPage extends SearchPage { static url = 'persistentLogin/search' static typeName = { 'PersistentLogin' } - static at = { waitFor { title == 'PersistentLogin Search' } } + static at = { title == 'PersistentLogin Search' } static content = { series { $(name: 'series').module(TextInput) } token { $(name: 'token').module(TextInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/register/ForgotPasswordPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/register/ForgotPasswordPage.groovy index a305438fa..b56020a1c 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/register/ForgotPasswordPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/register/ForgotPasswordPage.groovy @@ -25,7 +25,7 @@ import page.AbstractSecurityPage class ForgotPasswordPage extends AbstractSecurityPage { static url = 'register/forgotPassword' - static at = { waitFor { title == 'Forgot Password' } } + static at = { title == 'Forgot Password' } static content = { form { $('forgotPasswordForm') } username { $(name: 'username').module(TextInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/register/ResetPasswordPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/register/ResetPasswordPage.groovy index 14d0f7d99..3a366f306 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/register/ResetPasswordPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/register/ResetPasswordPage.groovy @@ -25,7 +25,7 @@ import page.AbstractSecurityPage class ResetPasswordPage extends AbstractSecurityPage { static url = 'register/resetPassword' - static at = { waitFor { title == 'Reset Password' } } + static at = { title == 'Reset Password' } static content = { form { $('resetPasswordForm') } password { $('#password').module(PasswordInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/registrationCode/RegistrationCodeEditPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/registrationCode/RegistrationCodeEditPage.groovy index a61ee87c0..b29b9c1d2 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/registrationCode/RegistrationCodeEditPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/registrationCode/RegistrationCodeEditPage.groovy @@ -26,7 +26,7 @@ class RegistrationCodeEditPage extends EditPage { static url = 'registrationCode/edit' static typeName = { 'RegistrationCode' } - static at = { waitFor { title == 'Edit RegistrationCode' } } + static at = { title == 'Edit RegistrationCode' } static content = { token { $(name: 'token').module(TextInput) } username { $('#username').module(TextInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/registrationCode/RegistrationCodeSearchPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/registrationCode/RegistrationCodeSearchPage.groovy index fe059ad43..72341e529 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/registrationCode/RegistrationCodeSearchPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/registrationCode/RegistrationCodeSearchPage.groovy @@ -26,7 +26,7 @@ class RegistrationCodeSearchPage extends SearchPage { static url = 'registrationCode/search' static typeName = { 'Registration Code' } - static at = { waitFor { title == 'Registration Code Search' } } + static at = { title == 'Registration Code Search' } static content = { token { $(name: 'token').module(TextInput) } username { $('#username').module(TextInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/requestmap/RequestmapCreatePage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/requestmap/RequestmapCreatePage.groovy index e7423b0c6..01d3537b0 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/requestmap/RequestmapCreatePage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/requestmap/RequestmapCreatePage.groovy @@ -26,7 +26,7 @@ class RequestmapCreatePage extends CreatePage { static url = 'requestmap/create' static typeName = { 'Requestmap' } - static at = { waitFor { title == 'Create Requestmap' } } + static at = { title == 'Create Requestmap' } static content = { configAttribute { $(name: 'configAttribute').module(TextInput) } urlPattern { $(name: 'url').module(TextInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/requestmap/RequestmapEditPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/requestmap/RequestmapEditPage.groovy index 6e7390053..361c693c8 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/requestmap/RequestmapEditPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/requestmap/RequestmapEditPage.groovy @@ -26,7 +26,7 @@ class RequestmapEditPage extends EditPage { static url = 'requestmap/edit' static typeName = { 'Requestmap' } - static at = { waitFor { title == 'Edit Requestmap' } } + static at = { title == 'Edit Requestmap' } static content = { configAttribute { $(name: 'configAttribute').module(TextInput) } urlPattern { $(name: 'url').module(TextInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/requestmap/RequestmapSearchPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/requestmap/RequestmapSearchPage.groovy index 4c123e128..802481c5b 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/requestmap/RequestmapSearchPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/requestmap/RequestmapSearchPage.groovy @@ -26,7 +26,7 @@ class RequestmapSearchPage extends SearchPage { static url = 'requestmap/search' static typeName = { 'Requestmap' } - static at = { waitFor { title == 'Requestmap Search' } } + static at = { title == 'Requestmap Search' } static content = { configAttribute { $(name: 'configAttribute').module(TextInput) } urlPattern { $(name: 'url').module(TextInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/role/RoleCreatePage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/role/RoleCreatePage.groovy index 4afd3f0d8..bf9aab7f7 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/role/RoleCreatePage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/role/RoleCreatePage.groovy @@ -26,7 +26,7 @@ class RoleCreatePage extends CreatePage { static url = 'role/create' static typeName = { 'Role' } - static at = { waitFor { title == 'Create Role' } } + static at = { title == 'Create Role' } static content = { authority { $(name: 'authority').module(TextInput) } } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/role/RoleEditPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/role/RoleEditPage.groovy index 5b5002da1..deca21b36 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/role/RoleEditPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/role/RoleEditPage.groovy @@ -26,7 +26,7 @@ class RoleEditPage extends EditPage { static url = 'role/edit' static typeName = { 'Role' } - static at = { waitFor { title == 'Edit Role' } } + static at = { title == 'Edit Role' } static content = { authority { $(name: 'authority').module(TextInput) } } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/role/RoleSearchPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/role/RoleSearchPage.groovy index 02f7e08da..29283e894 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/role/RoleSearchPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/role/RoleSearchPage.groovy @@ -26,7 +26,7 @@ class RoleSearchPage extends SearchPage { static url = 'role/search' static typeName = { 'Role' } - static at = { waitFor { title == 'Role Search' } } + static at = { title == 'Role Search' } static content = { authority { $(name: 'authority').module(TextInput) } } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/user/UserCreatePage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/user/UserCreatePage.groovy index 182a34bd7..2648d40ee 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/user/UserCreatePage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/user/UserCreatePage.groovy @@ -28,7 +28,7 @@ class UserCreatePage extends CreatePage { static url = 'user/create' static typeName = { 'User' } - static at = { waitFor { title == 'Create User' } } + static at = { title == 'Create User' } static content = { username { $('#username').module(TextInput) } password { $('#password').module(PasswordInput) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/user/UserEditPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/user/UserEditPage.groovy index a4de6f292..c264c3a60 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/user/UserEditPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/user/UserEditPage.groovy @@ -28,7 +28,7 @@ class UserEditPage extends EditPage { static url = 'user/edit' static typeName = { 'User' } - static at = { waitFor { title == 'Edit User' } } + static at = { title == 'Edit User' } static content = { username { $('#username').module(TextInput) } enabled { $(name: 'enabled').module(Checkbox) } diff --git a/plugin-ui/examples/simple/src/integration-test/groovy/page/user/UserSearchPage.groovy b/plugin-ui/examples/simple/src/integration-test/groovy/page/user/UserSearchPage.groovy index a20179383..75fbc271e 100644 --- a/plugin-ui/examples/simple/src/integration-test/groovy/page/user/UserSearchPage.groovy +++ b/plugin-ui/examples/simple/src/integration-test/groovy/page/user/UserSearchPage.groovy @@ -27,7 +27,7 @@ class UserSearchPage extends SearchPage { static url = 'user/search' static typeName = { 'User' } - static at = { waitFor { title == 'User Search' } } + static at = { title == 'User Search' } static content = { username { $('#username').module(TextInput) } enabled { $(name: 'enabled').module(RadioButtons) } diff --git a/plugin-ui/plugin/build.gradle b/plugin-ui/plugin/build.gradle index c84ad8021..6cd2702e7 100644 --- a/plugin-ui/plugin/build.gradle +++ b/plugin-ui/plugin/build.gradle @@ -45,6 +45,7 @@ dependencies { implementation 'org.apache.grails:grails-controllers' implementation 'org.apache.grails:grails-converters' implementation 'org.apache.grails:grails-gsp' + implementation 'org.apache.grails.views:grails-layout' implementation 'org.springframework.security:spring-security-core' implementation 'org.springframework.security:spring-security-web' diff --git a/plugin-ui/plugin/grails-app/views/layouts/register.gsp b/plugin-ui/plugin/grails-app/views/layouts/register.gsp index 391f685dc..9af92abf3 100644 --- a/plugin-ui/plugin/grails-app/views/layouts/register.gsp +++ b/plugin-ui/plugin/grails-app/views/layouts/register.gsp @@ -19,7 +19,6 @@ - <g:layoutTitle/> diff --git a/plugin-ui/plugin/grails-app/views/layouts/springSecurityUI.gsp b/plugin-ui/plugin/grails-app/views/layouts/springSecurityUI.gsp index e001b700e..908bc6c32 100644 --- a/plugin-ui/plugin/grails-app/views/layouts/springSecurityUI.gsp +++ b/plugin-ui/plugin/grails-app/views/layouts/springSecurityUI.gsp @@ -19,7 +19,6 @@ - <g:layoutTitle/> diff --git a/settings.gradle b/settings.gradle index bdcb11d2c..6f0709a27 100644 --- a/settings.gradle +++ b/settings.gradle @@ -18,17 +18,17 @@ */ plugins { - id 'com.gradle.develocity' version '4.0' - id 'com.gradle.common-custom-user-data-gradle-plugin' version '2.2.1' + id 'com.gradle.develocity' version '4.1' + id 'com.gradle.common-custom-user-data-gradle-plugin' version '2.3' } def isCI = System.getenv().containsKey('CI') def isLocal = !isCI -def isReproducibleBuild = System.getenv("SOURCE_DATE_EPOCH") != null -if(isReproducibleBuild) { +def isReproducibleBuild = System.getenv('SOURCE_DATE_EPOCH') != null +if (isReproducibleBuild) { gradle.settingsEvaluated { - logger.warn("*************** Remote Build Cache Disabled due to Reproducible Build ********************") - logger.warn("Build date will be set to (SOURCE_DATE_EPOCH=${System.getenv("SOURCE_DATE_EPOCH")})") + logger.warn('*************** Remote Build Cache Disabled due to Reproducible Build ********************') + logger.warn('Build date will be set to (SOURCE_DATE_EPOCH={})', System.getenv('SOURCE_DATE_EPOCH')) } }