Commit Graph

340 Commits

Author SHA1 Message Date
Marcin Grzejszczak
6402e14f3c Added support for Stub Runner and Pact Broker
fixes gh-191
commit 533f1d3d0e8f6dcd37677bfef555fc2ea86bc1b1
Author: Tim Ysewyn <Tim.Ysewyn@me.com>
Date:   Wed Mar 7 15:56:48 2018 +0100

    Upgraded pact-jvm-model to 3.5.13
2018-04-02 22:50:40 +02:00
Tim Ysewyn
de529e222e Support for Pact v3 (#569)
* Upgraded pact-jvm-model to 3.5.13
* Enhanced the conversion of Spring Cloud contracts to Pact contracts using the v3 spec.
Introduces breaking change returning a list of `Pact`s instead of one.
* Enhanced the conversion of Pact contracts using the v3 spec tp Spring Cloud contracts.
* Implemented conversion of Pact v3 messaging to/from Spring Cloud contracts
* Updated code based on comments in the PR
* Added null matcher
* Added missing null matcher conversion from SCC to Pact
* Added number, integer and decimal matchers
* Added support for multiple matchers for the same json path.
Currently only the AND rule logic is supported.
* Added value generator functionality
* Refactored `stubMatchers` and `testMatchers` to support multiple types of "matcher groups", eg. header, path & query
* Refactored e37a8c5d82f96da6e1a698331afc62e6cf747bd6 in favor of a less invasive change using deprecation
* Added header matcher conversion
* Add/updated the ASF license header
* Fixed an issue with the header matchers while updating the documentation
* Updated the documentation
* Made some last minute changes to the `bodyMatchers`: `byNull()` isn't supported by WireMock

Closes #583
Fixes #595
2018-04-02 22:06:51 +02:00
Marcin Grzejszczak
ff8fd0a16c Added props to @AutoConfigureStubRunner 2018-04-01 15:45:32 +02:00
Marcin Grzejszczak
0084058078 Fixed the env var / sys prop setting 2018-03-31 17:58:45 +02:00
Marcin Grzejszczak
87daa9890f Fixed the env var / sys prop setting 2018-03-31 17:53:41 +02:00
Marcin Grzejszczak
b238a3e835 Added logging messages 2018-03-31 17:41:30 +02:00
Marcin Grzejszczak
c36c630412 Trying to fix the build 2018-03-31 17:29:47 +02:00
Marcin Grzejszczak
0fe31ce3a5 Git Stub Downloader (#596)
when stubsMode is set to LOCAL or REMOTE, and repositoryRoot starts with git:// we can clone the provided git repository, and search for the folder with stubs for the given artifact. So if the git repo has a folder structure of groupid/artifactid/version (where group id is either dot or slash separated), then we will provide a path to that repository for the stub runner to harvest the stubs

- externalized versions
- added more debugging messages
- added ContractProjectUpdater that updates the project containing contracts from SCM. ATM supports only git
- added ResourceResolver that retrieves the ProtocolResolvers. It does it via spring.factories entries containing StubDownloaderBuilder. SDP extends ProtocolResovler.
added StubRunner.properties map, that will contain any properties that will be later used by any StubDownloader implementations
- added PUBLISH_STUBS_TO_SCM env var for Docker, so that publishStubsToScm task gets called
- updated docs

Breaking:

- StubDownloaderBuilder extends ProtocolResovler. By default the ProtocolResolver methods return null.
- stubRunnerOptions.stubRepositoryRoot is a Resource not a String
- generateWireMockClientStubs Gradle task got removed
- if folder with contracts has a subfolder called contracts, we will pick contracts from the subfolder

fixes #580
2018-03-31 09:35:00 +02:00
Marcin Grzejszczak
01e682044c Iterate over stub runner downloader builders
with this change we try to retrieve a list of builders of stub runner downloaders. The idea is that if a builder can't build a stub runner downloader, it returns null. If a stub runner downloader can't download an artifact it returns null. That way we can iterate over builders and try to point to unpacked stubs when applicable. No longer do we pick only one applicatble builder. We pick the first matching one.
2018-03-23 10:47:50 +01:00
buildmaster
b9740e900d Going back to snapshots 2018-03-22 23:54:47 +00:00
buildmaster
501fefd389 Update SNAPSHOT to 2.0.0.M8 2018-03-22 23:52:03 +00:00
Marcin Grzejszczak
419c2d1b85 Added missing additional spring configuration; fixes gh-566 2018-03-21 15:41:56 +01:00
Marcin Grzejszczak
f433118a15 Allows exposure of multiple versions via Stub Runner
without this change for a single group and artifact id you can have only one entry in stub runner
with this change you can have multiple ones

fixes gh-474
2018-03-19 14:45:09 +01:00
Marcin Grzejszczak
64fe74fee7 Polish 2018-03-16 16:55:25 +01:00
Marcin Grzejszczak
c3d7e2721d Small update on the annotation 2018-03-16 16:14:55 +01:00
Marcin Grzejszczak
32888e3b92 Add a convenience mechanism to get stub runner port
Now, you can also use the `@StubRunnerPort` annotation to inject the port of a running stub.
Value of the annotation can be the `groupid.artifactid` or just the `artifactid`. Example for Stub Runner ids
`com.example:foo`, `com.example:bar`.

```java
@StubRunnerPort("foo")
int fooPort;
@StubRunnerPort("com.example.bar")
int barPort;
```

fixes gh-573
2018-03-16 16:04:36 +01:00
Marcin Grzejszczak
1cd2ce9722 Fixed broken tests 2018-03-16 06:53:37 +01:00
Marcin Grzejszczak
7a38ab9867 Added the deleteStubsAfterTest flag to remove stubs after tests are finished
if `deleteStubsAfterTest` is set to false then stubs will NOT be deleted after tests are executed

fixes gh-512
2018-03-16 01:08:37 +01:00
Marcin Grzejszczak
903094d8b4 Merge branch '1.2.x' 2018-03-15 17:14:04 +01:00
Marcin Grzejszczak
13902ecf1d Documented custom settings.xml setup; fixes gh-552 2018-03-15 17:13:51 +01:00
Marcin Grzejszczak
05d4bb3a57 Merge branch '1.2.x' 2018-03-15 16:43:42 +01:00
Marcin Grzejszczak
8fa57f5832 Added additional tests 2018-03-15 16:43:32 +01:00
Marcin Grzejszczak
8e4360535c Added HttpStatus delegate in the Groovy DSL Response
with this change there are numerous helper methods that should provide a more descriptive DSL for the response status. Instead of a numerical status you can now call a method e.g. instead of 200 call OK()

fixes gh-575
2018-03-15 10:00:45 +01:00
Marcin Grzejszczak
17c375a629 Updated docs to point to different branches 2018-03-13 17:51:08 +01:00
Marcin Grzejszczak
ab76b12edf Added one more ant pattern to gradle and maven plugins
The bug is related to the fact that initially, we were supporting slash-separated paths to projects. E.g. if the group id was `a.b.c` then we did checked for `a/b/c` folder. At certain point we've started building stubs with the `groupid` folder as such e.g. `a.b.c/artifact-id`. This is where the bug comes in. For Maven and Gradle we're using ant patterns for copying files. We're only providing the slash-separated ant pattern. With this fix, we're backward compatible (we're leaving the slash-separated one) and we're adding support for dot-delimited group id.

fixes gh-555
2018-03-13 17:51:08 +01:00
Marcin Grzejszczak
2740496d86 Added one more ant pattern to gradle and maven plugins
The bug is related to the fact that initially, we were supporting slash-separated paths to projects. E.g. if the group id was `a.b.c` then we did checked for `a/b/c` folder. At certain point we've started building stubs with the `groupid` folder as such e.g. `a.b.c/artifact-id`. This is where the bug comes in. For Maven and Gradle we're using ant patterns for copying files. We're only providing the slash-separated ant pattern. With this fix, we're backward compatible (we're leaving the slash-separated one) and we're adding support for dot-delimited group id.

fixes gh-555
2018-03-13 17:47:00 +01:00
Eddú Meléndez Gonzales
97a8e3c2f5 Add missing configuration properties metadata for stub-runner (#572)
See gh-566
2018-03-13 10:35:49 +01:00
buildmaster
9c2d54453e Going back to snapshots 2018-02-27 01:35:53 +00:00
buildmaster
c0f773ecd3 Update SNAPSHOT to 2.0.0.M7 2018-02-27 01:30:18 +00:00
Marcin Grzejszczak
3127bfdee0 Merge branch '1.2.x' 2018-02-19 15:57:31 +01:00
Marcin Grzejszczak
e2b61cd125 Added Stub Runner entry in the readme
fixes gh-530
2018-02-19 15:56:47 +01:00
Marcin Grzejszczak
f6b6b43c9f Merge branch '1.2.x'
also accidentally fixed gh-507
2018-02-16 16:05:54 +01:00
Marcin Grzejszczak
c8ec61c1c2 Changed the snapshot skip test property 2018-02-16 14:06:33 +01:00
Marcin Grzejszczak
d87e669a23 Adding a mechanism to disable the local vs remote stub location
When fetching stubs / contracts in a CI, shared environment, what might happen is that
both the producer and the consumer reuse the same local Maven repository. Due to this,
the framework, responsible for downloading a stub JAR from remote location,
can't decide which JAR should be picked, local or remote one. That caused
the `"The artifact was found in the local repository but you have explicitly
stated that it should be downloaded from a remote one"` exception
and failed the build.

For such cases we're introducing the property mechanism:

- via `stubrunner.snapshot-check.skip` system property
- via `STUBRUNNER_SNAPSHOT_CHECK_SKIP` environment variable

if either of these values is set to `true`, then the stub downloader will not
verify the origin of the downloaded JAR.

fixes gh-545
2018-02-16 13:35:56 +01:00
buildmaster
a8e3b64fe6 Bumping versions to 1.2.4.BUILD-SNAPSHOT after release 2018-02-09 16:08:54 +00:00
buildmaster
ab660f8944 Going back to snapshots 2018-02-09 16:08:53 +00:00
buildmaster
c510a555b7 Update SNAPSHOT to 1.2.3.RELEASE 2018-02-09 15:54:44 +00:00
Marcin Grzejszczak
fb1bffd7fc Merge branch '1.2.x' 2018-01-25 17:58:10 +01:00
Marcin Grzejszczak
a49630bade Added debug information 2018-01-25 17:57:56 +01:00
Marcin Grzejszczak
65ee88aa23 Merge branch '1.2.x' 2018-01-19 01:18:33 +01:00
Marcin Grzejszczak
b745d9a7e3 YAML contracts (#522)
with this change we allow the users to use YAML to define contracts

fixes gh-300 gh-508
helps with #501
2018-01-19 00:27:15 +01:00
buildmaster
b2428c5f13 Bumping versions to 1.2.3.BUILD-SNAPSHOT after release 2018-01-16 17:20:16 +00:00
buildmaster
f5561d3f9b Going back to snapshots 2018-01-16 17:20:15 +00:00
buildmaster
19deb01269 Update SNAPSHOT to 1.2.2.RELEASE 2018-01-16 17:09:51 +00:00
Marcin Grzejszczak
748e512f4d Introduces explicit mode of stub downloading (#503)
* Introduces explicit mode of stub downloading

you have to explicitly provide the mode [CLASSPATH, REMOTE, LOCAL] of how you want to fetch and register stubs

fixes gh-287
2018-01-03 08:25:29 +01:00
Marcin Grzejszczak
09a1de01aa Merge branch '1.2.x' 2017-12-22 12:41:03 +01:00
Marcin Grzejszczak
b3e6159bbb Using the new registration mechanism
without this change we're using Eureka lite to register the apps. However we're not reusing any mechanisms that are bound to registration of the main app. That's why we also loose the OAuth2 instrumentation of Spring Cloud Services.
with this change we're reusing the default mechanism. For Cloud based applications we also register the stubs under a different route so as to support the multiple port binding.

fixes gh-490
2017-12-22 12:23:09 +01:00
Biju Kunjummen
0398148a3e Support loading limited context for stub runner tests (#496)
* Support loading limited context for stub runner tests
* Removes slice test runner
2017-12-21 11:31:12 +01:00
Marcin Grzejszczak
48c1d7ba2c Updated code' 2017-12-20 17:06:19 +01:00
Marcin Grzejszczak
80f0e66292 Revert "Revert "Merge branch 'master' into 2.0.x""
This reverts commit 822dd4b732.
2017-12-20 16:37:38 +01:00