From 446ab22bc71896284ee7185038eaa11b877a3a83 Mon Sep 17 00:00:00 2001 From: Murilo Alves Date: Sun, 4 Oct 2020 11:49:05 -0300 Subject: [PATCH 01/11] fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4734890..2ea525f 100644 --- a/README.md +++ b/README.md @@ -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` From 3ac40cbe624070b71e4089e112cfbc4a62cd4cf0 Mon Sep 17 00:00:00 2001 From: Murilo Alves Date: Wed, 14 Oct 2020 18:15:19 -0300 Subject: [PATCH 02/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2ea525f..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) From dabd3be8198ab53417295e136c1330c87f00b754 Mon Sep 17 00:00:00 2001 From: murilo Date: Thu, 22 Oct 2020 09:01:45 -0300 Subject: [PATCH 03/11] add auth in githubController --- .../br/com/developers/controller/github/GithubController.java | 2 ++ 1 file changed, 2 insertions(+) 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, From 8a41b490dc93d009eae3fa5c99f0bfc076d80979 Mon Sep 17 00:00:00 2001 From: Murilo Alves Date: Sat, 28 Nov 2020 21:38:11 -0300 Subject: [PATCH 04/11] add codecov --- .travis.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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) From 6f7ba94a177500ce11850f3f004c4dffd2887e19 Mon Sep 17 00:00:00 2001 From: Murilo Alves Date: Sat, 28 Nov 2020 21:38:26 -0300 Subject: [PATCH 05/11] add codecov --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8c32b6d..4c29fbe 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ [![Build Status](https://travis-ci.com/muriloalvesdev/github-developers.svg?token=ioemJXEZtsUqgszw2Nq4&branch=master)](https://travis-ci.com/muriloalvesdev/github-developers) +[![codecov](https://codecov.io/gh/muriloalvesdev/github-developers/branch/master/graph/badge.svg)](https://codecov.io/gh/muriloalvesdev/github-developers/) ## GitHub Developers API From 7bfb60c55781b2f6843f4cb61eeea2bfa6c2faf8 Mon Sep 17 00:00:00 2001 From: muriloalvesdev Date: Sat, 28 Nov 2020 21:39:54 -0300 Subject: [PATCH 06/11] add codecov plugin --- pom.xml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pom.xml b/pom.xml index 49de9bb..f3518e2 100644 --- a/pom.xml +++ b/pom.xml @@ -108,6 +108,25 @@ org.apache.maven.plugins maven-surefire-plugin + + org.jacoco + jacoco-maven-plugin + 0.8.6 + + + + prepare-agent + + + + report + test + + report + + + + From b35ba4dc645d9db9b291b6994521577b1e67d7f5 Mon Sep 17 00:00:00 2001 From: muriloalvesdev Date: Sat, 28 Nov 2020 22:09:37 -0300 Subject: [PATCH 07/11] fix --- pom.xml | 4 -- .../constants/UserConstantsForTests.java | 6 ++- .../GithubControllerIntegrationTests.java | 45 ++++++++++++++++--- .../user/UserControllerIntegrationTests.java | 6 --- 4 files changed, 45 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index f3518e2..f818107 100644 --- a/pom.xml +++ b/pom.xml @@ -104,10 +104,6 @@ org.springframework.boot spring-boot-maven-plugin - - org.apache.maven.plugins - maven-surefire-plugin - org.jacoco jacoco-maven-plugin 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 index 341bc96..7e08d9d 100644 --- a/src/test/java/br/com/developers/controller/github/GithubControllerIntegrationTests.java +++ b/src/test/java/br/com/developers/controller/github/GithubControllerIntegrationTests.java @@ -2,8 +2,10 @@ import static org.hamcrest.CoreMatchers.is; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import java.io.UnsupportedEncodingException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -12,9 +14,14 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; +import com.fasterxml.jackson.core.JsonProcessingException; +import br.com.developers.constants.UserConstantsForTests; +import br.com.developers.login.dto.LoginDTO; +import br.com.developers.login.dto.RegisterDTO; +import br.com.developers.login.http.request.AccessToken; @SpringBootTest -class GithubControllerIntegrationTests { +class GithubControllerIntegrationTests implements UserConstantsForTests { private static final String QUALIFIER_USER = "muriloalvesdev"; private static final String QUALIFIER_REPOSITORIE = "thehero-backend"; @@ -31,10 +38,13 @@ void setUp() { @Test void shouldSearchUsers() throws Exception { + AccessToken token = shouldLogIn(); + this.mockMvc .perform(get(GithubController.PATH + "search/users") - .contentType(MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON_VALUE) - .param("qualifier", QUALIFIER_USER)) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header("Authorization", "Bearer " + token.getAccessToken()) + .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"))) @@ -46,10 +56,13 @@ void shouldSearchUsers() throws Exception { @Test void shouldSearchRepositories() throws Exception { + AccessToken token = shouldLogIn(); + this.mockMvc .perform(get(GithubController.PATH + "search/repositories") - .contentType(MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON_VALUE) - .param("qualifier", QUALIFIER_REPOSITORIE)) + .contentType(MediaType.APPLICATION_JSON_VALUE) + .header("Authorization", "Bearer " + token.getAccessToken()) + .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))) @@ -75,4 +88,26 @@ void shouldSearchRepositories() throws Exception { is("https://avatars0.githubusercontent.com/u/35849751?v=4"))) .andExpect(jsonPath("$.items[0].owner.html_url", is("https://github.com/muriloalvesdev"))); } + + private AccessToken shouldLogIn() + throws UnsupportedEncodingException, Exception, JsonProcessingException { + LoginDTO loginDTO = new LoginDTO(); + loginDTO.setEmail(EMAIL); + loginDTO.setPassword(PASSWORD); + + String response = this.mockMvc + .perform(post(PATH_LOGIN).content(createJsonLoginDTO(loginDTO)) + .contentType(MediaType.APPLICATION_JSON_VALUE)) + .andExpect(status().isOk()).andReturn().getResponse().getContentAsString(); + + return MAPPER.convertValue(response, AccessToken.class); + } + + private String createJsonRegisterData(RegisterDTO registerData) throws JsonProcessingException { + return MAPPER.writeValueAsString(registerData); + } + + private String createJsonLoginDTO(LoginDTO loginDTO) throws JsonProcessingException { + return MAPPER.writeValueAsString(loginDTO); + } } 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..0eda217 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; From 8412e3c389384a7d305b90a3515308044113610f Mon Sep 17 00:00:00 2001 From: muriloalvesdev Date: Sat, 28 Nov 2020 22:36:05 -0300 Subject: [PATCH 08/11] fix --- .github/workflows/maven.yml | 24 ---- .../GithubControllerIntegrationTests.java | 113 ------------------ 2 files changed, 137 deletions(-) delete mode 100644 .github/workflows/maven.yml delete mode 100644 src/test/java/br/com/developers/controller/github/GithubControllerIntegrationTests.java 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/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 7e08d9d..0000000 --- a/src/test/java/br/com/developers/controller/github/GithubControllerIntegrationTests.java +++ /dev/null @@ -1,113 +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.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -import java.io.UnsupportedEncodingException; -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; -import com.fasterxml.jackson.core.JsonProcessingException; -import br.com.developers.constants.UserConstantsForTests; -import br.com.developers.login.dto.LoginDTO; -import br.com.developers.login.dto.RegisterDTO; -import br.com.developers.login.http.request.AccessToken; - -@SpringBootTest -class GithubControllerIntegrationTests implements UserConstantsForTests { - - 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 { - AccessToken token = shouldLogIn(); - - this.mockMvc - .perform(get(GithubController.PATH + "search/users") - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header("Authorization", "Bearer " + token.getAccessToken()) - .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 { - AccessToken token = shouldLogIn(); - - this.mockMvc - .perform(get(GithubController.PATH + "search/repositories") - .contentType(MediaType.APPLICATION_JSON_VALUE) - .header("Authorization", "Bearer " + token.getAccessToken()) - .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"))); - } - - private AccessToken shouldLogIn() - throws UnsupportedEncodingException, Exception, JsonProcessingException { - LoginDTO loginDTO = new LoginDTO(); - loginDTO.setEmail(EMAIL); - loginDTO.setPassword(PASSWORD); - - String response = this.mockMvc - .perform(post(PATH_LOGIN).content(createJsonLoginDTO(loginDTO)) - .contentType(MediaType.APPLICATION_JSON_VALUE)) - .andExpect(status().isOk()).andReturn().getResponse().getContentAsString(); - - return MAPPER.convertValue(response, AccessToken.class); - } - - private String createJsonRegisterData(RegisterDTO registerData) throws JsonProcessingException { - return MAPPER.writeValueAsString(registerData); - } - - private String createJsonLoginDTO(LoginDTO loginDTO) throws JsonProcessingException { - return MAPPER.writeValueAsString(loginDTO); - } -} From 20ad813758dd974f2beced8620db9d5571350d7e Mon Sep 17 00:00:00 2001 From: muriloalvesdev Date: Sat, 28 Nov 2020 22:39:56 -0300 Subject: [PATCH 09/11] fix --- .ci/script.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 338dc4b1a38b4ebf78471222eb9b489324faf942 Mon Sep 17 00:00:00 2001 From: Murilo Alves Date: Mon, 14 Dec 2020 00:14:20 -0300 Subject: [PATCH 10/11] Update UserControllerIntegrationTests.java --- .../controller/user/UserControllerIntegrationTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0eda217..7d25036 100644 --- a/src/test/java/br/com/developers/controller/user/UserControllerIntegrationTests.java +++ b/src/test/java/br/com/developers/controller/user/UserControllerIntegrationTests.java @@ -71,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) From 9fdf67420738a6ce72388c3a86c233d6b3b76844 Mon Sep 17 00:00:00 2001 From: Murilo Alves Date: Mon, 14 Dec 2020 00:17:19 -0300 Subject: [PATCH 11/11] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 4c29fbe..8c32b6d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ [![Build Status](https://travis-ci.com/muriloalvesdev/github-developers.svg?token=ioemJXEZtsUqgszw2Nq4&branch=master)](https://travis-ci.com/muriloalvesdev/github-developers) -[![codecov](https://codecov.io/gh/muriloalvesdev/github-developers/branch/master/graph/badge.svg)](https://codecov.io/gh/muriloalvesdev/github-developers/) ## GitHub Developers API 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