pact_broker 2.54.0 → 2.55.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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/lib/pact_broker/api/contracts/webhook_contract.rb +6 -4
  4. data/lib/pact_broker/api/pact_broker_urls.rb +2 -2
  5. data/lib/pact_broker/api/renderers/html_pact_renderer.rb +14 -14
  6. data/lib/pact_broker/api/resources/pact.rb +1 -1
  7. data/lib/pact_broker/doc/controllers/app.rb +7 -1
  8. data/lib/pact_broker/doc/views/layouts/main.haml +1 -1
  9. data/lib/pact_broker/ui/app.rb +1 -0
  10. data/lib/pact_broker/ui/controllers/clusters.rb +2 -2
  11. data/lib/pact_broker/ui/controllers/groups.rb +3 -2
  12. data/lib/pact_broker/ui/controllers/index.rb +3 -2
  13. data/lib/pact_broker/ui/controllers/matrix.rb +5 -3
  14. data/lib/pact_broker/ui/helpers/url_helper.rb +4 -4
  15. data/lib/pact_broker/ui/view_models/index_item.rb +16 -11
  16. data/lib/pact_broker/ui/view_models/index_items.rb +2 -2
  17. data/lib/pact_broker/ui/view_models/matrix_line.rb +12 -7
  18. data/lib/pact_broker/ui/view_models/matrix_lines.rb +2 -2
  19. data/lib/pact_broker/ui/views/groups/show.html.erb +3 -3
  20. data/lib/pact_broker/ui/views/index/_css_and_js.haml +9 -9
  21. data/lib/pact_broker/ui/views/index/_navbar.haml +3 -3
  22. data/lib/pact_broker/ui/views/index/_pagination.haml +1 -1
  23. data/lib/pact_broker/ui/views/index/show-with-tags.haml +3 -3
  24. data/lib/pact_broker/ui/views/index/show.haml +3 -3
  25. data/lib/pact_broker/ui/views/layouts/main.haml +4 -4
  26. data/lib/pact_broker/ui/views/matrix/show.haml +10 -10
  27. data/lib/pact_broker/version.rb +1 -1
  28. data/lib/pact_broker/webhooks/service.rb +4 -3
  29. data/pact_broker.gemspec +1 -1
  30. data/public/javascripts/pact.js +7 -6
  31. data/script/seed.rb +1 -1
  32. data/spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb +1 -1
  33. data/vendor/hal-browser/browser.html +5 -2
  34. metadata +10 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9147b88a513fab2205b74006fcba47e6aff79b52205bc04d639f15cdc4078d12
4
- data.tar.gz: 784bae2c2977392c3671580ca59f094da810aed6ef842e66eec540d531cd00f5
3
+ metadata.gz: a7a4ca507c57031ed0e5aa7f988f4a0826bd97c2d8904431da26052fb6884558
4
+ data.tar.gz: e700fab3146413a638120a9d73655ee5b6ae8393932223654091588e1682798c
5
5
  SHA512:
