Este é um projeto desenvolvido durante o curso de Java ofertado pela Alura para as turmas da Oracle ONE. Este projeto, chamado Fórum HUB, é uma API REST desenvolvida em Java utilizando Spring Boot. Ele simula um fórum de discussão, onde os usuários podem criar, visualizar, atualizar e deletar tópicos de discussão, perfis, respostas, cursos e usuários. A partir de agora, apenas usuários autenticados podem interagir com a API. Este desafio é uma parte essencial do programa ONE Oracle Next Education T6, uma parceria entre a Oracle e a Alura, onde você terá a oportunidade de aplicar conceitos aprendidos durante o curso.
A aplicação oferece as seguintes funcionalidades:
- Cadastrar Usuário: Permite cadastrar um novo usuário no sistema.
- Visualizar Tópicos: Permite visualizar todos os tópicos de discussão disponíveis.
- Atualizar Tópico: Permite atualizar as informações de um tópico existente.
- Deletar Tópico: Permite excluir um tópico do sistema.
- Criar Resposta: Permite criar uma nova resposta em um tópico específico.
- Visualizar Perfil: Permite visualizar o perfil de um usuário.
- Atualizar Perfil: Permite atualizar as informações do perfil de um usuário.
- Deletar Perfil: Permite excluir o perfil de um usuário do sistema.
- Criar Curso: Permite criar um novo curso no sistema.
- Visualizar Cursos: Permite visualizar todos os cursos disponíveis.
- Atualizar Curso: Permite atualizar as informações de um curso existente.
- Deletar Curso: Permite excluir um curso do sistema.
- Visualizar Usuários: Permite visualizar todos os usuários cadastrados no sistema.
- Atualizar Usuário: Permite atualizar as informações de um usuário existente.
- Deletar Usuário: Permite excluir um usuário do sistema.
Para executar o projeto localmente, siga estas etapas:
- Clone este repositório para o seu ambiente local.
- Certifique-se de ter o JDK (Java Development Kit) e Maven instalados em sua máquina.
- Abra o prompt no diretório principal e execute o comando:
mvn clean install
- Configure o ambiente de banco de dados de acordo com as configurações do projeto. (Este projeto utiliza PostgreSQL).
- Configure as variáveis de ambiente corretamente:
JAVA_HOME
: Caminho para o diretório do seu JDKM2_HOME
: Caminho para o diretório do seu Maven- Adicione ambos ao
PATH
incluindo\bin
no final.
Defina as seguintes variáveis de ambiente:
DB_HOST
: Host do PostgreSQL (se estiver rodando localmente, serálocalhost
)DB_NAME
: Nome do banco de dados criadoDB_USER
: Seu usuário PostgreSQLDB_PASSWORD
: Sua senha PostgreSQL
No arquivo de configuração, utilize as variáveis da seguinte maneira:
spring.datasource.url=jdbc:postgresql://${DB_HOST}/${DB_NAME}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}
Esta documentação descreve os testes de integração para os controllers de uma aplicação Spring Boot. Os testes são configurados para simular chamadas HTTP e testar a serialização e deserialização de dados. Eles utilizam mocks para simular o comportamento do banco de dados e testar a funcionalidade dos controllers sem a necessidade de uma conexão real.
@SpringBootTest
: Indica que a classe é um teste que deve carregar o contexto do Spring.@AutoConfigureMockMvc
: Configura automaticamente o MockMvc.@AutoConfigureJsonTesters
: Configura automaticamente os testadores JSON.
MockMvc mvc
: Para simular chamadas HTTP.JacksonTester<DadosCadastroTopico> dadosCadastroTopicoJson
: Para testar a serialização e deserialização deDadosCadastroTopico
.
- A classe
TopicoControllerTest
é configurada para realizar testes de integração com o Spring Boot, focando no comportamento doTopicoController
. - Utiliza-se
@MockBean
para criar mocks dos repositórios necessários, permitindo simular o comportamento do banco de dados sem a necessidade de uma conexão real. @WithMockUser
pode ser usado em métodos de teste para simular a autenticação de um usuário.- A documentação acima é baseada nas primeiras 49 linhas do arquivo e pode não representar a totalidade do teste ou das funcionalidades testadas.
@SpringBootTest
: Indica que a classe é um teste que deve carregar o contexto do Spring.@AutoConfigureMockMvc
: Configura automaticamente o MockMvc.@AutoConfigureJsonTesters
: Configura automaticamente os testadores JSON.
MockMvc mvc
: Para simular chamadas HTTP.JacksonTester<DadosCadastroResposta> dadosCadastroRespostaJson
: Para testar a serialização e deserialização deDadosCadastroResposta
.TopicoRepository topicoRepository
: Mock do repositório de tópicos.
- A classe
RespostaControllerTest
é configurada para realizar testes de integração com o Spring Boot, focando no comportamento doRespostaController
. - Utiliza-se
@MockBean
para criar mocks dos repositórios necessários, permitindo simular o comportamento do banco de dados sem a necessidade de uma conexão real. @WithMockUser
pode ser usado em métodos de teste para simular a autenticação de um usuário.- A classe parece incompleta, pois há comentários indicando partes do código que podem ter sido removidas ou estão pendentes de implementação (como o
dadosDetalhadamentoRespostaJson
). - A documentação acima é baseada nas primeiras 49 linhas do arquivo e pode não representar a totalidade do teste ou das funcionalidades testadas.
@SpringBootTest
: Indica que a classe é uma classe de teste que deve ser executada com o suporte do Spring Boot para testes, incluindo a configuração do contexto da aplicação.@AutoConfigureMockMvc
: Configura automaticamente o MockMvc.@AutoConfigureJsonTesters
: Configura automaticamente os testadores JSON.
MockMvc mvc
: Injetado para simular requisições HTTP.JacksonTester<DadosCadastroCursos> dadosCadastroCursosJason
: Utilizado para testar a serialização e deserialização de objetos relacionados ao cadastro de cursos.JacksonTester<DadosDetalhadamentoCurso> dadosDetalhadamentoCursoJason
: Utilizado para testar a serialização e deserialização de objetos relacionados ao detalhamento de cursos.CursoRepository repository
: Mockado para simular operações do repositório de cursos.
- Anotações:
@Test
: Indica que o método é um teste.@DisplayName("Deveria devolver código 400 quando informações estão inválidas")
: Descreve o propósito do teste.@WithMockUser
: Executa o teste com um usuário mockado.
- Descrição: Testa o cenário onde informações inválidas são enviadas para o endpoint de cursos, esperando-se que o código de resposta seja 400 (Bad Request).
- Exceções:
Exception
: Lançada se ocorrer algum erro durante a execução do teste.
@SpringBootTest
: Indica que a classe é uma classe de teste que deve ser executada com o suporte do Spring Boot para testes, incluindo a configuração do contexto da aplicação.
- Anotações:
@Test
- Descrição: Método de teste para verificar se o contexto da aplicação é carregado com sucesso.
- Parâmetros: Nenhum.
- Retorno: Void (não retorna nada).
Este projeto foi desenvolvido com o intuito de aplicar os conceitos aprendidos durante o curso de Java da Alura. Através dele, pude aprimorar meus conhecimentos em Spring Boot, Spring Security, JPA, Hibernate, entre outros. Além disso, pude aprender a utilizar o Postman para testar as requisições da API. Este projeto foi uma excelente oportunidade para consolidar o aprendizado e me preparar para os próximos desafios que virão pela frente.
- Badge
Copyright © 2024 ClaudioMendonca.eng.br.