Тест webmcv и безопасность работают с get, но не работают с put - PullRequest
0 голосов
/ 11 октября 2019

Я тестирую свое get отображение без проблем, но аналогичный тест для put отображения возвращает 403. Почему? что я должен настроить, чтобы все тесты прошли?

мое приложение:

@SpringBootApplication
class DemoApplication

@RestController
class MyController {

    @GetMapping("/api/a")
    fun a(principal: Principal): String = """"hello ${principal.name}""""

    @PutMapping("/api/b")
    fun b(principal: Principal): String = """"hello ${principal.name}""""
}


@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
class SecurityConfig : WebSecurityConfigurerAdapter() {

    @Bean
    override fun authenticationManagerBean(): AuthenticationManager {
        return super.authenticationManagerBean()
    }

    override fun configure(auth: AuthenticationManagerBuilder){
        auth.inMemoryAuthentication()
                .withUser("admin")
                .password("admin")
                .roles("USER")
    }

    override fun configure(web: WebSecurity) {}

    override fun configure(http: HttpSecurity) {}

    @Bean
    fun passwordEncoder(): PasswordEncoder = NoOpPasswordEncoder.getInstance()
}        

fun main(args: Array<String>) {
    runApplication<DemoApplication>(*args)
}

мои тесты:

@WebMvcTest(MyController::class)
class MockedTokenTest {

    @Autowired
    lateinit var mockMvc: MockMvc

    @Test
    fun `call get api using mocked token`() {

        mockMvc.perform(
                get("/api/a")
                        .with(authentication(TestingAuthenticationToken(UserPrincipal("admin3"), 2)))
        )
                .andExpect(status().isOk)
                .andExpect(content().json(""""hello admin3""""))
    }

    @Test
    fun `call put api using mocked token`() {

        mockMvc.perform(
                put("/api/b")
                        .with(authentication(TestingAuthenticationToken(UserPrincipal("admin3"), 2)))
        )
                .andExpect(status().isOk)
                .andExpect(content().json(""""hello admin3""""))
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...