pact-mock_service 3.7.0 → 3.10.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
  SHA256:
3
- metadata.gz: 9c3129a847616f140d536b6123ab116f691ca5cfd4ded15918d481896a48349f
4
- data.tar.gz: ddd7f7761c5f0e49e553047387a0bb90a909de764d317c0dd78ebb1935461656
3
+ metadata.gz: d16d00c403d1d26138138585d3d47c523d07c22d68e86bbe03281cb365602045
4
+ data.tar.gz: 8de64b754a090f75feec4ba1da30cf63647ee8e9d0bab378ddcab461427bb4d9
5
5
  SHA512:
6
- metadata.gz: 1dc4daeac63353379b94f0a4ba9be811b14cf90d14c37de74d6922aecfc765407270df3cc843907817a54570415f72a26d4fac17f9fd726d0aede35e5fb47168
7
- data.tar.gz: 5c311e4d4cd99f18aca430e0cfd7d1f9255eec52145843edc84da8c8d72eb39a86ea66aa4fd2c572a7581548bbcf1f4620ca6e75d641f2431afd3ac04f5d553d
6
+ metadata.gz: 945a1bff98624e8274039efd472e1e58a3882f60ab4ac95c8c3c374ec3a213c2e0b877bfa0b3b025f8aed1aa5af78bcd5bb77f7e3e91e6494f71df9d104231eb
7
+ data.tar.gz: c4594ee0cc987482f35b92e460116e1a48c52f743850850bd3b949e3a070b53fdf008f833cb0adc837ea886633ee496126c0419ec5b6ace83f57e90c6fcd3762
data/CHANGELOG.md CHANGED
@@ -1,3 +1,31 @@
1
+ <a name="v3.10.0"></a>
2
+ ### v3.10.0 (2022-02-21)
3
+
4
+ #### Features
5
+
6
+ * add telemetry ([db5dfa5](/../../commit/db5dfa5))
7
+
8
+ <a name="v3.9.1"></a>
9
+ ### v3.9.1 (2021-06-03)
10
+
11
+ #### Bug Fixes
12
+
13
+ * check for nil body rather than falsey body when determining how to render mocked response Fixes: https://github.com/pact-foundation/pact-mock_service/issues/99 ([d26e520](/../../commit/d26e520))
14
+
15
+ <a name="v3.9.0"></a>
16
+ ### v3.9.0 (2021-05-17)
17
+
18
+ #### Features
19
+
20
+ * pass host into WEBrick options to allow configuration (#128) ([ec234a4](/../../commit/ec234a4))
21
+
22
+ <a name="v3.8.0"></a>
23
+ ### v3.8.0 (2021-02-25)
24
+
25
+ #### Features
26
+
27
+ * include interaction diffs in verification response ([6306693](/../../commit/6306693))
28
+
1
29
  <a name="v3.7.0"></a>
2
30
  ### v3.7.0 (2020-11-13)
3
31
 
@@ -83,7 +83,7 @@ module Pact
83
83
  end
84
84
 
85
85
  def webrick_opts
86
- opts = { Port: port.nil? ? 0 : port, AccessLog: [], Logger: WEBrick::Log::new(nil, 0) }
86
+ opts = { Host: host.nil? ? 'localhost' : host, Port: port.nil? ? 0 : port, AccessLog: [], Logger: WEBrick::Log::new(nil, 0) }
87
87
  opts.merge!({
88
88
  :SSLCertificate => OpenSSL::X509::Certificate.new(File.open(options[:sslcert]).read) }) if options[:sslcert]
89
89
  opts.merge!({
@@ -4,6 +4,7 @@ require 'pact/logging'
4
4
  require 'pact/consumer/server'
5
5
  require 'singleton'
6
6
  require 'pact/mock_service/app'
7
+ require 'pact/support/metrics'
7
8
 
8
9
  module Pact
9
10
  module MockService
@@ -29,6 +30,8 @@ module Pact
29
30
  pact_dir: pact_dir,
30
31
  pact_specification_version: options.fetch(:pact_specification_version)
31
32
  )
33
+
34
+ Pact::Support::Metrics.report_metric("Pact mock server started", "ConsumerTest", "MockServerStarted")
32
35
  register(app, uri.host, uri.port)
33
36
  end
34
37
 
@@ -38,6 +38,10 @@ module Pact
38
38
  expected_interactions - actual_interactions.matched_interactions - @actual_interactions.interaction_mismatches.collect(&:candidate_interactions).flatten
39
39
  end
40
40
 
41
+ def interaction_mismatches
42
+ actual_interactions.interaction_mismatches
43
+ end
44
+
41
45
  private
42
46
 
43
47
  attr_reader :expected_interactions, :actual_interactions
@@ -182,7 +182,7 @@ module Pact
182
182
  end
183
183
 
184
184
  def self.render_body body
185
- return '' unless body
185
+ return '' if body.nil?
186
186
  body.kind_of?(String) ? body.force_encoding('utf-8') : body.to_json
187
187
  end
188
188
  end
@@ -52,7 +52,7 @@ module Pact
52
52
  def to_s
53
53
  titles_and_summaries.collect do | title, summaries |
54
54
  "#{title}:\n\t#{summaries.join("\n\t")}\n\n" if summaries.any?
55
- end.compact.join
55
+ end.compact.join + verification.interaction_mismatches.collect(&:to_s).join("\n\n") + "\n"
56
56
 
57
57
  end
58
58
 
@@ -4,6 +4,7 @@ require 'pact/consumer/mock_service/set_location'
4
4
  require 'pact/mock_service/run'
5
5
  require 'pact/mock_service/server/webrick_request_monkeypatch'
6
6
  require 'pact/specification_version'
7
+ require 'pact/support/metrics'
7
8
 
8
9
  module Pact
9
10
  module MockService
@@ -35,6 +36,7 @@ module Pact
35
36
  def mock_service
36
37
  @mock_service ||= begin
37
38
  mock_service = Pact::MockService.new(service_options)
39
+ Pact::Support::Metrics.report_metric("Pact mock server started", "ConsumerTest", "MockServerStarted")
38
40
  Pact::Consumer::SetLocation.new(mock_service, base_url)
39
41
  end
40
42
  end
@@ -1,5 +1,5 @@
1
1
  module Pact
2
2
  module MockService
3
- VERSION = "3.7.0"
3
+ VERSION = "3.10.0"
4
4
  end
5
5
  end
@@ -0,0 +1,85 @@
1
+ require 'securerandom'
2
+ require 'digest'
3
+ require 'socket'
4
+ require 'pact/support/metrics'
5
+ require 'pact/mock_service/version'
6
+ require 'net/http'
7
+
8
+ module Pact
9
+ module Support
10
+ class Metrics
11
+
12
+ def self.report_metric(event, category, action, value = 1)
13
+ in_thread do
14
+ begin
15
+ if track_events?
16
+ Pact.configuration.output_stream.puts "WARN: Please note: we are tracking events anonymously to gather important usage statistics like Pact-Ruby version and operating system. To disable tracking, set the 'PACT_DO_NOT_TRACK' environment variable to 'true'."
17
+
18
+ uri = URI('https://www.google-analytics.com/collect')
19
+ req = Net::HTTP::Post.new(uri)
20
+ req.set_form_data(create_tracking_event(event, category, action, value))
21
+
22
+ Net::HTTP.start(uri.hostname, uri.port, read_timeout:2, open_timeout:2, :use_ssl => true ) do |http|
23
+ http.request(req)
24
+ end
25
+ end
26
+ rescue StandardError => e
27
+ handle_error(e)
28
+ end
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def self.handle_error e
35
+ if ENV['PACT_METRICS_DEBUG'] == 'true'
36
+ Pact.configuration.output_stream.puts("DEBUG: #{e.inspect}\n" + e.backtrace.join("\n"))
37
+ end
38
+ end
39
+
40
+ def self.in_thread
41
+ Thread.new do
42
+ yield
43
+ end
44
+ end
45
+
46
+ def self.create_tracking_event(event, category, action, value)
47
+ {
48
+ "v" => 1,
49
+ "t" => "event",
50
+ "tid" => "UA-117778936-1",
51
+ "cid" => calculate_cid,
52
+ "an" => "Pact Mock Service",
53
+ "av" => Pact::MockService::VERSION,
54
+ "aid" => "pact-mock_service",
55
+ "aip" => 1,
56
+ "ds" => ENV['PACT_EXECUTING_LANGUAGE'] ? "client" : "cli",
57
+ "cd2" => ENV['CI'] == "true" ? "CI" : "unknown",
58
+ "cd3" => RUBY_PLATFORM,
59
+ "cd6" => ENV['PACT_EXECUTING_LANGUAGE'] || "unknown",
60
+ "cd7" => ENV['PACT_EXECUTING_LANGUAGE_VERSION'],
61
+ "el" => event,
62
+ "ec" => category,
63
+ "ea" => action,
64
+ "ev" => value
65
+ }
66
+ end
67
+
68
+ def self.track_events?
69
+ ENV['PACT_DO_NOT_TRACK'] != 'true'
70
+ end
71
+
72
+ def self.calculate_cid
73
+ if RUBY_PLATFORM.include? "windows"
74
+ hostname = ENV['COMPUTERNAME']
75
+ else
76
+ hostname = ENV['HOSTNAME']
77
+ end
78
+ if !hostname
79
+ hostname = Socket.gethostname
80
+ end
81
+ Digest::MD5.hexdigest hostname || SecureRandom.urlsafe_base64(5)
82
+ end
83
+ end
84
+ end
85
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact-mock_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.0
4
+ version: 3.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Fraser
@@ -9,10 +9,10 @@ authors:
9
9
  - Brent Snook
10
10
  - Ronald Holshausen
11
11
  - Beth Skurrie
12
- autorequire:
12
+ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2020-11-13 00:00:00.000000000 Z
15
+ date: 2022-02-21 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rack
@@ -312,7 +312,7 @@ dependencies:
312
312
  - - "~>"
313
313
  - !ruby/object:Gem::Version
314
314
  version: '0.5'
315
- description:
315
+ description:
316
316
  email:
317
317
  - james.fraser@alumni.swinburne.edu
318
318
  - sergei.matheson@gmail.com
@@ -392,11 +392,12 @@ files:
392
392
  - lib/pact/mock_service/version.rb
393
393
  - lib/pact/stub_service/cli.rb
394
394
  - lib/pact/support/expand_file_list.rb
395
+ - lib/pact/support/metrics.rb
395
396
  homepage: https://github.com/bethesque/pact-mock_service
396
397
  licenses:
397
398
  - MIT
398
399
  metadata: {}
399
- post_install_message:
400
+ post_install_message:
400
401
  rdoc_options: []
401
402
  require_paths:
402
403
  - lib
@@ -411,8 +412,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
411
412
  - !ruby/object:Gem::Version
412
413
  version: '0'
413
414
  requirements: []
414
- rubygems_version: 3.1.4
415
- signing_key:
415
+ rubygems_version: 3.3.7
416
+ signing_key:
416
417
  specification_version: 4
417
418
  summary: Provides a mock service for use with Pact
418
419
  test_files: []