Skip to content

Commit 5a36a23

Browse files
committed
updated pact provider example to JUnit 5 and Spring Boot 2
1 parent 5f675f9 commit 5a36a23

File tree

4 files changed

+47
-38
lines changed

4 files changed

+47
-38
lines changed

pact/pact-spring-provider/build.gradle

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
buildscript {
2-
ext {
3-
springBootVersion = '1.5.4.RELEASE'
4-
}
52
repositories {
63
mavenCentral()
74
}
85
dependencies {
9-
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
6+
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springboot_version}")
107
}
118
}
129

1310
apply plugin: 'java'
1411
apply plugin: 'eclipse'
1512
apply plugin: 'org.springframework.boot'
13+
apply plugin: 'io.spring.dependency-management'
1614

1715
version = '0.0.1-SNAPSHOT'
1816
sourceCompatibility = 1.8
@@ -26,8 +24,7 @@ dependencies {
2624
compile('org.springframework.boot:spring-boot-starter-data-jpa')
2725
compile('org.springframework.boot:spring-boot-starter-web')
2826
compile('com.h2database:h2:1.4.196')
29-
testCompile('au.com.dius:pact-jvm-provider-spring_2.12:3.5.16')
30-
testCompile('junit:junit:4.12')
27+
testCompile("au.com.dius:pact-jvm-provider-junit5_2.12:${pact_version}")
3128
testCompile('org.springframework.boot:spring-boot-starter-test')
3229
}
3330

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

pact/pact-spring-provider/src/main/java/io/reflectoring/UserController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@ public ResponseEntity<IdObject> createUser(@RequestBody @Valid User user) {
2626

2727
@PutMapping(path = "/user-service/users/{id}")
2828
public ResponseEntity<User> updateUser(@RequestBody @Valid User user, @PathVariable long id) {
29-
User userFromDb = userRepository.findOne(id);
29+
User userFromDb = userRepository.findById(id).get();
3030
userFromDb.updateFrom(user);
3131
userFromDb = userRepository.save(userFromDb);
3232
return ResponseEntity.ok(userFromDb);
3333
}
3434

3535
@GetMapping(path = "/user-service/users/{id}")
3636
public ResponseEntity<User> getUser(@PathVariable("id") Long id) {
37-
return ResponseEntity.ok(userRepository.findOne(id));
37+
return ResponseEntity.ok(userRepository.findById(id).get());
3838
}
3939

4040

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,54 @@
11
package io.reflectoring;
22

3+
import java.util.Optional;
4+
35
import au.com.dius.pact.provider.junit.Provider;
46
import au.com.dius.pact.provider.junit.State;
57
import au.com.dius.pact.provider.junit.loader.PactFolder;
6-
import au.com.dius.pact.provider.junit.target.HttpTarget;
7-
import au.com.dius.pact.provider.junit.target.Target;
8-
import au.com.dius.pact.provider.junit.target.TestTarget;
9-
import au.com.dius.pact.provider.spring.SpringRestPactRunner;
10-
import io.reflectoring.User;
11-
import io.reflectoring.UserRepository;
12-
import org.junit.runner.RunWith;
8+
import au.com.dius.pact.provider.junit5.HttpTestTarget;
9+
import au.com.dius.pact.provider.junit5.PactVerificationContext;
10+
import au.com.dius.pact.provider.junit5.PactVerificationInvocationContextProvider;
11+
import org.junit.jupiter.api.BeforeEach;
12+
import org.junit.jupiter.api.TestTemplate;
13+
import org.junit.jupiter.api.extension.ExtendWith;
1314
import org.springframework.boot.test.context.SpringBootTest;
1415
import org.springframework.boot.test.mock.mockito.MockBean;
15-
import static org.mockito.Matchers.eq;
16-
import static org.mockito.Mockito.any;
17-
import static org.mockito.Mockito.when;
16+
import org.springframework.test.context.junit.jupiter.SpringExtension;
17+
import static org.mockito.ArgumentMatchers.any;
18+
import static org.mockito.ArgumentMatchers.eq;
19+
import static org.mockito.Mockito.*;
1820

19-
@RunWith(SpringRestPactRunner.class)
20-
@Provider("userservice")
21-
@PactFolder("../pact-angular/pacts")
21+
@ExtendWith(SpringExtension.class)
2222
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, properties = {
23-
"server.port=8080"
23+
"server.port=8080"
2424
})
25+
@Provider("userservice")
26+
@PactFolder("../pact-angular/pacts")
2527
public class UserControllerProviderTest {
2628

27-
@MockBean
28-
private UserRepository userRepository;
29-
30-
@TestTarget
31-
public final Target target = new HttpTarget(8080);
32-
33-
@State({"provider accepts a new person",
34-
"person 42 exists"})
35-
public void toCreatePersonState() {
36-
User user = new User();
37-
user.setId(42L);
38-
user.setFirstName("Arthur");
39-
user.setLastName("Dent");
40-
when(userRepository.findOne(eq(42L))).thenReturn(user);
41-
when(userRepository.save(any(User.class))).thenReturn(user);
42-
}
29+
@MockBean
30+
private UserRepository userRepository;
31+
32+
@BeforeEach
33+
void setupTestTarget(PactVerificationContext context) {
34+
context.setTarget(new HttpTestTarget("localhost", 8080, "/"));
35+
}
36+
37+
@TestTemplate
38+
@ExtendWith(PactVerificationInvocationContextProvider.class)
39+
void pactVerificationTestTemplate(PactVerificationContext context) {
40+
context.verifyInteraction();
41+
}
42+
43+
@State({"provider accepts a new person",
44+
"person 42 exists"})
45+
public void toCreatePersonState() {
46+
User user = new User();
47+
user.setId(42L);
48+
user.setFirstName("Arthur");
49+
user.setLastName("Dent");
50+
when(userRepository.findById(eq(42L))).thenReturn(Optional.of(user));
51+
when(userRepository.save(any(User.class))).thenReturn(user);
52+
}
4353

4454
}

0 commit comments

Comments
 (0)