diff --git a/.ci/script.sh b/.ci/script.sh index 422a936..efebb38 100755 --- a/.ci/script.sh +++ b/.ci/script.sh @@ -1,3 +1,3 @@ #!/bin/bash export MAVEN_OPTS="-Xmx1G -Xms128m" -mvn test -Dspring.profiles.active=staging +mvn test -Dspring.profiles.active=test diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml deleted file mode 100644 index 35ebafd..0000000 --- a/.github/workflows/maven.yml +++ /dev/null @@ -1,24 +0,0 @@ -# This workflow will build a Java project with Maven -# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven - -name: Java CI with Maven - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - name: Build with Maven - run: mvn test -Dspring.profiles.active=test \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 847f6fe..581c16c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,10 @@ services: addons: postgresql: "9.5" +env: + global: + - CODECOV_TOKEN="2c77ac19-9298-48c4-b298-766afd63904a" + install: true before_install: @@ -16,4 +20,7 @@ before_install: script: - chmod +x ./.ci/script.sh - - ./.ci/script.sh \ No newline at end of file + - ./.ci/script.sh + +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/README.md b/README.md index 4734890..8c32b6d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![Build Status](https://travis-ci.com/muriloalvesdev/github-developers.svg?token=ioemJXEZtsUqgszw2Nq4&branch=master)](https://travis-ci.com/muriloalvesdev/github-developers) -## GitHub Developers [API] +## GitHub Developers API ## License [Apache License 2.0](https://github.com/muriloalvesdev/github-developers/blob/master/LICENSE) @@ -67,7 +67,7 @@ Caso você queira apenas baixar a imagem e executar a aplicação, basta seguir - Execute o comando `$docker run ` para executar o container. - E agora você ja deve ter a aplicação sendo executada. -# Consumindo a aplicação com Swagger +## Consumindo a aplicação com Swagger - Caso você queira apenas consumir as APIs do projeto, ele está hospedado no [Heroku](https://heroku.com). - A URL da aplicação com o Swagger é esta: `https://github-developers.herokuapp.com/swagger-ui.html` diff --git a/pom.xml b/pom.xml index 49de9bb..f818107 100644 --- a/pom.xml +++ b/pom.xml @@ -105,8 +105,23 @@ spring-boot-maven-plugin - org.apache.maven.plugins - maven-surefire-plugin + org.jacoco + jacoco-maven-plugin + 0.8.6 + + + + prepare-agent + + + + report + test + + report + + + diff --git a/src/main/java/br/com/developers/controller/github/GithubController.java b/src/main/java/br/com/developers/controller/github/GithubController.java index e7331e9..8638d2d 100644 --- a/src/main/java/br/com/developers/controller/github/GithubController.java +++ b/src/main/java/br/com/developers/controller/github/GithubController.java @@ -1,6 +1,7 @@ package br.com.developers.controller.github; import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -22,6 +23,7 @@ public class GithubController { private GithubService service; @GetMapping("search/{endpoint}") + @PreAuthorize("hasRole('ADMIN')") public ResponseEntity search(@PathVariable(name = "endpoint") String endpoint, @RequestParam(name = "qualifier") String qualifier, @RequestParam(name = "sort", required = false) String sort, diff --git a/src/test/java/br/com/developers/constants/UserConstantsForTests.java b/src/test/java/br/com/developers/constants/UserConstantsForTests.java index 04647b7..f671647 100644 --- a/src/test/java/br/com/developers/constants/UserConstantsForTests.java +++ b/src/test/java/br/com/developers/constants/UserConstantsForTests.java @@ -1,7 +1,11 @@ package br.com.developers.constants; -public interface UserConstantsForTests { +import com.fasterxml.jackson.databind.ObjectMapper; +public interface UserConstantsForTests { + static final ObjectMapper MAPPER = new ObjectMapper(); + static final String PATH = "/api/user/"; + static final String PATH_LOGIN = "/api/auth/"; static final String EMAIL = "murilohenrique.ti@outlook.com.br"; static final String FIRST_NAME = "Murilo"; static final String LAST_NAME = "Batista"; diff --git a/src/test/java/br/com/developers/controller/github/GithubControllerIntegrationTests.java b/src/test/java/br/com/developers/controller/github/GithubControllerIntegrationTests.java deleted file mode 100644 index 341bc96..0000000 --- a/src/test/java/br/com/developers/controller/github/GithubControllerIntegrationTests.java +++ /dev/null @@ -1,78 +0,0 @@ -package br.com.developers.controller.github; - -import static org.hamcrest.CoreMatchers.is; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.web.context.WebApplicationContext; - -@SpringBootTest -class GithubControllerIntegrationTests { - - private static final String QUALIFIER_USER = "muriloalvesdev"; - private static final String QUALIFIER_REPOSITORIE = "thehero-backend"; - - @Autowired - private WebApplicationContext webApplicationContext; - - private MockMvc mockMvc; - - @BeforeEach - void setUp() { - this.mockMvc = MockMvcBuilders.webAppContextSetup(this.webApplicationContext).build(); - } - - @Test - void shouldSearchUsers() throws Exception { - this.mockMvc - .perform(get(GithubController.PATH + "search/users") - .contentType(MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON_VALUE) - .param("qualifier", QUALIFIER_USER)) - .andExpect(status().isOk()).andExpect(jsonPath("$.total_count", is(1))) - .andExpect(jsonPath("$.incomplete_results", is(false))) - .andExpect(jsonPath("$.items[0].login", is("muriloalvesdev"))) - .andExpect(jsonPath("$.items[0].id", is(35849751))) - .andExpect(jsonPath("$.items.[0].avatar_url", - is("https://avatars0.githubusercontent.com/u/35849751?v=4"))) - .andExpect(jsonPath("$.items[0].html_url", is("https://github.com/muriloalvesdev"))); - } - - @Test - void shouldSearchRepositories() throws Exception { - this.mockMvc - .perform(get(GithubController.PATH + "search/repositories") - .contentType(MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON_VALUE) - .param("qualifier", QUALIFIER_REPOSITORIE)) - .andExpect(status().isOk()).andExpect(jsonPath("$.total_count", is(1))) - .andExpect(jsonPath("$.incomplete_results", is(false))) - .andExpect(jsonPath("$.items[0].private", is(false))) - .andExpect(jsonPath("$.items[0].full_name", is("muriloalvesdev/thehero-backend"))) - .andExpect(jsonPath("$.items[0].description", is( - "Este projeto foi desenvolvido com o intuito de ajudar ONGs que cuidam de animais."))) - .andExpect(jsonPath("$.items[0].html_url", - is("https://github.com/muriloalvesdev/thehero-backend"))) - .andExpect(jsonPath("$.items[0].created_at", is("2020-04-21T18:52:53Z"))) - .andExpect(jsonPath("$.items[0].clone_url", - is("https://github.com/muriloalvesdev/thehero-backend.git"))) - .andExpect(jsonPath("$.items[0].homepage", is("https://thehero.netlify.app/"))) - .andExpect(jsonPath("$.items[0].language", is("Java"))) - .andExpect(jsonPath("$.items[0].license.key", is("apache-2.0"))) - .andExpect(jsonPath("$.items[0].license.name", is("Apache License 2.0"))) - .andExpect(jsonPath("$.items[0].license.spdx_id", is("Apache-2.0"))) - .andExpect( - jsonPath("$.items[0].license.url", is("https://api.github.com/licenses/apache-2.0"))) - .andExpect(jsonPath("$.items[0].default_branch", is("master"))) - .andExpect(jsonPath("$.items[0].owner.login", is("muriloalvesdev"))) - .andExpect(jsonPath("$.items[0].owner.id", is(35849751))) - .andExpect(jsonPath("$.items.[0].owner.avatar_url", - is("https://avatars0.githubusercontent.com/u/35849751?v=4"))) - .andExpect(jsonPath("$.items[0].owner.html_url", is("https://github.com/muriloalvesdev"))); - } -} diff --git a/src/test/java/br/com/developers/controller/user/UserControllerIntegrationTests.java b/src/test/java/br/com/developers/controller/user/UserControllerIntegrationTests.java index 30c6f11..7d25036 100644 --- a/src/test/java/br/com/developers/controller/user/UserControllerIntegrationTests.java +++ b/src/test/java/br/com/developers/controller/user/UserControllerIntegrationTests.java @@ -19,7 +19,6 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import br.com.developers.constants.UserConstantsForTests; import br.com.developers.login.dto.LoginDTO; import br.com.developers.login.dto.RegisterDTO; @@ -31,11 +30,6 @@ @ActiveProfiles("test") public class UserControllerIntegrationTests implements UserConstantsForTests { - private static final String PATH = "/api/user/"; - private static final String PATH_LOGIN = "/api/auth/"; - - private static final ObjectMapper MAPPER = new ObjectMapper(); - @Autowired private WebApplicationContext webApplicationContext; @@ -77,7 +71,7 @@ void shouldTryLoginAndReturnUserNotFound(LoginDTO loginDTO) throws Exception { .perform(post(PATH_LOGIN).content(createJsonLoginDTO(loginDTO)) .contentType(MediaType.APPLICATION_JSON_VALUE)) .andExpect(jsonPath("$.message", is("User Not Found with -> email : teste@teste.com.br"))) - .andExpect(jsonPath("status", is(HttpStatus.NOT_FOUND.value()))); + .andExpect(jsonPath("$.status", is(HttpStatus.NOT_FOUND.value()))); } @Order(4) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy