我们有一个Groovy脚本与一个退出status的0时候一切工作和non-0 status针对不同类型的故障条件.例如,如果脚本了用户和一个电子邮件地址作为参数,它将与一个退出status的1为无效的用户,和status的2为无效的电子邮件地址格式.我们用System.exit(statusCode)它.这工作正常,但使脚本难以编写测试用例.
在测试中,我们创建我们的GroovyShell,创建我们的Binding和调用shell.run(script,args).对于断言失败条件的测试,System.exit()导致JVM(和测试)退出.
是否有使用System.exit()退出Groovy脚本的替代方法?我尝试抛出未捕获的异常,但是使输出变得混乱,并且始终使状态代码为1.
在我们的测试用例中,我还尝试使用System.metaClass.static.invokeMethod更改System.exit()不退出JVM 的行为,但这似乎是一个丑陋的黑客.
我需要确保使用Google Signin登录的用户最近已通过多因素身份验证进行了身份验证。查看OpenID 连接请求参数,可以看到一些内容,例如 Promise for this:acr_values和max_age。
测试期间max_age似乎没用。我仍然只是使用现有的 cookie 进行身份验证,而不是由 Google主动进行身份验证。使用此请求参数确实会包含id token此 json
"amr": [
"rba"
],
Run Code Online (Sandbox Code Playgroud)
根据此rfc,这意味着身份验证方法参考是基于风险的身份验证。事实证明这总是会返回rba。如果注销然后重新登录,它会返回rba,而不像pwd mfa我预期的那样。
我没有看到为 定义任何值acr_values。
所以...
是否有可能:
auth_time似乎已设置为当我启动登录流程时 Google 看到我的会话 cookie 的时间)我收到一条错误消息Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/spring.properties] cannot be opened because it does not exist.spring.properties文件确实存在,并且位于我的/ WEB-INF目录中(我已经确认它在构建项目后位于我的构建目录中).我把它设置在我的项目的.classpath目录中,如下所示:
<classpathentry kind="src" path="src/main/webapp/WEB-INF/spring.properties"/>
Run Code Online (Sandbox Code Playgroud)
在我的Spring应用程序上下文中,我输入如下:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/spring.properties" />
</bean>
Run Code Online (Sandbox Code Playgroud)
如果这是一个基本问题我很抱歉,但我真的很困惑,问题是什么以及如何解决它,我已经做了很多搜索,似乎无法弄明白.谢谢你的建议