Skip to content
This repository was archived by the owner on Mar 8, 2019. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions gh-7270/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.example</groupId>
<artifactId>spring-boot-test-feign-bug</artifactId>
<version>1.0</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<properties>
<java.version>1.8</java.version>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
24 changes: 24 additions & 0 deletions gh-7270/src/main/java/example/ExampleApplication.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.web.bind.annotation.*;

@SpringBootApplication
@RestController
@EnableFeignClients
public class ExampleApplication {

@Autowired RepositoryService service;

public static void main(String[] args) {
SpringApplication.run(ExampleApplication.class, args);
}

@GetMapping("/repo/{owner}/{repo}/desc")
public String description(@PathVariable String owner, @PathVariable String repo) {
return service.description(owner, repo);
}
}
12 changes: 12 additions & 0 deletions gh-7270/src/main/java/example/GitHub.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package example;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@FeignClient(name = "github", url = "https://api.github.com")
public interface GitHub {
@RequestMapping(value = "/repos/{owner}/{repo}", method = RequestMethod.GET)
Repo getRepository(@PathVariable(name = "owner") String owner, @PathVariable(name = "repo") String repo);
}
23 changes: 23 additions & 0 deletions gh-7270/src/main/java/example/Owner.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package example;

public class Owner {

public String login;
public Long id;
public String avatarUrl;
public String gravatarId;
public String url;
public String htmlUrl;
public String followersUrl;
public String followingUrl;
public String gistsUrl;
public String starredUrl;
public String subscriptionsUrl;
public String organizationsUrl;
public String reposUrl;
public String eventsUrl;
public String receivedEventsUrl;
public String type;
public Boolean siteAdmin;

}
74 changes: 74 additions & 0 deletions gh-7270/src/main/java/example/Repo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package example;

public class Repo {
public Long id;
public String name;
public String fullName;
public Owner owner;
public Boolean _private;
public String htmlUrl;
public String description;
public Boolean fork;
public String url;
public String forksUrl;
public String keysUrl;
public String collaboratorsUrl;
public String teamsUrl;
public String hooksUrl;
public String issueEventsUrl;
public String eventsUrl;
public String assigneesUrl;
public String branchesUrl;
public String tagsUrl;
public String blobsUrl;
public String gitTagsUrl;
public String gitRefsUrl;
public String treesUrl;
public String statusesUrl;
public String languagesUrl;
public String stargazersUrl;
public String contributorsUrl;
public String subscribersUrl;
public String subscriptionUrl;
public String commitsUrl;
public String gitCommitsUrl;
public String commentsUrl;
public String issueCommentUrl;
public String contentsUrl;
public String compareUrl;
public String mergesUrl;
public String archiveUrl;
public String downloadsUrl;
public String issuesUrl;
public String pullsUrl;
public String milestonesUrl;
public String notificationsUrl;
public String labelsUrl;
public String releasesUrl;
public String deploymentsUrl;
public String createdAt;
public String updatedAt;
public String pushedAt;
public String gitUrl;
public String sshUrl;
public String cloneUrl;
public String svnUrl;
public String homepage;
public Long size;
public Long stargazersCount;
public Long watchersCount;
public String language;
public Boolean hasIssues;
public Boolean hasDownloads;
public Boolean hasWiki;
public Boolean hasPages;
public Long forksCount;
public Object mirrorUrl;
public Long openIssuesCount;
public Long forks;
public Long openIssues;
public Long watchers;
public String defaultBranch;
public Long networkCount;
public Long subscribersCount;
}
13 changes: 13 additions & 0 deletions gh-7270/src/main/java/example/RepositoryService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package example;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class RepositoryService {
@Autowired GitHub gitHub;

public String description(String owner, String repository) {
return gitHub.getRepository(owner, repository).description;
}
}
27 changes: 27 additions & 0 deletions gh-7270/src/test/java/example/ExampleApplicationTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package example;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import static org.mockito.Mockito.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;

@RunWith(SpringRunner.class)
@WebMvcTest
public class ExampleApplicationTest {
@MockBean RepositoryService repositoryService;
@Autowired MockMvc mockMvc;

@Test
public void shouldReturnDescription() throws Exception {
final String expected = "expected description";
when(repositoryService.description(anyString(), anyString()))
.thenReturn(expected);
mockMvc.perform(get("/repo/foo/bar/desc")).andExpect(content().string(expected));
}
}
13 changes: 13 additions & 0 deletions gh-7270/src/test/resources/logback.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<configuration>

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<root level="WARN">
<appender-ref ref="STDOUT" />
</root>

</configuration>