pact-provider-verifier 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 762ad79284a2c03cfc8c22dcfb998cfaa483cbb7
4
- data.tar.gz: 3ef07c9e456a922d8e8a0a588e8f22d593724dbb
3
+ metadata.gz: b360526fb17120efd9f9e2a54c0814a78a5b4b01
4
+ data.tar.gz: a143308b319b38f0e959916bcd224e5e3757ee50
5
5
  SHA512:
6
- metadata.gz: e19d59dc991edb552e2fc704a4f3087afba8331ac066ca7ff974bfa34d6da422e3a3999b766b865630984bad965c8c2d2c47c68fedb3f3f1402bcce1f24fcb4b
7
- data.tar.gz: 43188c58d84938b79bfdcdaf7a32f4a4989b23181777ef32f6d4b9ce4b6a40b3791ec5604882a629b5ba76b4eef6bcaa639c1566a265d5bbe144899307e138dd
6
+ metadata.gz: 3b3bc38d83093fcbc5d1c044dc8234b8e0dfd5a0522a210074f4139a6c7a8587408e9baf105dfd336f720baa9989336fa2518073a35a8df136c2d838d961197f
7
+ data.tar.gz: 82cae026c525577a538a347b2530e0c4a3fae57abd226a8f5ee09e0298e146e19e91144021dda6fbcfec2d0cef1664c6754194cb4dd5a79d94067cdbb01bf1ac
data/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@ Do this to generate your change history
2
2
 
3
3
  git log --pretty=format:' * %h - %s (%an, %ad)' vX.Y.Z..HEAD
4
4
 
5
+ ### 1.1.0 (01 June 2017)
6
+ * 7106832 - chore(docs): update docs for provider states URL (Matt Fellows, Fri May 26 22:45:09 2017 +1000)
7
+ * 8f787e6 - Add deprecation warning for --provider-states-url (Beth Skurrie, Fri May 26 20:51:48 2017 +1000)
8
+ * 982ba7c - Remove need for provider-states-url by dynamically calling the set up code during test execution (Beth Skurrie, Fri May 26 16:30:14 2017 +1000)
9
+ * f055375 - Turn silent mode on for zip task in rake package (Beth Skurrie, Tue May 23 09:34:51 2017 +1000)
10
+
5
11
  ### 1.0.2 (23 May 2017)
6
12
  * 33f0811 - Upgrade rspec version to ~>3.5 to fix #11 (Beth Skurrie, Tue May 23 09:01:07 2017 +1000)
7
13
 
data/Gemfile CHANGED
@@ -1,3 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+
5
+ if ENV['X_PACT_DEVELOPMENT']
6
+ gem "pact", path: '../pact'
7
+ end
data/README.md CHANGED
@@ -53,20 +53,7 @@ bundle install
53
53
 
54
54
  Execute pact provider verification against a provider which implements the following:
55
55
 
