Как я могу проверить мой метод Службы начальной загрузки, который имеет объект Аутентификации в качестве параметра? - PullRequest
1 голос
/ 24 марта 2020

Я создаю конечную точку Spring Boot в Kotlin, и мне нужно создать тесты для этого. Я мог бы создать тест для моего класса контроллера ниже:

import org.springframework.security.core.Authentication

@RestController
@RequestMapping("/servicos/solicitacoes")
class SolicitacaoController {


    @Autowired
    private lateinit var solicitacaoService: SolicitacaoService

    @PostMapping(consumes = [MediaType.APPLICATION_JSON_VALUE])
    fun post(@RequestBody solicitacaoDTO: SolicitacaoDataClassDTO, @ApiIgnore authentication: Authentication): Solicitacao {
        return solicitacaoService.addSolicitacao(solicitacaoDTO, authentication)
    }
}

Однако, поскольку у моего класса обслуживания есть параметр Authentication, я не знаю, как я могу создать тест для своего класса обслуживания.

Это мой класс обслуживания:

@Service
class SolicitacaoService {
    @Autowired
    private lateinit var solicitacaoRepository: SolicitacaoRepository

    @Autowired
    private lateinit var acessoSistema: AcessoSistema

    fun addSolicitacao(solicitacaoDTO: SolicitacaoDataClassDTO, authentication: Authentication): Solicitacao{
        val idInstitucional = acessoSistema.getIdInstitucional(authentication)
        // Some Businnes logic
        return solicitacaoRepository.save(solicitacao)
    }
}

Процесс аутентификации выполняется с помощью токена Keycloak, который клиент должен получить для доступа к внутренним службам.

Я могу Проверьте мой контроллер, потому что в моем почтовом запросе я отправляю токен в заголовке запроса. Однако для тестирования метода addSolicitacao в моей службе мне нужно создать объект аутентификации.

Есть идеи, как создать тест для моего SolicitacaoService? Я использую JUnit и Mockito. Я думал о том, чтобы издеваться над моим репозиторием Solicitacao в моем SolicitacaoServiceTest. Однако я не знаю, как я могу создать Аутентификацию объекта с параметрами моего сервера Keycloak.

Это мой SolicitacaoServiceTest:

@RunWith(SpringRunner::class)
//@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class SolicitacaoServiceTest {

    @Autowired
    private lateinit var solicitacaoService: SolicitacaoService

    @MockBean
    private lateinit var solicitacaoRepository: SolicitacaoRepository

    @Test
    fun quandoAdicionarSolicitacaoComUsuarioComum_entaoSolicitacaoDeveSerRetornada(){


    }


}
...