当前位置: 首页 > 知识库问答 >
问题:

如何为配置了Spring Security性的SpringBoot API编写单元测试

姜宏放
2023-03-14

我创建了一个包含各种endpoint的Spring Boot应用程序。除了注册和登录终结点之外,我为其他请求添加了过滤器。所有其他请求应具有:

授权持有人

并且请求通过Spring Security筛选链,该筛选链通过UserDetailService检查用户是否存在于表中。

我想知道如何在Spring Security性就绪的情况下为任何GET/POST API编写单元测试?

我想到的一种方法是通过调用signupAPI生成实际的令牌,然后使用signup API生成的授权令牌调用其他API。

可能有一些方法可以模拟或跳过单元测试的授权承载

我想知道这是什么样的正确/最佳方法?


共有1个答案

海叶秋
2023-03-14

对于我的应用程序,我一直在使用MockUser注释与MockMvcbean的组合MockUser能够使用用户及其主体填充Spring SecurityContext,其中包括他的user对象和GrantedAuthority(也称角色)。有了它,您可以测试控制器,而无需创建任何令牌。这与你的自我测试过程更容易、更不耦合。

这样地:

@Test
@WithMockUser("admin")  
void testAuthorize() throws Exception {
    this.mockMvc.perform(get("/objects")).andExpect(status().isOk());
}

在Spring文档中,您可以阅读更多关于。您还可以使用@And AnnamousUser来模拟anonnymouser,@天用户详细信息来放置自定义的UserDetailsService。

 类似资料:
  • 试图弄清楚我是否可以使用spring kafka和spring kafka测试为@KafkaListener编写单元测试。 我的听众课。 我的测试类别: 我的测试配置类: 有什么简单的方法可以做到这一点吗? 或者我应该以其他方式测试@KafkaListener?在单元测试中,如何确保在Kafka中收到新消息时调用@KafkaListener。

  • 问题内容: 我有一个Java课。如何进行 单元测试? 就我而言,我有课做一个二进制和。它需要两个数组,将它们求和,然后返回一个新的二进制数组。 问题答案: 使用正确的输入定义正常情况下的预期和期望输出。 现在,通过声明一个类来实现测试,将其命名为任何东西(通常是类似TestAddingModule之类的东西),并向其添加testAdd方法(即,类似于下面的方法): 编写一个方法,并在其上方添加@T

  • 我一直在学习使用Jest库编写JavaScript/TypeScript代码的单元测试。下面是一个我不知道如何处理的例子。它是用TypeScript输入的——只有两个公共方法和一个构造函数需要service1参数。 我想我需要测试两种情况: > 如果 函数为空。我没有在代码中看到它的任何实现,也不知道它是如何工作的。我应该把它作为参数传递给这个类的实例吗? 我很困惑,在这个特定的例子中,我应该使用

  • 我不会告诉你有关后台任务的单元测试的任何内容,因为Hangfire没有添加任何特定方法 (除了 IJobCancellationToken 接口参数)去改变任务。使用您最喜爱的工具,并照常写入单元测试。本节介绍如何测试创建的后台任务。 所有的代码示例都使用静态 BackgroundJob 类来告诉你如何做这个或那些东西,只是出于简单演示的目的。但是当你想测试调用的静态方法时,会变得很痛苦。 不用担