56
- * an http get endpoint which returns the available [Provider States](https://docs.pact.io/documentation/provider_states.html) by consumer
57
-
58
- {
59
- "SomeUI": [
60
- "customer A is logged in",
61
- "customer A has a million dollars"
62
- ],
63
- "BackendAPI": [
64
- "customer A is logged in",
65
- "there are no customers"
66
- ]
67
- }
68
-
69
- * an http post endpoint which sets the active pact consumer and provider state
56
+ * an http POST endpoint (`--provider-states-setup-url`) which sets the active pact consumer and provider state accepting two parameters: `consumer` and `state` and returns an HTTP `200` eg.
70
57
 
71
58
  consumer=web&state=customer%20is%20logged%20in
72
59
 
@@ -74,7 +61,6 @@ The following flags are required:
74
61
 
75
62
  * `--pact-urls` - a comma delimited list of pact file urls
76
63
  * `--provider-base-url` - the base url of the pact provider
77
- * `--provider-states-url` - the full url of the endpoint which returns provider states by consumer
78
64
  * `--provider-states-setup-url` - the full url of the endpoint which sets the active pact consumer and provider state
79
65
 
80
66
  ### Using the Pact Broker with Basic authentication
@@ -84,7 +70,7 @@ The following flags are required to use basic authentication with a Pact Broker:
84
70
  * `--broker-user` - the Username for Pact Broker basic authentication.
85
71
  * `--broker-password` - the Password for Pact Broker basic authentication.
86
72
 
87
- NOTE: the `http://user:password@host` format for basic HTTP auth is not supported.
73
+ NOTE: the `http://user:password@host` format for basic HTTP auth is not supported.
88
74
 
89
75
  ## Contributing
90
76
 
@@ -33,9 +33,9 @@ module Pact
33
33
  end
34
34
 
35
35
  def verify_pacts
36
+ print_deprecation_note
36
37
  pacts = @options.pact_urls.split(',')
37
38
  proxy_pact_helper = File.expand_path(File.join(File.dirname(__FILE__), "pact_helper.rb"))
38
- ENV['provider_states_url'] = @options.provider_states_url
39
39
  ENV['provider_states_setup_url'] = @options.provider_states_setup_url
40
40
  ENV['PACT_BROKER_USERNAME'] = @options.broker_username if @options.broker_username
41
41
  ENV['PACT_BROKER_PASSWORD'] = @options.broker_password if @options.broker_password
@@ -62,8 +62,6 @@ module Pact
62
62
  require ENV['PACT_PROJECT_PACT_HELPER'] if ENV.fetch('PACT_PROJECT_PACT_HELPER','') != ''
63
63
 
64
64
  exit_statuses = pacts.collect do |pact_url|
65
- ENV['pact_consumer'] = get_pact_consumer_name(pact_url)
66
-
67
65
  begin
68
66
  options = {
69
67
  :pact_helper => proxy_pact_helper,
@@ -82,34 +80,12 @@ module Pact
82
80
  # Return non-zero exit code if failures - increment for each Pact
83
81
  exit exit_statuses.count{ | status | status != 0 }
84
82
  end
85
- end
86
- end
87
- end
88
-
89
- def get_json(path)
90
- case path
91
- when URI::regexp
92
- return get_json_from_server(path)
93
- else
94
- return get_json_from_local_file(path)
95
- end
96
- end
97
83
 
98
- def get_json_from_server(path)
99
- url = URI.parse(path)
100
- conn = Faraday.new("#{url.scheme}://#{url.host}:#{url.port}") do |c|
101
- if ENV['PACT_BROKER_USERNAME'] && ENV['PACT_BROKER_PASSWORD']
102
- c.use Faraday::Request::BasicAuthentication, ENV['PACT_BROKER_USERNAME'], ENV['PACT_BROKER_PASSWORD']
84
+ def print_deprecation_note
85
+ if @options.provider_states_url
86
+ $stderr.puts "The --provider-states-url option is deprecated and the URL endpoint can be removed from the application"
87
+ end
88
+ end
103
89
  end
104
- c.use FaradayMiddleware::ParseJson
105
- c.use Faraday::Adapter::NetHttp
106
90
  end
107
-
108
- response = conn.get(url.request_uri)
109
- return response.body
110
- end
111
-
112
- def get_json_from_local_file(path)
113
- file = File.read(path)
114
- return JSON.parse(file)
115
91
  end
@@ -8,13 +8,13 @@ module Pact
8
8
  desc 'verify', "Runs the Pact verification process"
9
9
  method_option :pact_urls, aliases: "-u", desc: "Comma-separated list of Pact file URIs. Supports local and networked (http-based) files", :required => true
10
10
  method_option :provider_base_url, aliases: "-h", desc: "Provide host URL", :required => true
11
- method_option :provider_states_url, aliases: "-s", desc: "Base URL to retrieve the provider states from", :required => false
12
11
  method_option :provider_states_setup_url, aliases: "-c", desc: "Base URL to setup the provider states at", :required => false
13
12
  method_option :provider_app_version, aliases: "-a", desc: "The provider application version, required for publishing verification results", :required => false
14
13
  method_option :publish_verification_results, aliases: "-r", desc: "Publish verification results to the broker", required: false
15
14
  method_option :broker_username, aliases: "-n", desc: "Pact Broker username", :required => false
16
15
  method_option :broker_password, aliases: "-p", desc: "Pact Broker password", :required => false
17
16
  method_option :verbose, aliases: "-v", desc: "Verbose output", :required => false
17
+ method_option :provider_states_url, aliases: "-s", desc: "DEPRECATED", :required => false
18
18
 
19
19
  def verify
20
20
  app = Pact::ProviderVerifier::App.new(options)
@@ -2,45 +2,12 @@ require 'net/https'
2
2
  require 'faraday_middleware'
3
3
  require 'json'
4
4
  require_relative './app'
5
+ require_relative 'set_up_provider_state'
6
+ require 'pact/provider/configuration'
5
7
 
6
8
  # Responsible for making the call to the provider state server to set up the state
7
- if ENV['provider_states_url']
8
- module ProviderStateServerClient
9
- def set_up_state provider_state
10
- if ENV['VERBOSE_LOGGING']
11
- puts "Setting up provider state '#{provider_state}' for consumer '#{ENV['pact_consumer']}' using provider state server at #{ENV['provider_states_setup_url']}"
12
- end
13
9
 
14
- conn = Faraday.new(:url => ENV['provider_states_setup_url']) do |faraday|
15
- if ENV['PACT_BROKER_USERNAME'] && ENV['PACT_BROKER_PASSWORD']
16
- faraday.use Faraday::Request::BasicAuthentication, ENV['PACT_BROKER_USERNAME'], ENV['PACT_BROKER_PASSWORD']
17
- end
18
- faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
19
- end
20
- conn.post do |req|
21
- req.headers["Content-Type"] = "application/json"
22
- req.body = JSON.dump ({"consumer" => ENV['pact_consumer'], "state" => provider_state })
23
- end
24
- end
25
- end
26
-
27
- Pact.configure do | config |
28
- config.include ProviderStateServerClient
29
- end
30
-
31
- # get the consumer provider states from the provider
32
- provider_states = get_json(ENV['provider_states_url'])
33
-
34
- # register the consumer provider states with pact
35
- provider_states.keys.each do |consumer|
36
- Pact.provider_states_for consumer do
37
- provider_states[consumer].each do |state|
38
- provider_state state do
39
- set_up do
40
- set_up_state state
41
- end
42
- end
43
- end
44
- end
45
- end
10
+ Pact.configure do | config |
11
+ config.provider_state_set_up = Pact::ProviderVerifier::SetUpProviderState
12
+ config.provider_state_tear_down = -> (*args){ }
46
13
  end
@@ -0,0 +1,37 @@
1
+ module Pact
2
+ module ProviderVerifier
3
+
4
+ class SetUpProviderStateError < StandardError; end
5
+
6
+ class SetUpProviderState
7
+
8
+ def self.call provider_state, consumer, options
9
+ if verbose?
10
+ puts "Setting up provider state '#{provider_state}' for consumer '#{consumer}' using provider state server at #{provider_states_setup_url}"
11
+ end
12
+
13
+ conn = Faraday.new(:url => provider_states_setup_url) do |faraday|
14
+ faraday.adapter Faraday.default_adapter
15
+ end
16
+ response = conn.post do |req|
17
+ req.headers["Content-Type"] = "application/json"
18
+ req.body = {consumer: consumer, state: provider_state }.to_json
19
+ end
20
+
21
+ # Not sure about this?
22
+ # if response.status >= 300
23
+ # raise SetUpProviderStateError.new("Error setting up provider state '#{provider_state}' for consumer '#{consumer}' at #{provider_states_setup_url}. response status=#{response.status} response.body=#{response.body}")
24
+ # end
25
+
26
+ end
27
+
28
+ def self.provider_states_setup_url
29
+ ENV['provider_states_setup_url']
30
+ end
31
+
32
+ def self.verbose?
33
+ ENV['VERBOSE_LOGGING']
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,5 +1,5 @@
1
1
  module Pact
2
2
  module ProviderVerifier
3
- VERSION = "1.0.2"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact-provider-verifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Fellows
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-22 00:00:00.000000000 Z
11
+ date: 2017-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.11'
33
+ version: '1.13'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.11'
40
+ version: '1.13'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pact-provider-proxy
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,34 +86,6 @@ dependencies:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
88
  version: 0.10.0
89
- - !ruby/object:Gem::Dependency
90
- name: pact-mock_service
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '1.0'
96
- type: :runtime
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '1.0'
103
- - !ruby/object:Gem::Dependency
104
- name: pact-support
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '0.6'
110
- type: :runtime
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '0.6'
117
89
  - !ruby/object:Gem::Dependency
118
90
  name: json
119
91
  requirement: !ruby/object:Gem::Requirement
@@ -181,6 +153,7 @@ files:
181
153
  - lib/pact/provider_verifier/app.rb
182
154
  - lib/pact/provider_verifier/cli.rb
183
155
  - lib/pact/provider_verifier/pact_helper.rb
156
+ - lib/pact/provider_verifier/set_up_provider_state.rb
184
157
  - lib/pact/provider_verifier/version.rb
185
158
  homepage: https://github.com/pact-foundation/pact-provider-verifier
186
159
  licenses:
@@ -202,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
175
  version: '0'
203
176
  requirements: []
204
177
  rubyforge_project:
205
- rubygems_version: 2.6.11
178
+ rubygems_version: 2.4.5
206
179
  signing_key:
207
180
  specification_version: 4
208
181
  summary: Provides a Pact verification service for use with Pact