所以基本上我在我的rest控制器上做了一些单元测试,在使用Spring Security之前,一切都很顺利,在添加它并将Spring Security设置到我的mockmvc后,它总是返回302,其他什么都没有,在修改我的代码和浏览器后,我发现在登录后,我确实收到了302代码,这是因为重定向,我的配置中的loginProcessingUrl似乎导致了以下情况:
我的Spring安全配置:
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/showMyLoginPage")
.loginProcessingUrl("/authenticateTheUser")
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/")
.logoutUrl("/logoutUser")
.and()
.csrf()
.disable();
}
我正在测试的REST方法:
@GetMapping(path = "/list/getProducts")
public String getProducts()
{
List<Product> products = productService.getProducts();
return gson.toJson(products);
}
最后是我的测试:
@RunWith(SpringRunner.class)
@ContextConfiguration(locations = "file:src/test/java/resources/ProductCRUD-servlet.xml")
@WebAppConfiguration
public class ProductControllerTest
{
@Autowired
WebApplicationContext context;
@InjectMocks
private ProductRestController productRestController;
@Mock
private ProductService productService;
private MockMvc mockMvc;
@Before
public void setup()
{
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders
.webAppContextSetup(context)
.apply(springSecurity())
.build();
}
@Test
public void getAllProductsTest() throws Exception
{
List<Product> products = new ArrayList<>();
products.add(new Product("4532", 123, "Product test", "test"));
Mockito.when(productService.getProducts())
.thenReturn(products);
mockMvc.perform(MockMvcRequestBuilders
.get("/product/list/getProducts"))
.andExpect(status().isOk)
.andExpect(content().string(containsString("\"productId\":\"4534\"")));
}
所以现在发生的事情是,即使我的网站正在工作,我正在检索我的json,登录过程不知怎么搞砸了我的测试。
即使我将测试状态代码设置为302而不是200,它也不会返回任何内容。
Expected :a string containing "\"productId\":\"4534\""
Actual :""
TLDR:在测试受Spring Security保护的REST api时,我无法通过测试访问api。
对于Spring Security集成测试,我们可以使用@SusMockUser
作为11.测试方法安全性(当前的Spring-安全指南)提出的方法。
然而,测试“受限场景”也很好,我们将提供未经授权/忽略/匿名用户,并断言相应的反应(异常、http代码、重定向等)。
我正在测试家庭控制器 我使用spring security作为用户名“user”,默认情况下作为密码进行测试,但@PreAuthorize不起作用 的结果 预期结果: 实际结果: 我错过了什么吗?
本文向大家介绍Spring Boot Rest控制器单元测试过程解析,包括了Spring Boot Rest控制器单元测试过程解析的使用技巧和注意事项,需要的朋友参考一下 Spring Boot提供了一种为Rest Controller文件编写单元测试的简便方法。在SpringJUnit4ClassRunner和MockMvc的帮助下,可以创建一个Web应用程序上下文来为Rest Controll
我有两个控制器,一个用于用户,一个用于角色。我已经为用户控制器编写了测试,但是当我尝试运行测试时,它会给我以下错误: "由以下原因引起:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的'uk.co.circuare.cube.service.user.repository.RoleRepository'类型的
我的应用程序有Spring boot 1.3.2,我正在尝试将Spring MVC与Spring Security结合使用。 我有管理小组http://localhost:8080/admin和我的普通用户页面内容http://localhost:8080/ 如果你试图打开一个管理面板(http://localhost:8080/admin)你必须登录,如果你是常见的只需输入http://loca
我试图使用mockmvcbuilders.standalonesetup方法为一个spring mvc rest控制器创建一个非常基本的单元测试。我一直收到一个404错误。下面列出了测试应用程序上下文、测试类、控制器和整个堆栈跟踪。欢迎任何指导。 java.lang.AssertionError:状态应为:<200>但实际为:<404>在org.springframework.test.util.
我已经开始学习OAuth2 spring安全从一个星期,所以对不起,如果问题是容易的。在我开始研究之前,这个话题对我来说似乎很容易。我将在应用程序中为Restendpoint编写测试。为了做到这一点,我将为我的资源类编写测试。但我的应用程序使用的是OAuth2。 第一个想法是配置单独的授权服务器,扩展AuthorizationServerConfigurerAdapter用于此测试。我已经将Cli