Skip to content

Commit

Permalink
test client as separate app hitting config server
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Jones committed Dec 6, 2015
1 parent 7dad328 commit db37349
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 4 deletions.
6 changes: 6 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,12 @@
<version>4.1.1.201511131810-r</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
<version>${spring-cloud-version}</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,33 +10,59 @@
import java.nio.file.Paths;

import org.eclipse.jgit.api.Git;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.test.TestRestTemplate;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;

import com.engineerbetter.fixtures.SpringCloudConfigClientApplication;

public class SpringCloudConfigServerApplicationSmokeTest
{
@Rule
public TemporaryFolder tmpDir = new TemporaryFolder();
private RestTemplate restTemplate = new TestRestTemplate();

private ConfigurableApplicationContext serverContext;
private ConfigurableApplicationContext clientContext;


@Before
public void setup() throws Exception
{
File repoDir = tmpDir.newFolder("spring-cloud-config-repo");
Git git = Git.init().setDirectory(repoDir).call();
copyFixture("fixtures/application.properties", Paths.get(repoDir.getPath(), "application.properties"));
git.commit().setAll(true).setMessage("Add properties").call();
copyFixture("fixtures/example.properties", Paths.get(repoDir.getPath(), "application.properties"));
git.add().addFilepattern(".").call();
git.commit().setMessage("Add properties").call();

serverContext = SpringApplication.run(
SpringCloudConfigServerApplication.class,
"--spring.cloud.config.server.git.uri=file://"+repoDir.getAbsolutePath()
);

String arg = "--spring.cloud.config.server.git.uri=file://"+repoDir.getAbsolutePath();
SpringApplication.run(SpringCloudConfigServerApplication.class, arg);
clientContext = SpringApplication.run(
SpringCloudConfigClientApplication.class,
"--spring.jmx.enabled=false",
"--spring.profiles.active=client",
"--spring.cloud.config.enabled=true",
"--spring.cloud.config.uri=http://localhost:8080",
"--server.port=8081"
);
}

@After
public void teardown()
{
serverContext.close();
clientContext.close();
}


Expand All @@ -48,6 +74,14 @@ public void returnsOk()
}


@Test
public void clientGetsValueFromServer()
{
ResponseEntity<String> response = restTemplate.getForEntity("http://localhost:8081/", String.class);
assertThat(response.getBody(), is("test-value"));
}


private void copyFixture(String fixture, Path destination) throws IOException
{
File fixtureFile = new File(getClass().getClassLoader().getResource(fixture).getFile());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.engineerbetter.fixtures;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Profile;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@Profile("client")
public class SpringCloudConfigClientApplication
{
public static void main(String[] args)
{
SpringApplication.run(SpringCloudConfigClientApplication.class, args);
}


@RestController
@Profile("client")
public static class ClientController
{
@Value("${my.key}")
private String configurationValue;


@RequestMapping("/")
public String getValue()
{
return configurationValue;
}
}
}

0 comments on commit db37349

Please sign in to comment.