pact-provider-verifier 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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