Skip to content

Commit 818e162

Browse files
committed
Merge branch 'pact-message-provider'
2 parents d60f95b + a18ad84 commit 818e162

File tree

25 files changed

+751
-12
lines changed

25 files changed

+751
-12
lines changed

pact/pact-message-consumer/src/main/java/io/reflectoring/MessageConsumerConfiguration.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ public SimpleMessageListenerContainer container(ConnectionFactory connectionFact
4747
}
4848

4949
@Bean
50-
public MessageListenerAdapter listenerAdapter(StringMessageConsumer stringMessageConsumer) {
51-
return new MessageListenerAdapter(stringMessageConsumer, "consumeStringMessage");
50+
public MessageListenerAdapter listenerAdapter(UserCreatedMessageConsumer userCreatedMessageConsumer) {
51+
return new MessageListenerAdapter(userCreatedMessageConsumer, "consumeStringMessage");
5252
}
5353

5454
@Bean
55-
public StringMessageConsumer eventReceiver(ObjectMapper objectMapper) {
56-
return new StringMessageConsumer(objectMapper);
55+
public UserCreatedMessageConsumer eventReceiver(ObjectMapper objectMapper) {
56+
return new UserCreatedMessageConsumer(objectMapper);
5757
}
5858

5959
}

pact/pact-message-consumer/src/main/java/io/reflectoring/StringMessageConsumer.java renamed to pact/pact-message-consumer/src/main/java/io/reflectoring/UserCreatedMessageConsumer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@
1313
import org.slf4j.Logger;
1414
import org.slf4j.LoggerFactory;
1515

16-
public class StringMessageConsumer {
16+
public class UserCreatedMessageConsumer {
1717

18-
private Logger logger = LoggerFactory.getLogger(StringMessageConsumer.class);
18+
private Logger logger = LoggerFactory.getLogger(UserCreatedMessageConsumer.class);
1919

2020
private ObjectMapper objectMapper;
2121

22-
public StringMessageConsumer(ObjectMapper objectMapper) {
22+
public UserCreatedMessageConsumer(ObjectMapper objectMapper) {
2323
this.objectMapper = objectMapper;
2424
}
2525

@@ -31,7 +31,7 @@ public void consumeStringMessage(String messageString) throws IOException {
3131
if(!violations.isEmpty()){
3232
throw new ConstraintViolationException(violations);
3333
}
34-
// do something with the message
34+
// pass message into business use case
3535
}
3636

3737
}

pact/pact-message-consumer/src/test/java/io/reflectoring/StringMessageConsumerTest.java renamed to pact/pact-message-consumer/src/test/java/io/reflectoring/UserCreatedMessageConsumerTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@
1717

1818
@RunWith(SpringRunner.class)
1919
@SpringBootTest
20-
public class StringMessageConsumerTest {
20+
public class UserCreatedMessageConsumerTest {
2121

2222
@Rule
2323
public MessagePactProviderRule mockProvider = new MessagePactProviderRule(this);
2424
private byte[] currentMessage;
2525

2626
@Autowired
27-
private StringMessageConsumer stringMessageConsumer;
27+
private UserCreatedMessageConsumer userCreatedMessageConsumer;
2828

29-
@Pact(state = "provider is up and running", provider = "userservice", consumer = "userclient")
29+
@Pact(provider = "userservice", consumer = "userclient")
3030
public MessagePact userCreatedMessagePact(MessagePactBuilder builder) {
3131
PactDslJsonBody body = new PactDslJsonBody();
3232
body.stringType("messageUuid");
@@ -46,7 +46,7 @@ public MessagePact userCreatedMessagePact(MessagePactBuilder builder) {
4646
@Test
4747
@PactVerification("userCreatedMessagePact")
4848
public void verifyCreatePersonPact() throws IOException {
49-
stringMessageConsumer.consumeStringMessage(new String(this.currentMessage));
49+
userCreatedMessageConsumer.consumeStringMessage(new String(this.currentMessage));
5050
}
5151

5252
/**
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
.gradle
2+
/build/
3+
!gradle/wrapper/gradle-wrapper.jar
4+
5+
### STS ###
6+
.apt_generated
7+
.classpath
8+
.factorypath
9+
.project
10+
.settings
11+
.springBeans
12+
13+
### IntelliJ IDEA ###
14+
.idea
15+
*.iws
16+
*.iml
17+
*.ipr
18+
19+
### NetBeans ###
20+
nbproject/private/
21+
build/
22+
nbbuild/
23+
dist/
24+
nbdist/
25+
.nb-gradle/
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Consumer-Driven-Contract Test for a Spring Boot Provider
2+
3+
This repo contains an example of consumer-driven-contract testing for a Spring
4+
Boot API provider. The corresponding consumer to the contract is
5+
implemented in the module `pact-angular`.
6+
7+
The contract is created and verified with [Pact](https://docs.pact.io/).
8+
9+
Before running the build, you need to follow the instructions on the [consumer-side](../pact-angular/)
10+
to create the consumer-driven contract file (pact file).
11+
12+
## Running the application
13+
14+
The interesting part in this code base is the class `UserControllerProviderTest`.
15+
You can run the tests with `gradlew test` on Windows or `./gradlew test` on Unix.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
spring:
2+
datasource:
3+
url: jdbc:h2:mem:AZ;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
4+
driverClassName: org.h2.Driver
5+
username: sa
6+
password:
7+
h2:
8+
console:
9+
enabled: true
10+
11+
logging.level.org.hibernate.SQL: OFF
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
buildscript {
2+
repositories {
3+
mavenCentral()
4+
}
5+
dependencies {
6+
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springboot_version}")
7+
}
8+
}
9+
10+
apply plugin: 'java'
11+
apply plugin: 'eclipse'
12+
apply plugin: 'org.springframework.boot'
13+
apply plugin: 'io.spring.dependency-management'
14+
15+
version = '0.0.1-SNAPSHOT'
16+
sourceCompatibility = 1.8
17+
18+
repositories {
19+
mavenLocal()
20+
mavenCentral()
21+
}
22+
23+
dependencies {
24+
compile('org.springframework.boot:spring-boot-starter-data-jpa')
25+
compile('org.springframework.boot:spring-boot-starter-web')
26+
compile('org.springframework.boot:spring-boot-starter-amqp')
27+
compile('com.h2database:h2:1.4.196')
28+
compileOnly('org.projectlombok:lombok')
29+
testCompile("au.com.dius:pact-jvm-provider-junit_2.12:${pact_version}")
30+
testCompile('org.springframework.boot:spring-boot-starter-test')
31+
}
32+
33+
bootRun {
34+
jvmArgs = ["-Xdebug", "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"]
35+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
springboot_version=2.0.4.RELEASE
2+
pact_version=3.5.20
53.4 KB
Binary file not shown.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
zipStoreBase=GRADLE_USER_HOME
4+
zipStorePath=wrapper/dists
5+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.2-bin.zip

0 commit comments

Comments
 (0)