Spring Security 我应该从控制器单元测试中排除安全性吗?[已关闭]

rsaldnfx  于 2023-10-20  发布在  Spring
关注(0)|答案(1)|浏览(113)

已关闭,此问题为opinion-based。它目前不接受回答。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。

上个月关门了。
Improve this question
在我的Spring应用程序中,我想写测试。因此,“/companies”端点是安全的,需要一个ADMIN或USER角色。在单元测试中,我是否应该绕过安全性而只关注业务逻辑,然后在集成测试中使用安全性进行测试?或者我应该在单元测试中考虑安全性?
没有安全:

@WebMvcTest(CompanyController.class)
@AutoConfigureMockMvc(addFilters = false)
class CompanyControllerTest2 {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private CompanyService companyService;

    @Autowired
    private ObjectMapper objectMapper;

    @MockBean
    private ResourceAccessHelper resourceAccessHelper;

    @MockBean
    private TokenAuthenticationFilter tokenAuthenticationFilter;

    @Test
    void shouldCreateCompany() throws Exception {
        CompanyDto companyDto = CompanyDto.builder().companyName("My   Company").description("Description").build();
        CompanyDto savedCompany = companyDto;
        savedCompany.setId(1L);

        given(companyService.saveNewCompany(companyDto)).willReturn(savedCompany);

        mockMvc.perform(post("/companies")
                .contentType(MediaType.APPLICATION_JSON)
                .content(objectMapper.writeValueAsString(companyDto)))
                .andExpect(status().isCreated())
                .andExpect(header().exists("Location"));
    }
}

或者在这里使用@WithMockUser(username =“user”,roles = SecurityConfig.USER)?哪一个选项是更好的选择?

z18hc3ub

z18hc3ub1#

我会做的(已经做的)是绕过单元/组件测试(需要测试类或特定层)的安全性,并在集成测试中添加安全性。

相关问题