我正在为我的应用程序编写单元测试,我在服务内部执行的步骤之一是从SpringSecurityContext获取当前经过身份验证的用户。
我知道,如果我想模拟Spring Security Authentication,我可以使用@SusMockUser,但它对我不起作用,因为当测试方法到达getAuthentication()方法调用时,它总是返回null...
我已经搜索了很多问题和博客帖子,但没有一个有解决方案。我用@ExtendWith(MockitoExtension.class)注释我的测试类
我希望避免编写4行代码来模拟单个方法调用
//mock身份验证
//mock主体
//当SpringContextHolder.getContext(). getAuthentication-
编辑:
测试类
@ExtendWith(MockitoExtension.class)
public class SegmetnServiceTest {
@InjectMocks
private SegmentService service;
@Test
void testWithMockUser() {
//given
UpdateSegmentReq request = new UpdateSegmentReq();
String name = "TEST"
request.setName(name)
//when
SegmentNode segment = service.updateSegment(request);
//then
assertEquals(segment.getName(), name)
}
}
服务等级
public class SegmentService {
private SegmentRepository repository;
SegmentNode updateSegment(String code){
SegmentNode segment = repository.findByCode(code);
String userId = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
segment.updatedBy(userId);
return segment;
}
}
问题是,即使我用@SusMockUser注释我的Test方法,当它到达服务方法getAuthentication为空并且getMain抛出NPE。
您应该使用@ContextConfiguration
将Spring Security测试配置加载到Application Context中(假设您还具有spring-test
作为依赖项)请参阅澄清。
您可以使用注释SpringJUnitConfig来组合所需的注释--@ExtendWith(SpringExtension.class)
和@ContextConfiguration
--在测试中设置spring测试。
尽管我的测试方法被@WithMockUser注释,但我仍然被拒绝访问。为什么这在集成测试中不起作用?使用@webappconfiguration和mockmvc进行测试一切都很好。
我正在使用cucumber测试来测试我的Spring启动应用程序,启用了Spring安全。除了当我用cucumber测试一些使用Spring安全的测试时,事情运行得很好。 失败。如果我像简单的jUnit测试那样隐蔽地运行它们,这些测试确实有效,但是当使用cucumber测试步骤运行时失败了。当我用cucumber测试运行同样的测试时,这个问题看起来像是Spring安全测试模拟行为没有被应用。 我的
我已经开始学习OAuth2 spring安全从一个星期,所以对不起,如果问题是容易的。在我开始研究之前,这个话题对我来说似乎很容易。我将在应用程序中为Restendpoint编写测试。为了做到这一点,我将为我的资源类编写测试。但我的应用程序使用的是OAuth2。 第一个想法是配置单独的授权服务器,扩展AuthorizationServerConfigurerAdapter用于此测试。我已经将Cli
有多种工具可用于执行应用程序的安全性测试。很少有工具可以执行端到端安全测试,而有些工具专门用于发现系统中的特定类型的缺陷。 开源工具 一些开源安全测试工具如下 - 编号 工具名称 描述/简介 网站/网址 1 Zed Attack Proxy 提供自动扫描仪和其他工具,以发现安全漏洞。 https://www.owasp.org 2 OWASP WebScarab 使用Java开发,用于分析Http
我有一个带有Java配置类的Spring(4.2.5)项目。这些在正常运行项目时起作用,但我无法使我的测试工作。在下面的测试中,为空。 如果添加注释,则会出现异常 其中和在和中定义,后者是基于活动配置文件选择的。 [编辑2] 经过更多的搜索,我发现了这个问题,并且在检查了我的依赖项之后,我发现我在maven依赖项下有Spring-Core-4.1.9,而且我没有在我的POM中包含一个依赖项。添加依
这是我的安全配置代码: 但在编译spring时,仍在为我生成密码。 我通过print语句检查了配置是否正在加载,发现安全配置正在加载。我是否应该对给定的用户ID和密码进行任何更改。 提前感谢。