问题标签 [spring-security-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1997 浏览

spring-test - 涉及具有惰性集合的实体的 Spring 集成测试问题

我正在试验新的 Spring Security Test 框架。我有一个涉及返回带有惰性集合的 JPA 实体的测试。

由于惰性集合之一,以下测试以错误告终。

这是错误消息:

我在测试设置中遇到了什么问题?为什么过早关闭 JPA 实体管理器?我该如何规避这个问题?

编辑1

来自控制器的方法:

服务方法:

编辑 2

我意识到测试实际上是错误的,即使我已经用@Transactional如下注释测试方法:

这是错误消息:

编辑 3

以下是课程的相关部分:

0 投票
1 回答
1529 浏览

java - 测试 Spring Boot 安全配置

我做了一个非常简单的演示应用程序来尝试测试 Spring Boot 安全性。

这是我的应用程序配置

我的 UserDetailsS​​ervice 实现接受所有密码为“password”的用户,将管理员角色授予“admin”用户。

最后我创建了一个简单的测试来检查它:

我希望测试通过,但我得到了 BadCredentialsException。调试后发现测试中Spring注入的AuthenticationManager不是我配置的。在 Eclipse 调试器中挖掘对象时,我看到 UserDetailsS​​erver 是一个 InMemoryUserDetailsManager。

我还检查了 DemoApplication 中的 configure() 方法是否被调用。我究竟做错了什么?

0 投票
0 回答
788 浏览

spring-mvc - 使用 RequestPostProcessor 与注释的 Spring MVC 测试

我有一个使用 JHipster 创建的应用程序。我生成了一个博客实体,然后修改了BlogResource类,使其getAll()方法只返回当前用户的博客。

BlogRepositoryfindAllForCurrentUser()方法如下。

为了测试这一点,我可以使用 Spring Security 的RequestPostProcessor

我很想知道为什么使用这样的注释@WithMockUser并且@WithUserDetails不会为此工作。如果我将其更改为使用注释,则会收到以下错误:

0 投票
2 回答
2561 浏览

spring-mvc - Spring Security Test 和 MockMvc 向 REST 控制器提供 null 自定义 UserDetails 参数

我正在尝试编写一个集成测试来访问 REST 端点并获取特定经过身份验证的用户(我在测试中设置的用户)的数据。我最初尝试使用 进行设置mockMvc = webAppContextSetup(wac).apply(springSecurity()).build(),但使用BeanInstantiationException. 在使用自定义 UserDetails implementation 测试 Spring Security 和 MvcMock的帮助下,我能够通过切换我的 setUp 来克服这个问题。现在我已经将我的设置切换为使用standaloneSetup,我可以调用我的控制器了。但是,无论我做什么,我都无法将我在测试中创建的自定义 UserDetails 对象放入我的控制器中调用 MockMvc 结束的方法中。

我正在使用 Spring 4.2.2 和 Spring Security 4.0.1。

我的测试代码如下所示:

为了简洁起见,省略了其他一些不相关的配置。我真的不明白为什么我在测试中明确创建的自定义 UserDetails 对象没有传递到我的 REST 控制器中,而是一个空对象。我在这里做错了什么?有没有人有类似案例的工作示例?提前谢谢了。

0 投票
1 回答
3385 浏览

spring-security - 使用 Spring 安全测试来测试一个安全的 Spring MVC 控制器

遵循 有关使用Spring Security Test为连接在Spring Security后面的 Spring MVC 应用程序编写测试的文档

这是一个普通的 spring-boot 应用程序,采用典型的 spring-security 接线。这是主要的Application.java

这是弹簧安全性的接线:

如您所见,除了“/”和“/sign_up”之外的所有请求都需要进行身份验证。我通过部署应用程序验证了身份验证方案可以正常工作。


现在是有趣的部分:编写 spring mvc 测试。我提供的链接提供了一些编写此类测试的好方法,其中spring-security-test框架允许插入模拟用户/安全上下文。我采取的方法

  1. 定义一个模拟 UserDetails 接口,以及
  2. 使用 SecurityContextFactory 创建一个 SecurityContext,它
  3. 应该在测试启动期间插入到应用程序上下文中。

1.的代码如下:

2.的代码如下:


最后,这是测试类:

测试运行的输出:

  1. 测试 1 通过。
  2. 测试 2 通过。
  3. 测试 3 失败。预期的输出,但得到了 <>。

很可能测试 3 失败,因为“SecurityContext”从未得到适当填充。根据文档,它应该可以工作。不知道我错过了什么。任何帮助深表感谢。

0 投票
1 回答
3911 浏览

spring - Spring Security Unit Test - MockMvc 使用自定义用户执行测试

我正在为我的 Spring MVC 控制器设置单元测试,并且我正在尝试利用 Spring MVC 测试框架。对于我的控制器中的每个端点,我想确保只有具有指定权限的用户才能访问。我的问题是我使用自定义用户实现并在使用 mockMvc 工具时获取类转换异常。

对于每个请求,我希望它看起来像这样:

我想以某种方式调整上述语句以指定我的自定义用户主体。请参阅下面的 Spring 的用户方法。我的第一个想法是我会覆盖该类UserRequestPostProcessor并对其进行调整,以便它使用我的自定义用户类型而不是标准的 Spring Security 用户,但是这个类被声明为 final 并且不能被子类化。是否支持覆盖默认行为并使用自定义用户类型?

据我所见,我是使用@WithSecurityContext注释我的测试的候选人,以便我可以在身份验证中设置我的自定义用户主体。我在这里担心的是,我将仅限于为每种方法测试一个用户,而这不适用于我正在尝试做的事情。

如何测试多个自定义用户提出的请求?

0 投票
1 回答
1883 浏览

java - Gradle没有下载测试依赖项

我正在寻找向使用 gradle 的项目添加测试依赖项。我只需要让 gradle 下载依赖 jar,这样我就可以导入包的一部分。我需要的是以下软件包:

所以我编辑了我的 gradle 文件以包含

进入后我尝试构建项目。不幸的是,这没有用,我不能import org.springframework.security.test.*然后我跑了gradlew test它实际上取得了一些成功并显示:

虽然我不知道它下载到哪里。导航到$HOME/.gradle/caches/modules-2/files-2.1/org.springframework.security我看不到下载包的迹象(并且 Idea 在其外部库中无法识别它)。跑步gradle build --refresh-dependencies似乎没有用。
任何帮助将不胜感激。

关闭我能找到的 SO 问题

0 投票
2 回答
370 浏览

spring - 在最新的春季安全测试中缺少依赖项

我需要解决下面显示的代码中提到的某些方法(状态、jsonPath、内容)-

当我搜索包含这些方法的相关项目时,其中许多都在导入以下

问题是我无法在版本 4.2.2.RELEASE 的包 spring-security-test 中找到对应项

最接近的选项可能有效但没有

以上不包含我正在寻找的方法。知道我应该在哪里寻找这些方法或它们的新方法。

0 投票
1 回答
3022 浏览

spring - Spring Security + Spring-Boot 测试控制器

我正在尝试测试家庭控制器

我使用spring security作为用户名“user”并默认测试为密码,但@PreAuthorize不起作用

结果

预期结果:

<"[你好世界!]">

实际结果:

<"{"timestamp":1501100448216,"status":401,"error":"Unauthorized","message":"访问此资源需要完全认证","path":"/"}]">

我错过了什么吗?

0 投票
1 回答
899 浏览

java - 测试时似乎没有应用 spring-security 的配置

我已经配置了一个带有相应 xml 安全配置的独立 mockMvc,用于测试使用 @PreAuthorize(hasAnyRole('DM,CD')) 注释的控制器。但是我的测试结果始终是 tatus 200,即使我与角色不正确的用户进行了通话。我相信我的 xml 配置遗漏了一些东西,但这只是一个假设。

这是我要测试的控制器:

这是从主要配置中借来的测试 spring-security.xml :

这是我对控制器的测试:

但结果我得到

testContextConfig.xml 文件只是一个空上下文。

任何建议将被认真考虑

使用相应注释更新 ViewControllerInterface 的创建并没有帮助,以及添加

配置文件

更新 2 有趣的是,当我尝试使用 mockMvc.perform(get("/v1/view").with(user("name"))).andReturn().getResponse()

我收到

所以看起来我的 securityFilterChain 没有应用于请求(但是,在调试中我可以看到 mockMvc 实例中的所有过滤器)