testlens-app[bot] commented on PR #15987: URL: https://github.com/apache/grails-core/pull/15987#issuecomment-4998150798
## 🚨 TestLens detected 1 failed test 🚨 Here is what you can do: 1) Inspect the test failures carefully. 2) If you are convinced that some of the tests are flaky, you can mute them below. 3) Finally, trigger a rerun by checking the rerun checkbox. ### Test Summary #### [CI / Spring Security Tests \(25\)](https://github.com/apache/grails-core/actions/runs/29546562151/job/87780120529?pr=15987) > :grails-test-examples-spring-security-ui-simple:integrationTest | Test | Runs | Flakiness | |---|---|--:| | DefaultSecurityInfoSpec > testConfig | ❌ | 0% 🟢 | 🏷️ Commit: ebcf71697ef05b15882bcf2af4a5fd8513e04ada ▶️ Tests: 30879 executed 🟡 Checks: 24/55 completed ### Test Failures <details> <summary><strong>DefaultSecurityInfoSpec > testConfig</strong> (:grails-test-examples-spring-security-ui-simple:integrationTest in <a href="https://github.com/apache/grails-core/actions/runs/29546562151/job/87780120529?pr=15987">CI / Spring Security Tests (25)</a>)</summary> ``` Condition failed with Exception: waitFor { pageSource.contains('Showing 1 to 10 of ') } | geb.waiting.WaitTimeoutException: condition did not pass in 30 seconds (failed with exception) at geb.waiting.Wait.waitFor(Wait.groovy:128) at geb.waiting.DefaultWaitingSupport.doWaitFor(DefaultWaitingSupport.groovy:55) at geb.waiting.DefaultWaitingSupport.waitFor(DefaultWaitingSupport.groovy:41) at geb.Page.waitFor(Page.groovy:120) at grails.plugin.geb.support.delegate.PageDelegate$Trait$Helper.waitFor(PageDelegate.groovy:350) at simple.spec.DefaultSecurityInfoSpec.testConfig(DefaultSecurityInfoSpec.groovy:44) Caused by: Assertion failed: pageSource.contains('Showing 1 to 10 of ') | | | false '<html lang="en"><head>\n\t\t<meta charset="utf-8">\n\t\t<meta name="viewport" content="width=device-width, initial-scale=1">\n\t\t<title>Security Configuration</title>\n\t\t<link rel="shortcut icon" href="/assets/favicon.ico" type="image/x-icon">\n\t\t<link rel="stylesheet" href="/assets/main.css?compile=false">\n<link rel="stylesheet" href="/assets/webjars/bootstrap/5.3.8/dist/css/bootstrap.css?compile=false">\n<link rel="stylesheet" href="/assets/application.css?compile=false">\n\n\t\t\n\t\n <meta name="layout" content="springSecurityUI">\n \n\n\n\t</head>\n\t<body>\n\t<nav class="navbar navbar-expand-lg bg-body-tertiary border-bottom">\n\t\t<div class="container-lg">\n\t\t\t<a class="navbar-brand" href="/">Home</a>\n\t\t\t<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#mainNav" aria-controls="mainNav" aria-expanded="false" aria-label="Toggle navigation">\n\t\t\t\t<span class="navbar-toggler-icon"></span>\n\t\t\t</button>\n\t\t\t<di v class="collapse navbar-collapse" id="mainNav">\n\t\t\t\t<ul class="navbar-nav me-auto">\n\t\t\t\t\t\n\t\t\t\t\t\n\t<li class="nav-item dropdown">\n <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Users</a>\n <ul class="dropdown-menu">\n<li><a class="dropdown-item" href="/user/search">Search</a></li>\n<li><a class="dropdown-item" href="/user/create">Create</a></li>\n</ul>\n</li>\n\n\t<li class="nav-item dropdown">\n <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Roles</a>\n <ul class="dropdown-menu">\n<li><a class="dropdown-item" href="/role/search">Search</a></li>\n<li><a class="dropdown-item" href="/role/create">Create</a></li>\n</ul>\n</li>\n\n\t<li class="nav-item dropdown">\n <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Reque stmaps</a>\n <ul class="dropdown-menu">\n<li><a class="dropdown-item" href="/requestmap/search">Search</a></li>\n<li><a class="dropdown-item" href="/requestmap/create">Create</a></li>\n</ul>\n</li>\n\n\t\n\t<li class="nav-item dropdown">\n <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Registration Code</a>\n <ul class="dropdown-menu">\n<li><a class="dropdown-item" href="/registrationCode/search">Search</a></li>\n</ul>\n</li>\n\n\t\n\t\n\t<li class="nav-item dropdown">\n\t\t<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Security Info</a>\n\t\t<ul class="dropdown-menu">\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/config">Security Configuration</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/mappings">Mappings</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/currentAuth">Current Authentication</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/usercache">User Cache</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/filterChains">Filter Chains</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/logoutHandlers">Logout Handlers</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/voters">Voters</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/providers">Authentication Providers</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/secureChannel">Secure Channel Definition</a></li>\n\t\t</ul>\n\t</li>\n\n\t\t\t\t</ul>\n\t\t\t\t<ul class="navbar-nav ms-auto">\n\t\t\t\t\t\n\t<li class="nav-item d-flex align-items-center gap-2">\n\t\t\n\n\n\n\n\t<button type="button" id="loginLink" class="btn btn-primary btn-sm" data-bs-toggle="modal" data-bs-target="#loginModal">\n\t\tLog in\n\t</button>\n\t<div class="modal fade" id="loginModal" tabindex="-1" aria-labelledby="loginModalLabel" aria-hi dden="true">\n\t\t<div class="modal-dialog modal-dialog-centered">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h1 class="modal-title fs-5" id="loginModalLabel">Member sign in</h1>\n\t\t\t\t\t<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cancel"></button>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<form action="/login/authenticate" method="post" id="ajaxLoginForm" name="ajaxLoginForm" autocomplete="off">\n\t\t\t\t\t\t<div class="mb-3">\n\t\t\t\t\t\t\t<label class="form-label" for="ajaxUsername">Username:</label>\n\t\t\t\t\t\t\t<input type="text" class="form-control" name="username" id="ajaxUsername" autocapitalize="none">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="mb-3">\n\t\t\t\t\t\t\t<label class="form-label" for="ajaxPassword">Password:</label>\n\t\t\t\t\t\t\t<input type="password" class="form-control" name="password" id="ajaxPassword">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="mb-3 form-ch eck">\n\t\t\t\t\t\t\t<input type="checkbox" class="form-check-input" name="remember-me" id="remember_me" checked="checked">\n\t\t\t\t\t\t\t<label class="form-check-label" for="remember_me">Remember me</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button type="submit" class="btn btn-primary w-100">Log in</button>\n\t\t\t\t\t</form>\n\t\t\t\t\t<div id="loginMessage" class="mt-3"></div>\n\t\t\t\t\t<div class="d-flex justify-content-between mt-3 small">\n\t\t\t\t\t\t<a href="/register/forgotPassword">Forgot password?</a>\n\t\t\t\t\t\t<a href="/register/register">Register as new User</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t\n\n\n\t</li>\n\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n\t</nav>\n\t<div class="container-lg py-4">\n\t\t\n\t\t\n\n\n\n<div class="table-responsive">\n <table id="config" class="table table-striped table-hover align-middle">\n <caption class="caption-top">Security Configuration</caption>\n <thead>\n <tr>\n <th scope="col">Name</th>\n <th scope="col">Value</th>\n </tr>\n </thead>\n <tbody>\n \n \n <tr>\n <td>active</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>adh.ajaxErrorPage</td>\n <td>/login/ajaxDenied</td>\n </tr>\n \n \n <tr>\n <td>adh.errorPage</td>\n <td>/login/denied</td>\n </tr>\n \n \n <tr>\n <td>adh.useForward</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>afterInvocationManagerProviderNames</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>ajaxCheckClosure</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>ajaxHeader</td>\n <td>X-Requested-With</td>\n </tr>\n \n \n <tr>\n <td>anon.key</td>\n <td>foo</td>\n </tr>\n \n \n <tr>\n <td>apf.allowSessionCreation</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>apf.continueChainBeforeSuccessfulAuthentication</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>apf.filterProcessesUrl</td>\n <td>/login/authenticate</td>\n </tr>\n \n \n <tr>\n <td>apf.passwordParameter</td>\n <td>password</td>\n </tr>\n \n \n <tr>\n <td>apf.postOnly</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>apf.storeLastUsername</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>apf.usernameParameter</td>\n <td>username</td>\n </tr>\n \n \n <tr>\n <td>atr.anonymousClass</td>\n <td>grails. plugin. springsecurity. authentication. GrailsAnonymousAuthenticationToken</td>\n </tr>\n \n \n <tr>\n <td>atr.rememberMeClass</td>\n <td>org. springframework. security. authentication. RememberMeAuthenticationToken</td>\n </tr>\n \n \n <tr>\n <td>auth.ajaxLoginFormUrl</td>\n <td>/login/authAjax</td>\n </tr>\n \n \n <tr>\n <td>auth.forceHttps</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>auth.loginFormUrl</td>\n <td>/login/auth</td>\n </tr>\n \n \n <tr>\n <td>auth.useForward</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>authority.className</td>\n <td>test.Role</td>\n </tr>\n \n \n <tr>\n <td>authority.groupAuthorityNameField</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>authority.nameField</td>\n <td>authority</td>\n </tr>\n \n \n <tr>\n <td>basic.credentialsCharset</td>\n <td>UTF-8</td>\n </tr>\n \n \n <tr>\n <td>basic.realmName</td>\n <td>Grails Realm</td>\n </tr>\n \n \n <tr>\n <td>beanTypeResolverClass</td>\n <td>grails. plugin. springsecurity. BeanTypeResolver</td>\n </tr>\n \n \n <tr>\n <td>cacheUsers</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>controllerAnnotations.staticRules</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>dao.hideUserNotFoundExceptions</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>dao.reflectionSaltSourceProperty</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>debug.useFilter</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>digest.createAuthenticatedToken</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>digest.key</td>\n <td>changeme</td>\n </tr>\n \n \n <tr>\n <td>digest.nonceValiditySeconds</td>\n <td>300</td>\n </tr>\n \n \n <tr>\n <td>digest.passwordAlreadyEncoded</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>digest.realmName</td>\n <td>Grails Realm</td>\n </tr>\n \n \n <tr>\n <td>digest.useCleartextPasswords</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>failureHandler.ajaxAuthFailUrl</td>\n <td>/login/authfail?ajax=true</td>\n </tr>\n \n \n <tr>\n <td>failureHandler.allowSessionCr eation</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>failureHandler.defaultFailureUrl</td>\n <td>/login/authfail?login_error=1</td>\n </tr>\n \n \n <tr>\n <td>failureHandler.exceptionMappings</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>failureHandler.useForward</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>fii.alwaysReauthenticate</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>fii.observeOncePerRequest</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>fii.publishAuthorizationSuccess</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>fii.rejectPublicInvocations</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>fii.validateConfigAttributes</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap</td>\n <td>[{pattern=/assets/**, filters=none}, {pattern=/**/favicon.ico, filters=none}, {pattern=/**/css/**, filters=none}, {pattern=/**/images/**, filters=none}, {pattern=/**/js/**, filters=none}, {pattern=/**, filters=JOINED_FILTERS}]</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[0].filters</td>\n <td>none</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[0].pattern</td>\n <td>/assets/**</td>\n </tr>\n \n \n <tr>\n <td> filterChain.chainMap[1].filters</td>\n <td>none</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[1].pattern</td>\n <td>/**/favicon.ico</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[2].filters</td>\n <td>none</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[2].pattern</td>\n <td>/**/css/**</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[3].filters</td>\n <td>none</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[3].pattern</td>\n <td>/**/images/**</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[4].filters</td>\n <td>none</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[4].pattern</td>\n <td>/**/js/**</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[5].filters</td>\n <td>JOINED_FILTERS</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[5].pattern</td>\n <td>/**</td>\n </tr>\n \n \n <tr>\n <td>gsp.layoutAuth</td>\n <td>main</td>\n </tr>\n \n \n <tr>\n <td>gsp.layoutDenied</td>\n <td>main</td>\n </tr>\n \n \n <tr>\n <td>interceptUrlMap</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>ipRestrictions</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>logout.afterLogoutUrl</td>\n <td>/</td>\n </tr>\n \n \n <tr>\n <td>logout.alwaysUseDefaultTargetUrl</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>logout.clearAuthentication</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>logout.filterProcessesUrl</td>\n <td>/logoff</td>\n </tr>\n \n \n <tr>\n <td>logout.handlerNames</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>logout.invalidateHttpSession</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>logout.postOnly</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>logout.redirectToReferer</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>logout.targetUrlParameter</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>password.algorithm</td>\n <td>bcrypt</td>\n </tr>\n \n \n <tr>\n <td>password.bcrypt.logrounds</td>\n <td>4</td>\n </tr>\n \n \n <tr>\n <td>password.encodeHashAsBase64</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>password.hash.iterations</td>\n <td>1</td>\n </tr>\n \n \n <tr>\n <td>portMapper.httpPort</td>\n <td>8080</td>\n </tr>\n \n \n <tr>\n <td>portMapper.httpsPort</td>\n <td>8443</td>\n </tr>\n \n \n <tr>\n <td>printStatusMessages</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>providerManager.eraseCredentialsAfterAuthentication</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>providerNames</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>redirectStrategy.contextRelative</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>registerLoggerListener</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>rejectIfNoRule</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.alwaysRemember</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.cookieDomain</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>rememberMe.cookieName</td>\n <td>grails_remember_me</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.createSessionOnSuccess</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.key</td>\n <td>grailsRocks</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.parameter</td>\n <td>remember-me</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.persistent</td>\n < td>false</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.persistentToken.domainClassName</td>\n <td>test.PersistentToken</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.persistentToken.seriesLength</td>\n <td>16</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.persistentToken.tokenLength</td>\n <td>16</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.tokenValiditySeconds</td>\n <td>1209600</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.useSecureCookie</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>requestCache.createSession</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>requestMap.className</td>\n <td>test.Requestmap</td>\n </tr>\n \n \n <tr>\n <td>requestMap.configAttributeField</td>\n <td>configAttribute</td>\n </tr>\n \n \n <tr>\n <td>requestMap.httpMethodField</td>\n <td>httpMethod</td>\n </tr>\n \n \n <tr>\n <td>requestMap.urlField</td>\n <td>url</td>\n </tr>\n \n \n <tr>\n <td>roleHierarchy</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>sch.strategyName</td>\n <td>MODE_THREADLOCAL</td>\n </tr>\n \n \n <tr>\n <td>scpf.forceEagerSessionCreation</td>\n <td>false</td>\n </tr>\n \ n \n <tr>\n <td>scr.allowSessionCreation</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>scr.disableUrlRewriting</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>scr.springSecurityContextKey</td>\n <td>SPRING_SECURITY_CONTEXT</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.definition</td>\n <td>[{pattern=/testsecure/**, access=REQUIRES_SECURE_CHANNEL}, {pattern=/testinsecure/**, access=REQUIRES_INSECURE_CHANNEL}, {pattern=/testany/**, access=ANY_CHANNEL}]</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.definition[0].access</td>\n <td>REQUIRES_SECURE_CHANNEL</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.defin ition[0].pattern</td>\n <td>/testsecure/**</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.definition[1].access</td>\n <td>REQUIRES_INSECURE_CHANNEL</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.definition[1].pattern</td>\n <td>/testinsecure/**</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.definition[2].access</td>\n <td>ANY_CHANNEL</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.definition[2].pattern</td>\n <td>/testany/**</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.insecureConfigAttributeKeyword</td>\n <td>REQUIRES_INSECURE_CHANNEL</td>\n </tr>\n \n \n <tr>\n <td>secureC hannel.insecureHeaderName</td>\n <td>X-Forwarded-Proto</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.insecureHeaderValue</td>\n <td>https</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.secureConfigAttributeKeyword</td>\n <td>REQUIRES_SECURE_CHANNEL</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.secureHeaderName</td>\n <td>X-Forwarded-Proto</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.secureHeaderValue</td>\n <td>http</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.useHeaderCheckChannelSecurity</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>securityConfigType</td>\n <td>Requestmap</td>\n </tr>\n \n \n <tr>\n <td>sessionFixationPrevention.alwaysCreateSession</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>sessionFixationPrevention.migrate</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>successHandler.ajaxSuccessUrl</td>\n <td>/login/ajaxSuccess</td>\n </tr>\n \n \n <tr>\n <td>successHandler.alwaysUseDefault</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>successHandler.defaultTargetUrl</td>\n <td>/</td>\n </tr>\n \n \n <tr>\n <td>successHandler.targetUrlParameter</td>\n <td>spring-security-redirect</td>\n </tr>\ n \n \n <tr>\n <td>successHandler.useReferer</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>switchUser.exitUserUrl</td>\n <td>/logout/impersonate</td>\n </tr>\n \n \n <tr>\n <td>switchUser.switchFailureUrl</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>switchUser.switchUserUrl</td>\n <td>/login/impersonate</td>\n </tr>\n \n \n <tr>\n <td>switchUser.targetUrl</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>switchUser.usernameParameter</td>\n <td>username</td>\n </tr>\n \n \n <tr>\n <td>ui.encodePassword</td>\n <td>fals e</td>\n </tr>\n \n \n <tr>\n <td>ui.forgotPassword.emailFrom</td>\n <td>Do Not Reply <do.not.reply@localhost></td>\n </tr>\n \n \n <tr>\n <td>ui.forgotPassword.postResetUrl</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>ui.forgotPassword.requireForgotPassEmailValidation</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>ui.forgotPassword.validationUserLookUpProperty</td>\n <td>user</td>\n </tr>\n \n \n <tr>\n <td>ui.gsp.layoutRegister</td>\n <td>register</td>\n </tr>\n \n \n <tr>\n <td>ui.gsp.layoutUi</td>\n <td>springSecurityUI</td>\n </tr>\n \n \n <tr>\n <td>ui.register.defaultRoleNames</td>\n <td>[ROLE_USER]</td>\n </tr>\n \n \n <tr>\n <td>ui.register.emailFrom</td>\n <td>Do Not Reply <do.not.reply@localhost></td>\n </tr>\n \n \n <tr>\n <td>ui.register.postRegisterUrl</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>ui.register.requireEmailValidation</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>ui.switchUserRoleName</td>\n <td>ROLE_SWITCH_USER</td>\n </tr>\n \n \n <tr>\n <td>useBasicAuth</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>useDigestAuth</td>\n <td >false</td>\n </tr>\n \n \n <tr>\n > <td>useExternalClasses</td>\n <td>false</td>\n > </tr>\n \n \n <tr>\n ><td>useHttpSessionEventPublisher</td>\n <td>false</td>\n > </tr>\n \n \n <tr>\n ><td>useRoleGroups</td>\n <td>false</td>\n </tr>\n > \n \n <tr>\n ><td>useSecurityEventListener</td>\n <td>false</td>\n > </tr>\n \n \n <tr>\n ><td>useSessionFixationPrevention</td>\n <td>true</td>\n > </tr>\n \n \n <tr>\n ><td>useSwitchUserFilter</td>\n <td>true</td>\n ></tr>\n \n \n <tr>\n ><td>useX509</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>userLookup.accountExpiredPropertyName</td>\n <td>accountExpired</td>\n </tr>\n \n \n <tr>\n <td>userLookup.accountLockedPropertyName</td>\n <td>accountLocked</td>\n </tr>\n \n \n <tr>\n <td>userLookup.authoritiesPropertyName</td>\n <td>authorities</td>\n </tr>\n \n \n <tr>\n <td>userLookup.authorityJoinClassName</td>\n <td>test.UserRole</td>\n </tr>\n \n \n <tr>\n <td>userLookup.enabledPropertyName</td>\n <td>enabled</td>\n </tr>\n \n \n <tr>\n <td>userLookup.passwordExpiredPropertyName</td>\n <td>passwordExpired</td>\n </tr>\n \n \n <tr>\n <td>userLookup.passwordPropertyName</td>\n <td>password</td>\n </tr>\n \n \n <tr>\n <td>userLookup.userDomainClassName</td>\n <td>test.User</td>\n </tr>\n \n \n <tr>\n <td>userLookup.usernameIgnoreCase</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>userLookup.usernamePropertyName</td>\n <td>username</td>\n </tr>\n \n \n <tr>\n <td>voterNames</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>x509.checkForPrincipalChanges</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>x509.continueFilterChainOnUnsuccessfulAuthentication</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>x509.invalidateSessionOnPrincipalChange</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>x509.subjectDnClosure</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>x509.subjectDnRegex</td>\n <td>CN=(.*?)(?:,|$)</td>\n </tr>\n \n \n <tr>\n <td>x509.throwExceptionWhenTokenRejected</td>\n <td>false</td>\n </tr>\n \n </tbody>\n </table>\n</div>\n\n<script type="text/javascript" src="/assets/spring-security-ui-ajaxLogin.js?compile=false"></script>\n<script type="text/javascript" src="/assets/spring-security-ui.js?compile=false"></script>\n\n<script>\nvar loggingYouIn = "Logging you in ...";\n\t</script>\n\n\t</div>\n\t<script type="text/javascr ipt" src="/assets/webjars/jquery/4.0.0/dist/jquery.js?compile=false"></script>\n<script type="text/javascript" src="/assets/webjars/bootstrap/5.3.8/dist/js/bootstrap.bundle.js?compile=false"></script>\n<script type="text/javascript" src="/assets/application.js?compile=false"></script>\n\n\t\n\n\n</body></html>' at simple.spec.DefaultSecurityInfoSpec.testConfig_closure2(DefaultSecurityInfoSpec.groovy:44) at geb.waiting.Wait.waitFor(Wait.groovy:117) ... 5 more at simple.spec.DefaultSecurityInfoSpec.testConfig(DefaultSecurityInfoSpec.groovy:44) Caused by: geb.waiting.WaitTimeoutException: condition did not pass in 30 seconds (failed with exception) at geb.waiting.Wait.waitFor(Wait.groovy:128) at geb.waiting.DefaultWaitingSupport.doWaitFor(DefaultWaitingSupport.groovy:55) at geb.waiting.DefaultWaitingSupport.waitFor(DefaultWaitingSupport.groovy:41) at geb.Page.waitFor(Page.groovy:120) at grails.plugin.geb.support.delegate.PageDelegate$Trait$Helper.waitFor(PageDelegate.groovy:350) ... 1 more Caused by: Assertion failed: pageSource.contains('Showing 1 to 10 of ') | | | false '<html lang="en"><head>\n\t\t<meta charset="utf-8">\n\t\t<meta name="viewport" content="width=device-width, initial-scale=1">\n\t\t<title>Security Configuration</title>\n\t\t<link rel="shortcut icon" href="/assets/favicon.ico" type="image/x-icon">\n\t\t<link rel="stylesheet" href="/assets/main.css?compile=false">\n<link rel="stylesheet" href="/assets/webjars/bootstrap/5.3.8/dist/css/bootstrap.css?compile=false">\n<link rel="stylesheet" href="/assets/application.css?compile=false">\n\n\t\t\n\t\n <meta name="layout" content="springSecurityUI">\n \n\n\n\t</head>\n\t<body>\n\t<nav class="navbar navbar-expand-lg bg-body-tertiary border-bottom">\n\t\t<div class="container-lg">\n\t\t\t<a class="navbar-brand" href="/">Home</a>\n\t\t\t<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#mainNav" aria-controls="mainNav" aria-expanded="false" aria-label="Toggle navigation">\n\t\t\t\t<span class="navbar-toggler-icon"></span>\n\t\t\t</button>\n\t\t\t<di v class="collapse navbar-collapse" id="mainNav">\n\t\t\t\t<ul class="navbar-nav me-auto">\n\t\t\t\t\t\n\t\t\t\t\t\n\t<li class="nav-item dropdown">\n <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Users</a>\n <ul class="dropdown-menu">\n<li><a class="dropdown-item" href="/user/search">Search</a></li>\n<li><a class="dropdown-item" href="/user/create">Create</a></li>\n</ul>\n</li>\n\n\t<li class="nav-item dropdown">\n <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Roles</a>\n <ul class="dropdown-menu">\n<li><a class="dropdown-item" href="/role/search">Search</a></li>\n<li><a class="dropdown-item" href="/role/create">Create</a></li>\n</ul>\n</li>\n\n\t<li class="nav-item dropdown">\n <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Reque stmaps</a>\n <ul class="dropdown-menu">\n<li><a class="dropdown-item" href="/requestmap/search">Search</a></li>\n<li><a class="dropdown-item" href="/requestmap/create">Create</a></li>\n</ul>\n</li>\n\n\t\n\t<li class="nav-item dropdown">\n <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Registration Code</a>\n <ul class="dropdown-menu">\n<li><a class="dropdown-item" href="/registrationCode/search">Search</a></li>\n</ul>\n</li>\n\n\t\n\t\n\t<li class="nav-item dropdown">\n\t\t<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Security Info</a>\n\t\t<ul class="dropdown-menu">\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/config">Security Configuration</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/mappings">Mappings</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/currentAuth">Current Authentication</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/usercache">User Cache</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/filterChains">Filter Chains</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/logoutHandlers">Logout Handlers</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/voters">Voters</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/providers">Authentication Providers</a></li>\n\t\t\t<li><a class="dropdown-item" href="/securityInfo/secureChannel">Secure Channel Definition</a></li>\n\t\t</ul>\n\t</li>\n\n\t\t\t\t</ul>\n\t\t\t\t<ul class="navbar-nav ms-auto">\n\t\t\t\t\t\n\t<li class="nav-item d-flex align-items-center gap-2">\n\t\t\n\n\n\n\n\t<button type="button" id="loginLink" class="btn btn-primary btn-sm" data-bs-toggle="modal" data-bs-target="#loginModal">\n\t\tLog in\n\t</button>\n\t<div class="modal fade" id="loginModal" tabindex="-1" aria-labelledby="loginModalLabel" aria-hi dden="true">\n\t\t<div class="modal-dialog modal-dialog-centered">\n\t\t\t<div class="modal-content">\n\t\t\t\t<div class="modal-header">\n\t\t\t\t\t<h1 class="modal-title fs-5" id="loginModalLabel">Member sign in</h1>\n\t\t\t\t\t<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cancel"></button>\n\t\t\t\t</div>\n\t\t\t\t<div class="modal-body">\n\t\t\t\t\t<form action="/login/authenticate" method="post" id="ajaxLoginForm" name="ajaxLoginForm" autocomplete="off">\n\t\t\t\t\t\t<div class="mb-3">\n\t\t\t\t\t\t\t<label class="form-label" for="ajaxUsername">Username:</label>\n\t\t\t\t\t\t\t<input type="text" class="form-control" name="username" id="ajaxUsername" autocapitalize="none">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="mb-3">\n\t\t\t\t\t\t\t<label class="form-label" for="ajaxPassword">Password:</label>\n\t\t\t\t\t\t\t<input type="password" class="form-control" name="password" id="ajaxPassword">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="mb-3 form-ch eck">\n\t\t\t\t\t\t\t<input type="checkbox" class="form-check-input" name="remember-me" id="remember_me" checked="checked">\n\t\t\t\t\t\t\t<label class="form-check-label" for="remember_me">Remember me</label>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button type="submit" class="btn btn-primary w-100">Log in</button>\n\t\t\t\t\t</form>\n\t\t\t\t\t<div id="loginMessage" class="mt-3"></div>\n\t\t\t\t\t<div class="d-flex justify-content-between mt-3 small">\n\t\t\t\t\t\t<a href="/register/forgotPassword">Forgot password?</a>\n\t\t\t\t\t\t<a href="/register/register">Register as new User</a>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\t\n\n\n\t</li>\n\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t</div>\n\t</nav>\n\t<div class="container-lg py-4">\n\t\t\n\t\t\n\n\n\n<div class="table-responsive">\n <table id="config" class="table table-striped table-hover align-middle">\n <caption class="caption-top">Security Configuration</caption>\n <thead>\n <tr>\n <th scope="col">Name</th>\n <th scope="col">Value</th>\n </tr>\n </thead>\n <tbody>\n \n \n <tr>\n <td>active</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>adh.ajaxErrorPage</td>\n <td>/login/ajaxDenied</td>\n </tr>\n \n \n <tr>\n <td>adh.errorPage</td>\n <td>/login/denied</td>\n </tr>\n \n \n <tr>\n <td>adh.useForward</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>afterInvocationManagerProviderNames</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>ajaxCheckClosure</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>ajaxHeader</td>\n <td>X-Requested-With</td>\n </tr>\n \n \n <tr>\n <td>anon.key</td>\n <td>foo</td>\n </tr>\n \n \n <tr>\n <td>apf.allowSessionCreation</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>apf.continueChainBeforeSuccessfulAuthentication</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>apf.filterProcessesUrl</td>\n <td>/login/authenticate</td>\n </tr>\n \n \n <tr>\n <td>apf.passwordParameter</td>\n <td>password</td>\n </tr>\n \n \n <tr>\n <td>apf.postOnly</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>apf.storeLastUsername</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>apf.usernameParameter</td>\n <td>username</td>\n </tr>\n \n \n <tr>\n <td>atr.anonymousClass</td>\n <td>grails. plugin. springsecurity. authentication. GrailsAnonymousAuthenticationToken</td>\n </tr>\n \n \n <tr>\n <td>atr.rememberMeClass</td>\n <td>org. springframework. security. authentication. RememberMeAuthenticationToken</td>\n </tr>\n \n \n <tr>\n <td>auth.ajaxLoginFormUrl</td>\n <td>/login/authAjax</td>\n </tr>\n \n \n <tr>\n <td>auth.forceHttps</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>auth.loginFormUrl</td>\n <td>/login/auth</td>\n </tr>\n \n \n <tr>\n <td>auth.useForward</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>authority.className</td>\n <td>test.Role</td>\n </tr>\n \n \n <tr>\n <td>authority.groupAuthorityNameField</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>authority.nameField</td>\n <td>authority</td>\n </tr>\n \n \n <tr>\n <td>basic.credentialsCharset</td>\n <td>UTF-8</td>\n </tr>\n \n \n <tr>\n <td>basic.realmName</td>\n <td>Grails Realm</td>\n </tr>\n \n \n <tr>\n <td>beanTypeResolverClass</td>\n <td>grails. plugin. springsecurity. BeanTypeResolver</td>\n </tr>\n \n \n <tr>\n <td>cacheUsers</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>controllerAnnotations.staticRules</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>dao.hideUserNotFoundExceptions</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>dao.reflectionSaltSourceProperty</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>debug.useFilter</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>digest.createAuthenticatedToken</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>digest.key</td>\n <td>changeme</td>\n </tr>\n \n \n <tr>\n <td>digest.nonceValiditySeconds</td>\n <td>300</td>\n </tr>\n \n \n <tr>\n <td>digest.passwordAlreadyEncoded</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>digest.realmName</td>\n <td>Grails Realm</td>\n </tr>\n \n \n <tr>\n <td>digest.useCleartextPasswords</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>failureHandler.ajaxAuthFailUrl</td>\n <td>/login/authfail?ajax=true</td>\n </tr>\n \n \n <tr>\n <td>failureHandler.allowSessionCr eation</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>failureHandler.defaultFailureUrl</td>\n <td>/login/authfail?login_error=1</td>\n </tr>\n \n \n <tr>\n <td>failureHandler.exceptionMappings</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>failureHandler.useForward</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>fii.alwaysReauthenticate</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>fii.observeOncePerRequest</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>fii.publishAuthorizationSuccess</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>fii.rejectPublicInvocations</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>fii.validateConfigAttributes</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap</td>\n <td>[{pattern=/assets/**, filters=none}, {pattern=/**/favicon.ico, filters=none}, {pattern=/**/css/**, filters=none}, {pattern=/**/images/**, filters=none}, {pattern=/**/js/**, filters=none}, {pattern=/**, filters=JOINED_FILTERS}]</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[0].filters</td>\n <td>none</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[0].pattern</td>\n <td>/assets/**</td>\n </tr>\n \n \n <tr>\n <td> filterChain.chainMap[1].filters</td>\n <td>none</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[1].pattern</td>\n <td>/**/favicon.ico</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[2].filters</td>\n <td>none</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[2].pattern</td>\n <td>/**/css/**</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[3].filters</td>\n <td>none</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[3].pattern</td>\n <td>/**/images/**</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[4].filters</td>\n <td>none</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[4].pattern</td>\n <td>/**/js/**</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[5].filters</td>\n <td>JOINED_FILTERS</td>\n </tr>\n \n \n <tr>\n <td>filterChain.chainMap[5].pattern</td>\n <td>/**</td>\n </tr>\n \n \n <tr>\n <td>gsp.layoutAuth</td>\n <td>main</td>\n </tr>\n \n \n <tr>\n <td>gsp.layoutDenied</td>\n <td>main</td>\n </tr>\n \n \n <tr>\n <td>interceptUrlMap</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>ipRestrictions</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>logout.afterLogoutUrl</td>\n <td>/</td>\n </tr>\n \n \n <tr>\n <td>logout.alwaysUseDefaultTargetUrl</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>logout.clearAuthentication</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>logout.filterProcessesUrl</td>\n <td>/logoff</td>\n </tr>\n \n \n <tr>\n <td>logout.handlerNames</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>logout.invalidateHttpSession</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>logout.postOnly</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>logout.redirectToReferer</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>logout.targetUrlParameter</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>password.algorithm</td>\n <td>bcrypt</td>\n </tr>\n \n \n <tr>\n <td>password.bcrypt.logrounds</td>\n <td>4</td>\n </tr>\n \n \n <tr>\n <td>password.encodeHashAsBase64</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>password.hash.iterations</td>\n <td>1</td>\n </tr>\n \n \n <tr>\n <td>portMapper.httpPort</td>\n <td>8080</td>\n </tr>\n \n \n <tr>\n <td>portMapper.httpsPort</td>\n <td>8443</td>\n </tr>\n \n \n <tr>\n <td>printStatusMessages</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>providerManager.eraseCredentialsAfterAuthentication</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>providerNames</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>redirectStrategy.contextRelative</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>registerLoggerListener</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>rejectIfNoRule</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.alwaysRemember</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.cookieDomain</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>rememberMe.cookieName</td>\n <td>grails_remember_me</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.createSessionOnSuccess</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.key</td>\n <td>grailsRocks</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.parameter</td>\n <td>remember-me</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.persistent</td>\n < td>false</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.persistentToken.domainClassName</td>\n <td>test.PersistentToken</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.persistentToken.seriesLength</td>\n <td>16</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.persistentToken.tokenLength</td>\n <td>16</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.tokenValiditySeconds</td>\n <td>1209600</td>\n </tr>\n \n \n <tr>\n <td>rememberMe.useSecureCookie</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>requestCache.createSession</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>requestMap.className</td>\n <td>test.Requestmap</td>\n </tr>\n \n \n <tr>\n <td>requestMap.configAttributeField</td>\n <td>configAttribute</td>\n </tr>\n \n \n <tr>\n <td>requestMap.httpMethodField</td>\n <td>httpMethod</td>\n </tr>\n \n \n <tr>\n <td>requestMap.urlField</td>\n <td>url</td>\n </tr>\n \n \n <tr>\n <td>roleHierarchy</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>sch.strategyName</td>\n <td>MODE_THREADLOCAL</td>\n </tr>\n \n \n <tr>\n <td>scpf.forceEagerSessionCreation</td>\n <td>false</td>\n </tr>\n \ n \n <tr>\n <td>scr.allowSessionCreation</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>scr.disableUrlRewriting</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>scr.springSecurityContextKey</td>\n <td>SPRING_SECURITY_CONTEXT</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.definition</td>\n <td>[{pattern=/testsecure/**, access=REQUIRES_SECURE_CHANNEL}, {pattern=/testinsecure/**, access=REQUIRES_INSECURE_CHANNEL}, {pattern=/testany/**, access=ANY_CHANNEL}]</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.definition[0].access</td>\n <td>REQUIRES_SECURE_CHANNEL</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.defin ition[0].pattern</td>\n <td>/testsecure/**</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.definition[1].access</td>\n <td>REQUIRES_INSECURE_CHANNEL</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.definition[1].pattern</td>\n <td>/testinsecure/**</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.definition[2].access</td>\n <td>ANY_CHANNEL</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.definition[2].pattern</td>\n <td>/testany/**</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.insecureConfigAttributeKeyword</td>\n <td>REQUIRES_INSECURE_CHANNEL</td>\n </tr>\n \n \n <tr>\n <td>secureC hannel.insecureHeaderName</td>\n <td>X-Forwarded-Proto</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.insecureHeaderValue</td>\n <td>https</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.secureConfigAttributeKeyword</td>\n <td>REQUIRES_SECURE_CHANNEL</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.secureHeaderName</td>\n <td>X-Forwarded-Proto</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.secureHeaderValue</td>\n <td>http</td>\n </tr>\n \n \n <tr>\n <td>secureChannel.useHeaderCheckChannelSecurity</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>securityConfigType</td>\n <td>Requestmap</td>\n </tr>\n \n \n <tr>\n <td>sessionFixationPrevention.alwaysCreateSession</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>sessionFixationPrevention.migrate</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>successHandler.ajaxSuccessUrl</td>\n <td>/login/ajaxSuccess</td>\n </tr>\n \n \n <tr>\n <td>successHandler.alwaysUseDefault</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>successHandler.defaultTargetUrl</td>\n <td>/</td>\n </tr>\n \n \n <tr>\n <td>successHandler.targetUrlParameter</td>\n <td>spring-security-redirect</td>\n </tr>\ n \n \n <tr>\n <td>successHandler.useReferer</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>switchUser.exitUserUrl</td>\n <td>/logout/impersonate</td>\n </tr>\n \n \n <tr>\n <td>switchUser.switchFailureUrl</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>switchUser.switchUserUrl</td>\n <td>/login/impersonate</td>\n </tr>\n \n \n <tr>\n <td>switchUser.targetUrl</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>switchUser.usernameParameter</td>\n <td>username</td>\n </tr>\n \n \n <tr>\n <td>ui.encodePassword</td>\n <td>fals e</td>\n </tr>\n \n \n <tr>\n <td>ui.forgotPassword.emailFrom</td>\n <td>Do Not Reply <do.not.reply@localhost></td>\n </tr>\n \n \n <tr>\n <td>ui.forgotPassword.postResetUrl</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>ui.forgotPassword.requireForgotPassEmailValidation</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>ui.forgotPassword.validationUserLookUpProperty</td>\n <td>user</td>\n </tr>\n \n \n <tr>\n <td>ui.gsp.layoutRegister</td>\n <td>register</td>\n </tr>\n \n \n <tr>\n <td>ui.gsp.layoutUi</td>\n <td>springSecurityUI</td>\n </tr>\n \n \n <tr>\n <td>ui.register.defaultRoleNames</td>\n <td>[ROLE_USER]</td>\n </tr>\n \n \n <tr>\n <td>ui.register.emailFrom</td>\n <td>Do Not Reply <do.not.reply@localhost></td>\n </tr>\n \n \n <tr>\n <td>ui.register.postRegisterUrl</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>ui.register.requireEmailValidation</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>ui.switchUserRoleName</td>\n <td>ROLE_SWITCH_USER</td>\n </tr>\n \n \n <tr>\n <td>useBasicAuth</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>useDigestAuth</td>\n <td >false</td>\n </tr>\n \n \n <tr>\n > <td>useExternalClasses</td>\n <td>false</td>\n > </tr>\n \n \n <tr>\n ><td>useHttpSessionEventPublisher</td>\n <td>false</td>\n > </tr>\n \n \n <tr>\n ><td>useRoleGroups</td>\n <td>false</td>\n </tr>\n > \n \n <tr>\n ><td>useSecurityEventListener</td>\n <td>false</td>\n > </tr>\n \n \n <tr>\n ><td>useSessionFixationPrevention</td>\n <td>true</td>\n > </tr>\n \n \n <tr>\n ><td>useSwitchUserFilter</td>\n <td>true</td>\n ></tr>\n \n \n <tr>\n ><td>useX509</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>userLookup.accountExpiredPropertyName</td>\n <td>accountExpired</td>\n </tr>\n \n \n <tr>\n <td>userLookup.accountLockedPropertyName</td>\n <td>accountLocked</td>\n </tr>\n \n \n <tr>\n <td>userLookup.authoritiesPropertyName</td>\n <td>authorities</td>\n </tr>\n \n \n <tr>\n <td>userLookup.authorityJoinClassName</td>\n <td>test.UserRole</td>\n </tr>\n \n \n <tr>\n <td>userLookup.enabledPropertyName</td>\n <td>enabled</td>\n </tr>\n \n \n <tr>\n <td>userLookup.passwordExpiredPropertyName</td>\n <td>passwordExpired</td>\n </tr>\n \n \n <tr>\n <td>userLookup.passwordPropertyName</td>\n <td>password</td>\n </tr>\n \n \n <tr>\n <td>userLookup.userDomainClassName</td>\n <td>test.User</td>\n </tr>\n \n \n <tr>\n <td>userLookup.usernameIgnoreCase</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>userLookup.usernamePropertyName</td>\n <td>username</td>\n </tr>\n \n \n <tr>\n <td>voterNames</td>\n <td>[]</td>\n </tr>\n \n \n <tr>\n <td>x509.checkForPrincipalChanges</td>\n <td>false</td>\n </tr>\n \n \n <tr>\n <td>x509.continueFilterChainOnUnsuccessfulAuthentication</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>x509.invalidateSessionOnPrincipalChange</td>\n <td>true</td>\n </tr>\n \n \n <tr>\n <td>x509.subjectDnClosure</td>\n <td></td>\n </tr>\n \n \n <tr>\n <td>x509.subjectDnRegex</td>\n <td>CN=(.*?)(?:,|$)</td>\n </tr>\n \n \n <tr>\n <td>x509.throwExceptionWhenTokenRejected</td>\n <td>false</td>\n </tr>\n \n </tbody>\n </table>\n</div>\n\n<script type="text/javascript" src="/assets/spring-security-ui-ajaxLogin.js?compile=false"></script>\n<script type="text/javascript" src="/assets/spring-security-ui.js?compile=false"></script>\n\n<script>\nvar loggingYouIn = "Logging you in ...";\n\t</script>\n\n\t</div>\n\t<script type="text/javascr ipt" src="/assets/webjars/jquery/4.0.0/dist/jquery.js?compile=false"></script>\n<script type="text/javascript" src="/assets/webjars/bootstrap/5.3.8/dist/js/bootstrap.bundle.js?compile=false"></script>\n<script type="text/javascript" src="/assets/application.js?compile=false"></script>\n\n\t\n\n\n</body></html>' at simple.spec.DefaultSecurityInfoSpec.testConfig_closure2(DefaultSecurityInfoSpec.groovy:44) at geb.waiting.Wait.waitFor(Wait.groovy:117) ... 5 more ``` </details> ### Muted Tests > [!NOTE] > Checks are currently running using the configuration below. Select tests to mute in this pull request: 🔲 DefaultSecurityInfoSpec > testConfig <!-- uniqueId=[engine:spock]/[spec:simple.spec.DefaultSecurityInfoSpec]/[feature:$spock_feature_2_0] --> Reuse successful test results: 🔲 ♻️ Only rerun the tests that failed or were muted before Click the checkbox to trigger a rerun: 🔲 **Rerun jobs** --- _Learn more about TestLens at [testlens.app](https://testlens.app)._ -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