6
- metadata.gz: 6e8928e7c7b4d393d618e1ceec3b7e1a72d32db2e52c32f4e87a434ecce2857180a96db4a7103070fbddf8fd2d5661a411d273bc05c77042c22e68e1c5137912
7
- data.tar.gz: 551c37f0fc7d63b11076adc2067800b7e2fd70ed52030859f07d287f80236d60520f60f67c91b9f1c3dca2695579a39021fe1b83ef5e5cccd8a05714f756c3a2
6
+ metadata.gz: e4d48c58ceb23d1b20dfdd3e263d52c69e30355c72bc27e00795c0b11a2a56b5c9bf52034b2f0e8d2dd2d09480ac7e6a5ae474d34457de7653e381fd6518e62c
7
+ data.tar.gz: e454fa82a641873ae68221190d91c84830aa0def182d6637fca1a34a9a1aecf64a4f165221283d5850deaef1a2d5580610b0ca214b6b2885b6ebe14bdc56250e
@@ -1,3 +1,12 @@
1
+ <a name="v2.55.0"></a>
2
+ ### v2.55.0 (2020-05-22)
3
+
4
+
5
+ #### Features
6
+
7
+ * support non root context (#344) ([dc480499](/../../commit/dc480499))
8
+
9
+
1
10
  <a name="v2.54.0"></a>
2
11
  ### v2.54.0 (2020-05-13)
3
12
 
@@ -14,11 +14,13 @@ module PactBroker
14
14
  # I just cannot seem to get the validation to stop on the first error.
15
15
  # If one rule fails, they all come back failed, and it's driving me nuts.
16
16
  # Why on earth would I want that behaviour?
17
- new_errors = Reform::Contract::Errors.new
18
- errors.messages.each do | key, value |
19
- new_errors.add(key, value.first)
17
+ # I cannot believe I have to do this shit.
18
+ @first_errors = errors
19
+ @first_errors.messages.keys.each do | key |
20
+ @first_errors.messages[key] = @first_errors.messages[key][0...1]
20
21
  end
21
- @errors = new_errors
22
+
23
+ def self.errors; @first_errors end
22
24
  result
23
25
  end
24
26
 
@@ -284,8 +284,8 @@ module PactBroker
284
284
  "#{base_url}/groups/#{pacticipant_name}"
285
285
  end
286
286
 
287
- def hal_browser_url target_url
288
- "/hal-browser/browser.html#" + target_url
287
+ def hal_browser_url target_url, base_url = ''
288
+ "#{base_url}/hal-browser/browser.html#" + target_url
289
289
  end
290
290
 
291
291
  def url_encode param
@@ -37,18 +37,18 @@ module PactBroker
37
37
 
38
38
  def head
39
39
  "<title>#{title}</title>
40
- <link rel='stylesheet' type='text/css' href='/stylesheets/github.css'>
41
- <link rel='stylesheet' type='text/css' href='/stylesheets/pact.css'>
42
- <link rel='stylesheet' type='text/css' href='/stylesheets/github-json.css'>
43
- <link rel='stylesheet' type='text/css' href='/css/bootstrap.min.css'>
44
- <link rel='stylesheet' type='text/css' href='/stylesheets/material-menu.css'>
45
- <link rel='stylesheet' type='text/css' href='/stylesheets/jquery-confirm.min.css'>
46
- <script src='/javascripts/highlight.pack.js'></script>
47
- <script src='/javascripts/jquery-3.3.1.min.js'></script>
48
- <script src='/js/bootstrap.min.js'></script>
49
- <script src='/javascripts/material-menu.js'></script>
50
- <script src='/javascripts/pact.js'></script>
51
- <script src='/javascripts/jquery-confirm.min.js'></script>
40
+ <link rel='stylesheet' type='text/css' href='#{base_url}/stylesheets/github.css'>
41
+ <link rel='stylesheet' type='text/css' href='#{base_url}/stylesheets/pact.css'>
42
+ <link rel='stylesheet' type='text/css' href='#{base_url}/stylesheets/github-json.css'>
43
+ <link rel='stylesheet' type='text/css' href='#{base_url}/css/bootstrap.min.css'>
44
+ <link rel='stylesheet' type='text/css' href='#{base_url}/stylesheets/material-menu.css'>
45
+ <link rel='stylesheet' type='text/css' href='#{base_url}/stylesheets/jquery-confirm.min.css'>
46
+ <script src='#{base_url}/javascripts/highlight.pack.js'></script>
47
+ <script src='#{base_url}/javascripts/jquery-3.3.1.min.js'></script>
48
+ <script src='#{base_url}/js/bootstrap.min.js'></script>
49
+ <script src='#{base_url}/javascripts/material-menu.js'></script>
50
+ <script src='#{base_url}/javascripts/pact.js'></script>
51
+ <script src='#{base_url}/javascripts/jquery-confirm.min.js'></script>
52
52
  <script>hljs.initHighlightingOnLoad();</script>"
53
53
  end
54
54
 
@@ -72,7 +72,7 @@ module PactBroker
72
72
  <a href=\"#{matrix_url}\">View Matrix</a>
73
73
  </li>
74
74
  <li>
75
- <a href=\"/\">Home</a>
75
+ <a href=\"#{base_url}\">Home</a>
76
76
  </li>
77
77
  <li>
78
78
  <span data-consumer-name=\"#{@pact.consumer.name}\"
@@ -129,7 +129,7 @@ module PactBroker
129
129
  end
130
130
 
131
131
  def json_url
132
- PactBroker::Api::PactBrokerUrls.hal_browser_url pact_url
132
+ PactBroker::Api::PactBrokerUrls.hal_browser_url pact_url, base_url
133
133
  end
134
134
 
135
135
  def pact_url
@@ -100,7 +100,7 @@ module PactBroker
100
100
 
101
101
  def set_post_deletion_response
102
102
  latest_pact = pact_service.find_latest_pact(pact_params)
103
- response_body = { "_links" => {} }
103
+ response_body = { "_links" => { index: { href: base_url } } }
104
104
  if latest_pact
105
105
  response_body["_links"]["pb:latest-pact-version"] = {
106
106
  href: latest_pact_url(base_url, latest_pact),
@@ -33,7 +33,7 @@ module PactBroker
33
33
  get ":rel_name" do
34
34
  rel_name = params[:rel_name]
35
35
  context = params[:context]
36
- view_params = {:layout_engine => :haml, layout: :'layouts/main'}
36
+ view_params = {:layout_engine => :haml, layout: :'layouts/main', locals: { base_url: base_url }}
37
37
  if resource_exists? rel_name, context
38
38
  markdown view_name_for(rel_name, context).to_sym, view_params, {}
39
39
  elsif resource_exists? rel_name
@@ -42,6 +42,12 @@ module PactBroker
42
42
  markdown :not_found, view_params, {}
43
43
  end
44
44
  end
45
+
46
+ private
47
+
48
+ def base_url
49
+ PactBroker.configuration.base_url || request.base_url
50
+ end
45
51
  end
46
52
  end
47
53
  end
@@ -1,5 +1,5 @@
1
1
  %html
2
2
  %head
3
- %link{rel: 'stylesheet', href: '/css/bootstrap.min.css'}
3
+ %link{rel: 'stylesheet', href: "#{base_url}/css/bootstrap.min.css"}
4
4
  %body{style: 'margin:20px'}
5
5
  = yield
@@ -47,6 +47,7 @@ module PactBroker
47
47
  end
48
48
 
49
49
  map "/" do
50
+ use PathInfoFixer
50
51
  run PactBroker::UI::Controllers::Index
51
52
  end
52
53
  }
@@ -18,8 +18,8 @@ module PactBroker
18
18
  end
19
19
 
20
20
  get "/" do
21
- view_model = ViewDomain::IndexItems.new(pacticipant_service.find_index_items)
22
- haml 'clusters/show', locals: {relationships: view_model}
21
+ view_model = ViewDomain::IndexItems.new(pacticipant_service.find_index_items, base_url: base_url)
22
+ haml 'clusters/show', locals: {relationships: view_model, base_url: base_url}
23
23
  end
24
24
 
25
25
  end
@@ -13,9 +13,10 @@ module PactBroker
13
13
  pacticipant = pacticipant_service.find_pacticipant_by_name(params[:name])
14
14
  erb :'groups/show.html', {
15
15
  locals: {
16
- csv_path: "/groups/#{params[:name]}.csv",
16
+ csv_path: "#{base_url}/groups/#{params[:name]}.csv",
17
17
  pacticipant_name: params[:name],
18
- repository_url: pacticipant&.repository_url
18
+ repository_url: pacticipant&.repository_url,
19
+ base_url: base_url
19
20
  }
20
21
  }, {
21
22
  layout: 'layouts/main'
@@ -25,7 +25,7 @@ module PactBroker
25
25
 
26
26
  # TODO remove this code when verified
27
27
  options[:optimised] = true unless params[:optimised] == 'false'
28
- index_items = ViewDomain::IndexItems.new(index_service.find_index_items(options))
28
+ index_items = ViewDomain::IndexItems.new(index_service.find_index_items(options), base_url: base_url)
29
29
 
30
30
  page = tags ? :'index/show-with-tags' : :'index/show'
31
31
  locals = {
@@ -34,7 +34,8 @@ module PactBroker
34
34
  page_number: page_number,
35
35
  page_size: page_size,
36
36
  pagination_record_count: index_items.pagination_record_count,
37
- current_page_size: index_items.size
37
+ current_page_size: index_items.size,
38
+ base_url: base_url
38
39
  }
39
40
 
40
41
  haml page, {locals: locals, layout: :'layouts/main'}
@@ -21,7 +21,8 @@ module PactBroker
21
21
  lines: [],
22
22
  title: "The Matrix",
23
23
  selectors: create_selector_objects(selectors),
24
- options: create_options_model(options)
24
+ options: create_options_model(options),
25
+ base_url: base_url
25
26
  }
26
27
  begin
27
28
  if params[:q]
@@ -48,7 +49,7 @@ module PactBroker
48
49
  selectors = [ PactBroker::Matrix::UnresolvedSelector.new(pacticipant_name: params[:consumer_name]), PactBroker::Matrix::UnresolvedSelector.new(pacticipant_name: params[:provider_name]) ]
49
50
  options = {latestby: 'cvpv', limit: 100}
50
51
  lines = matrix_service.find(selectors, options)
51
- lines = PactBroker::UI::ViewDomain::MatrixLines.new(lines)
52
+ lines = PactBroker::UI::ViewDomain::MatrixLines.new(lines, base_url: base_url)
52
53
  locals = {
53
54
  lines: lines,
54
55
  title: "The Matrix",
@@ -56,7 +57,8 @@ module PactBroker
56
57
  provider_name: params[:provider_name],
57
58
  selectors: create_selector_objects(selectors),
58
59
  options: create_options_model(options),
59
- badge_url: nil
60
+ badge_url: nil,
61
+ base_url: base_url
60
62
  }
61
63
  haml :'matrix/show', {locals: locals, layout: :'layouts/main'}
62
64
  end
@@ -7,12 +7,12 @@ module PactBroker
7
7
 
8
8
  extend self
9
9
 
10
- def group_url pacticipant_name
11
- "/groups/#{ERB::Util.url_encode(pacticipant_name)}"
10
+ def group_url pacticipant_name, base_url = ''
11
+ "#{base_url}/groups/#{ERB::Util.url_encode(pacticipant_name)}"
12
12
  end
13
13
 
14
- def matrix_url consumer_name, provider_name
15
- "/matrix/provider/#{ERB::Util.url_encode(provider_name)}/consumer/#{ERB::Util.url_encode(consumer_name)}"
14
+ def matrix_url consumer_name, provider_name, base_url = ''
15
+ "#{base_url}/matrix/provider/#{ERB::Util.url_encode(provider_name)}/consumer/#{ERB::Util.url_encode(consumer_name)}"
16
16
  end
17
17
  end
18
18
  end
@@ -11,8 +11,9 @@ module PactBroker
11
11
 
12
12
  include PactBroker::Api::PactBrokerUrls
13
13
 
14
- def initialize relationship
14
+ def initialize relationship, options = {}
15
15
  @relationship = relationship
16
+ @options = options
16
17
  end
17
18
 
18
19
  def consumer_name
@@ -48,23 +49,23 @@ module PactBroker
48
49
  end
49
50
 
50
51
  def consumer_group_url
51
- Helpers::URLHelper.group_url consumer_name
52
+ Helpers::URLHelper.group_url(consumer_name, base_url)
52
53
  end
53
54
 
54
55
  def provider_group_url
55
- Helpers::URLHelper.group_url provider_name
56
+ Helpers::URLHelper.group_url(provider_name, base_url)
56
57
  end
57
58
 
58
59
  def latest_pact_url
59
- "#{pactigration_base_url('', @relationship)}/latest"
60
+ "#{pactigration_base_url(base_url, @relationship)}/latest"
60
61
  end
61
62
 
62
63
  def pact_url
63
- PactBroker::Api::PactBrokerUrls.pact_url('', @relationship)
64
+ PactBroker::Api::PactBrokerUrls.pact_url(base_url, @relationship)
64
65
  end
65
66
 
66
67
  def pact_matrix_url
67
- Helpers::URLHelper.matrix_url consumer_name, provider_name
68
+ Helpers::URLHelper.matrix_url(consumer_name, provider_name, base_url)
68
69
  end
69
70
 
70
71
  def any_webhooks?
@@ -72,11 +73,11 @@ module PactBroker
72
73
  end
73
74
 
74
75
  def pact_versions_url
75
- PactBroker::Api::PactBrokerUrls.pact_versions_url(consumer_name, provider_name)
76
+ PactBroker::Api::PactBrokerUrls.pact_versions_url(consumer_name, provider_name, base_url)
76
77
  end
77
78
 
78
79
  def integration_url
79
- PactBroker::Api::PactBrokerUrls.integration_url(consumer_name, provider_name)
80
+ PactBroker::Api::PactBrokerUrls.integration_url(consumer_name, provider_name, base_url)
80
81
  end
81
82
 
82
83
  def webhook_label
@@ -114,11 +115,11 @@ module PactBroker
114
115
  def webhook_url
115
116
  url = case @relationship.webhook_status
116
117
  when :none
117
- PactBroker::Api::PactBrokerUrls.webhooks_for_consumer_and_provider_url @relationship.latest_pact.consumer, @relationship.latest_pact.provider
118
+ PactBroker::Api::PactBrokerUrls.webhooks_for_consumer_and_provider_url @relationship.latest_pact.consumer, @relationship.latest_pact.provider, base_url
118
119
  else
119
- PactBroker::Api::PactBrokerUrls.webhooks_status_url @relationship.latest_pact.consumer, @relationship.latest_pact.provider
120
+ PactBroker::Api::PactBrokerUrls.webhooks_status_url @relationship.latest_pact.consumer, @relationship.latest_pact.provider, base_url
120
121
  end
121
- "/hal-browser/browser.html##{url}"
122
+ PactBroker::Api::PactBrokerUrls.hal_browser_url(url, base_url)
122
123
  end
123
124
 
124
125
  def last_verified_date
@@ -181,6 +182,10 @@ module PactBroker
181
182
  version_number
182
183
  end
183
184
  end
185
+
186
+ def base_url
187
+ @options[:base_url]
188
+ end
184
189
  end
185
190
  end
186
191
  end
@@ -7,9 +7,9 @@ module PactBroker
7
7
 
8
8
  attr_reader :pagination_record_count
9
9
 
10
- def initialize index_items
10
+ def initialize index_items, options = {}
11
11
  # Why are we sorting twice!?
12
- @index_items = index_items.collect{ |index_item| IndexItem.new(index_item) }.sort
12
+ @index_items = index_items.collect{ |index_item| IndexItem.new(index_item, options) }.sort
13
13
  # until the feature flag is turned on
14
14
  @pagination_record_count = index_items.size
15
15
  @pagination_record_count = index_items.pagination_record_count if index_items.respond_to?(:pagination_record_count)
@@ -12,8 +12,9 @@ module PactBroker
12
12
  include PactBroker::Api::PactBrokerUrls
13
13
  include PactBroker::Messages
14
14
 
15
- def initialize line
15
+ def initialize line, options = {}
16
16
  @line = line
17
+ @options = options
17
18
  @overwritten = false # true if the pact was revised and this revision is no longer the latest
18
19
  end
19
20
 
@@ -22,7 +23,7 @@ module PactBroker
22
23
  end
23
24
 
24
25
  def provider_name_url
25
- hal_browser_url(pacticipant_url_from_params(pacticipant_name: provider_name))
26
+ hal_browser_url(pacticipant_url_from_params({ pacticipant_name: provider_name }, base_url), base_url)
26
27
  end
27
28
 
28
29
  def consumer_name
@@ -30,7 +31,7 @@ module PactBroker
30
31
  end
31
32
 
32
33
  def consumer_name_url
33
- hal_browser_url(pacticipant_url_from_params(pacticipant_name: consumer_name))
34
+ hal_browser_url(pacticipant_url_from_params({ pacticipant_name: consumer_name }, base_url), base_url)
34
35
  end
35
36
 
36
37
  def pact_version_sha
@@ -68,7 +69,7 @@ module PactBroker
68
69
 
69
70
  def consumer_version_number_url
70
71
  params = { pacticipant_name: consumer_name, version_number: consumer_version_number }
71
- hal_browser_url(version_url_from_params(params))
72
+ hal_browser_url(version_url_from_params(params, base_url), base_url)
72
73
  end
73
74
 
74
75
  def consumer_version_order
@@ -85,7 +86,7 @@ module PactBroker
85
86
 
86
87
  def provider_version_number_url
87
88
  params = { pacticipant_name: provider_name, version_number: provider_version_number }
88
- hal_browser_url(version_url_from_params(params))
89
+ hal_browser_url(version_url_from_params(params, base_url), base_url)
89
90
  end
90
91
 
91
92
  def provider_version_order
@@ -142,7 +143,7 @@ module PactBroker
142
143
  end
143
144
 
144
145
  def verification_status_url
145
- hal_browser_url(verification_url(self))
146
+ hal_browser_url(verification_url(self, base_url), base_url)
146
147
  end
147
148
 
148
149
  def pact_publication_date
@@ -150,7 +151,7 @@ module PactBroker
150
151
  end
151
152
 
152
153
  def pact_publication_date_url
153
- pact_url('', @line)
154
+ pact_url(base_url, @line)
154
155
  end
155
156
 
156
157
  def relative_date date
@@ -182,6 +183,10 @@ module PactBroker
182
183
  message("messages.matrix.pre_verified")
183
184
  end
184
185
  end
186
+
187
+ def base_url
188
+ @options[:base_url]
189
+ end
185
190
  end
186
191
  end
187
192
  end
@@ -5,9 +5,9 @@ module PactBroker
5
5
  module ViewDomain
6
6
  class MatrixLines < Array
7
7
 
8
- def initialize rows
8
+ def initialize rows, options = {}
9
9
  lines = rows.collect do | row |
10
- PactBroker::UI::ViewDomain::MatrixLine.new(row)
10
+ PactBroker::UI::ViewDomain::MatrixLine.new(row, options)
11
11
  end
12
12
  super(lines.sort)
13
13
  end
@@ -5,11 +5,11 @@
5
5
  <head>
6
6
  <meta charset="utf-8">
7
7
  <title>Network Graph</title>
8
- <link rel='shortcut icon' href='/favicon.ico' type='image/x-icon'/>
8
+ <link rel='shortcut icon' href='<%= base_url %>/favicon.ico' type='image/x-icon'/>
9
9
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
10
10
  <meta name="description" content="">
11
11
  <meta name="author" content="Duncan Alexander">
12
- <script type="text/javascript" src="/javascripts/d3.v3.js.pagespeed.ce.dFNRrGTALe.js"></script>
12
+ <script type="text/javascript" src="<%= base_url %>/javascripts/d3.v3.js.pagespeed.ce.dFNRrGTALe.js"></script>
13
13
  <style>
14
14
  body{
15
15
  font-family:"Helvetica Neue",Arial,sans-serif;
@@ -105,7 +105,7 @@ var relationshipPath = function(relationship, nodeLocations, pacticipants) {
105
105
 
106
106
  var latestPactUrl = function (consumerName, providerName) {
107
107
  //TODO send this with the relationship data
108
- return '/pacts/provider/' + providerName + '/consumer/' + consumerName + '/latest';
108
+ return '<%= base_url %>/pacts/provider/' + providerName + '/consumer/' + consumerName + '/latest';
109
109
  };
110
110
 
111
111
  var relationshipData = function(pacticipant, relationships) {
@@ -1,9 +1,9 @@
1
- %link{rel: 'stylesheet', href: '/stylesheets/index.css'}
2
- %link{rel: 'stylesheet', href: '/stylesheets/material-menu.css'}
3
- %link{rel: 'stylesheet', href: '/stylesheets/material-icon.css'}
4
- %link{rel: 'stylesheet', href: '/stylesheets/jquery-confirm.min.css'}
5
- %script{type: 'text/javascript', src:'/javascripts/jquery.tablesorter.min.js'}
6
- %script{type: 'text/javascript', src:'/javascripts/material-menu.js'}
7
- %script{type: 'text/javascript', src:'/javascripts/index.js'}
8
- %script{type: 'text/javascript', src:'/javascripts/clipboard.js'}
9
- %script{type: 'text/javascript', src:'/javascripts/jquery-confirm.min.js'}
1
+ %link{rel: 'stylesheet', href: "#{base_url}/stylesheets/index.css"}
2
+ %link{rel: 'stylesheet', href: "#{base_url}/stylesheets/material-menu.css"}
3
+ %link{rel: 'stylesheet', href: "#{base_url}/stylesheets/material-icon.css"}
4
+ %link{rel: 'stylesheet', href: "#{base_url}/stylesheets/jquery-confirm.min.css"}
5
+ %script{type: 'text/javascript', src:"#{base_url}/javascripts/jquery.tablesorter.min.js"}
6
+ %script{type: 'text/javascript', src:"#{base_url}/javascripts/material-menu.js"}
7
+ %script{type: 'text/javascript', src:"#{base_url}/javascripts/index.js"}
8
+ %script{type: 'text/javascript', src:"#{base_url}/javascripts/clipboard.js"}
9
+ %script{type: 'text/javascript', src:"#{base_url}/javascripts/jquery-confirm.min.js"}
@@ -4,11 +4,11 @@
4
4
  %ul.navbar-right#top-left-menu
5
5
  %li
6
6
  - if tag_toggle
7
- %a{href: './?tags=true'}
7
+ %a{href: "#{base_url}?tags=true"}
8
8
  Show latest tags
9
9
  - else
10
- %a{href: './'}
10
+ %a{href: "#{base_url}"}
11
11
  Hide latest tags
12
12
 
13
- %a{href: '/hal-browser/browser.html'}
13
+ %a{href: "#{base_url}/hal-browser/browser.html"}
14
14
  API Browser
@@ -1,4 +1,4 @@
1
- %script{type: 'text/javascript', src:'/javascripts/pagination.js'}
1
+ %script{type: 'text/javascript', src:"#{base_url}/javascripts/pagination.js"}
2
2
 
3
3
  :javascript
4
4
  const PAGE_NUMBER = #{page_number};
@@ -1,7 +1,7 @@
1
1
  %body
2
2
  = render :haml, :'index/_css_and_js', :layout => false
3
3
  .container
4
- = render :haml, :'index/_navbar', :layout => false, locals: {tag_toggle: false}
4
+ = render :haml, :'index/_navbar', :layout => false, locals: {tag_toggle: false, base_url: base_url}
5
5
  - if index_items.empty?
6
6
  = render :haml, :'index/_getting-started', :layout => false
7
7
  %h1.page-header
@@ -96,8 +96,8 @@
96
96
  $(document).ready(function(){
97
97
  initializeClipper(".clippable");
98
98
 
99
- $("span.pact a").load("/images/doc-text.svg");
100
- $("span.pact-matrix a").load("/images/doc-matrix.svg");
99
+ $("span.pact a").load("#{base_url}/images/doc-text.svg");
100
+ $("span.pact-matrix a").load("#{base_url}/images/doc-matrix.svg");
101
101
  $('td[data-toggle="tooltip"]').each(function(index, td){
102
102
  //appended tooltip div screws up table if it's appended after a
103
103
  //td, so need to append it to a div
@@ -1,7 +1,7 @@
1
1
  %body
2
2
  = render :haml, :'index/_css_and_js', :layout => false
3
3
  .container
4
- = render :haml, :'index/_navbar', :layout => false, locals: {tag_toggle: true}
4
+ = render :haml, :'index/_navbar', :layout => false, locals: {tag_toggle: true, base_url: base_url}
5
5
  - if index_items.empty?
6
6
  = render :haml, :'index/_getting-started', :layout => false
7
7
  %h1.page-header
@@ -67,8 +67,8 @@
67
67
  });
68
68
 
69
69
  $(document).ready(function(){
70
- $("span.pact a").load("/images/doc-text.svg");
71
- $("span.pact-matrix a").load("/images/doc-matrix.svg");
70
+ $("span.pact a").load("#{base_url}/images/doc-text.svg");
71
+ $("span.pact-matrix a").load("#{base_url}/images/doc-matrix.svg");
72
72
  $('td[data-toggle="tooltip"]').each(function(index, td){
73
73
  //appended tooltip div screws up table if it's appended after a
74
74
  //td, so need to append it to a div
@@ -2,8 +2,8 @@
2
2
  %html
3
3
  %head
4
4
  %title= defined?(title) ? title : ""
5
- %link{rel: 'shortcut icon', href: '/images/favicon.ico', type:'image/x-icon'}
6
- %link{rel: 'stylesheet', href: '/css/bootstrap.min.css'}
7
- %script{type: 'text/javascript', src:'/javascripts/jquery-3.3.1.min.js'}
8
- %script{type: 'text/javascript', src:'/js/bootstrap.min.js'}
5
+ %link{rel: 'shortcut icon', href: "#{base_url}/images/favicon.ico", type:'image/x-icon'}
6
+ %link{rel: 'stylesheet', href: "#{base_url}/css/bootstrap.min.css"}
7
+ %script{type: 'text/javascript', src:"#{base_url}/javascripts/jquery-3.3.1.min.js"}
8
+ %script{type: 'text/javascript', src:"#{base_url}/js/bootstrap.min.js"}
9
9
  = yield
@@ -1,16 +1,16 @@
1
1
  %body
2
- %link{rel: 'stylesheet', href: '/css/bootstrap.min.css'}
3
- %link{rel: 'stylesheet', href: '/stylesheets/index.css'}
4
- %link{rel: 'stylesheet', href: '/stylesheets/matrix.css'}
5
- %script{type: 'text/javascript', src:'/javascripts/jquery-3.3.1.min.js'}
6
- %script{type: 'text/javascript', src:'/javascripts/jquery.tablesorter.min.js'}
7
- %script{type: 'text/javascript', src:'/javascripts/matrix.js'}
8
- %script{type: 'text/javascript', src:'/javascripts/clipboard.js'}
9
- %script{type: 'text/javascript', src:'/js/bootstrap.min.js'}
2
+ %link{rel: 'stylesheet', href: "#{base_url}/css/bootstrap.min.css"}
3
+ %link{rel: 'stylesheet', href: "#{base_url}/stylesheets/index.css"}
4
+ %link{rel: 'stylesheet', href: "#{base_url}/stylesheets/matrix.css"}
5
+ %script{type: 'text/javascript', src: "#{base_url}/javascripts/jquery-3.3.1.min.js"}
6
+ %script{type: 'text/javascript', src: "#{base_url}/javascripts/jquery.tablesorter.min.js"}
7
+ %script{type: 'text/javascript', src: "#{base_url}/javascripts/matrix.js"}
8
+ %script{type: 'text/javascript', src: "#{base_url}/javascripts/clipboard.js"}
9
+ %script{type: 'text/javascript', src: "#{base_url}/js/bootstrap.min.js"}
10
10
 
11
11
  .container
12
12
  .navbar-right
13
- %a{href: '/'}
13
+ %a{href: base_url}
14
14
  Home
15
15
  %h1.page-header
16
16
  = title
@@ -23,7 +23,7 @@
23
23
  = escape_html(error)
24
24
 
25
25
 
26
- %form{action: '/matrix', onsubmit:'return onSubmit()'}
26
+ %form{action: "#{base_url}/matrix", onsubmit:'return onSubmit()'}
27
27
  - selectors.each_with_index do | selector, index |
28
28
  .selector
29
29
  %label{for: "pacticipant#{index}"}
@@ -1,3 +1,3 @@
1
1
  module PactBroker
2
- VERSION = '2.54.0'
2
+ VERSION = '2.55.0'
3
3
  end
@@ -40,12 +40,13 @@ module PactBroker
40
40
  def self.errors webhook, uuid = nil
41
41
  contract = PactBroker::Api::Contracts::WebhookContract.new(webhook)
42
42
  contract.validate(webhook.attributes)
43
- errors = contract.errors
43
+ messages = contract.errors.messages
44
44
 
45
45
  if uuid && !valid_uuid_format?(uuid)
46
- errors.add("uuid", message("errors.validation.invalid_webhook_uuid"))
46
+ messages["uuid"] = [message("errors.validation.invalid_webhook_uuid")]
47
47
  end
48
- errors
48
+
49
+ OpenStruct.new(messages: messages, empty?: messages.empty?, any?: messages.any?)
49
50
  end
50
51
 
51
52
  def self.create uuid, webhook, consumer, provider
@@ -46,7 +46,7 @@ Gem::Specification.new do |gem|
46
46
  gem.add_runtime_dependency 'httparty', '~> 0.14'
47
47
  gem.add_runtime_dependency 'json', '~> 2.3'
48
48
  gem.add_runtime_dependency 'roar', '~> 1.1'
49
- gem.add_runtime_dependency 'reform', '~> 2.2'
49
+ gem.add_runtime_dependency 'reform', '~> 2.3','>= 2.3.1'
50
50
  gem.add_runtime_dependency 'dry-validation', '~> 0.10.5'
51
51
  gem.add_runtime_dependency 'sequel', '~> 5.28'
52
52
  gem.add_runtime_dependency 'webmachine', '1.5.0'
@@ -74,7 +74,7 @@ function promptToDeleteResource(deletionUrl, confirmationText) {
74
74
  confirmDeleteResource(confirmationText, confirmed, cancelled);
75
75
  }
76
76
 
77
- function createWhereToNextConfirmationConfiguration(latestPactUrl) {
77
+ function createWhereToNextConfirmationConfiguration(latestPactUrl, indexUrl) {
78
78
  return {
79
79
  title: "Pact deleted",
80
80
  content: "Where to next?",
@@ -89,14 +89,14 @@ function createWhereToNextConfirmationConfiguration(latestPactUrl) {
89
89
  home: {
90
90
  text: "Home",
91
91
  action: function() {
92
- window.location.href = "/";
92
+ window.location.href = indexUrl;
93
93
  }
94
94
  }
95
95
  }
96
96
  };
97
97
  }
98
98
 
99
- function createAllPactsDeletedConfirmationConfiguration() {
99
+ function createAllPactsDeletedConfirmationConfiguration(indexUrl) {
100
100
  return {
101
101
  title: "Pact deleted",
102
102
  content: "All versions of this pact have now been deleted.",
@@ -104,7 +104,7 @@ function createAllPactsDeletedConfirmationConfiguration() {
104
104
  home: {
105
105
  text: "Home",
106
106
  action: function() {
107
- window.location.href = "/";
107
+ window.location.href = indexUrl;
108
108
  }
109
109
  }
110
110
  }
@@ -115,11 +115,12 @@ function handleDeletionSuccess(responseBody) {
115
115
  if (responseBody._links["pb:latest-pact-version"]) {
116
116
  $.confirm(
117
117
  createWhereToNextConfirmationConfiguration(
118
- responseBody._links["pb:latest-pact-version"].href
118
+ responseBody._links["pb:latest-pact-version"].href,
119
+ responseBody._links["index"].href
119
120
  )
120
121
  );
121
122
  } else {
122
- $.confirm(createAllPactsDeletedConfirmationConfiguration());
123
+ $.confirm(createAllPactsDeletedConfirmationConfiguration(responseBody._links["index"].href));
123
124
  }
124
125
  }
125
126
 
@@ -59,7 +59,7 @@ TestDataBuilder.new
59
59
  body: webhook_body.to_json)
60
60
  .set_now(Date.today - 101)
61
61
  .tap{ | it |
62
- 100.times do | i |
62
+ 2.times do | i |
63
63
  it.create_pact_with_verification("Foo", i.to_s, "Bar", i.to_s)
64
64
  .create_pact_with_verification("Bar", i.to_s, "Foo", i.to_s)
65
65
  .add_day
@@ -56,7 +56,7 @@ module PactBroker
56
56
  expect(subject).to include("<html>")
57
57
  expect(subject).to include("</html>")
58
58
  expect(subject).to include("<link rel='stylesheet'")
59
- expect(subject).to include("href='/stylesheets/github.css'")
59
+ expect(subject).to include("href='http://base/stylesheets/github.css'")
60
60
  expect(subject).to include('<pre><code')
61
61
  expect(subject).to include('&quot;method&quot;:')
62
62
  expect(subject).to match /<h\d>.*Some Consumer/
@@ -26,7 +26,7 @@
26
26
  <ul class="nav">
27
27
  <li><a href="#/" id="entryPointLink">Go To Entry Point</a></li>
28
28
  <li><a href="https://github.com/mikekelly/hal-browser">About The HAL Browser</a></li>
29
- <li><a href="/">Pact Broker Home</a></li> <!-- pact_broker -->
29
+ <li><a href="/" id="pactBrokerHomeLink">Pact Broker Home</a></li> <!-- pact_broker -->
30
30
  </ul>
31
31
  </div>
32
32
  </div>
@@ -251,10 +251,13 @@ Content-Type: application/json
251
251
  <script src="js/hal/views/documentation.js"></script>
252
252
 
253
253
  <script>
254
+ var baseUrl = window.location.href.split('/hal-browser/')[0]; //pact_broker
254
255
  var browser = new HAL.Browser({
255
256
  container: $('#browser'),
256
- entryPoint: '/'
257
+ entryPoint: baseUrl //pact_broker
257
258
  });
258
259
  Backbone.history.start();
260
+
261
+ $('#pactBrokerHomeLink').attr('href', baseUrl); //pact_broker
259
262
  </script>
260
263
  </body>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact_broker
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.54.0
4
+ version: 2.55.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bethany Skurrie
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-05-13 00:00:00.000000000 Z
13
+ date: 2020-05-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: httparty
@@ -60,14 +60,20 @@ dependencies:
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: '2.2'
63
+ version: '2.3'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 2.3.1
64
67
  type: :runtime
65
68
  prerelease: false
66
69
  version_requirements: !ruby/object:Gem::Requirement
67
70
  requirements:
68
71
  - - "~>"
69
72
  - !ruby/object:Gem::Version
70
- version: '2.2'
73
+ version: '2.3'
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 2.3.1
71
77
  - !ruby/object:Gem::Dependency
72
78
  name: dry-validation
73
79
  requirement: !ruby/object:Gem::Requirement