pact_broker 2.58.2 → 2.60.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 +4 -4
- data/.github/workflows/release_gem.yml +27 -7
- data/CHANGELOG.md +43 -0
- data/README.md +1 -1
- data/lib/pact_broker/api/contracts/verifiable_pacts_json_query_schema.rb +10 -3
- data/lib/pact_broker/api/decorators/version_decorator.rb +2 -0
- data/lib/pact_broker/api/renderers/html_pact_renderer.rb +26 -8
- data/lib/pact_broker/api/resources/all_webhooks.rb +9 -0
- data/lib/pact_broker/api/resources/badge.rb +4 -0
- data/lib/pact_broker/api/resources/can_i_deploy.rb +8 -0
- data/lib/pact_broker/api/resources/dashboard.rb +4 -0
- data/lib/pact_broker/api/resources/error_handler.rb +2 -4
- data/lib/pact_broker/api/resources/group.rb +8 -0
- data/lib/pact_broker/api/resources/index.rb +15 -8
- data/lib/pact_broker/api/resources/integration.rb +12 -0
- data/lib/pact_broker/api/resources/integrations.rb +9 -1
- data/lib/pact_broker/api/resources/label.rb +12 -5
- data/lib/pact_broker/api/resources/latest_pact.rb +6 -2
- data/lib/pact_broker/api/resources/latest_pacts.rb +9 -1
- data/lib/pact_broker/api/resources/latest_verifications_for_consumer_version.rb +8 -0
- data/lib/pact_broker/api/resources/pact.rb +5 -1
- data/lib/pact_broker/api/resources/pacticipant.rb +4 -0
- data/lib/pact_broker/api/resources/pacticipants.rb +14 -0
- data/lib/pact_broker/api/resources/previous_distinct_pact_version.rb +4 -1
- data/lib/pact_broker/api/resources/provider_pacts.rb +5 -1
- data/lib/pact_broker/api/resources/provider_pacts_for_verification.rb +3 -8
- data/lib/pact_broker/badges/service.rb +3 -2
- data/lib/pact_broker/configuration.rb +16 -4
- data/lib/pact_broker/doc/views/layouts/main.haml +1 -1
- data/lib/pact_broker/doc/views/provider-pacts-for-verification.markdown +78 -0
- data/lib/pact_broker/domain/pact.rb +9 -0
- data/lib/pact_broker/groups/service.rb +1 -1
- data/lib/pact_broker/index/service.rb +6 -0
- data/lib/pact_broker/matrix/deployment_status_summary.rb +1 -1
- data/lib/pact_broker/pacts/content.rb +30 -5
- data/lib/pact_broker/pacts/repository.rb +25 -31
- data/lib/pact_broker/pacts/selector.rb +8 -0
- data/lib/pact_broker/policies.rb +2 -2
- data/lib/pact_broker/test/test_data_builder.rb +4 -4
- data/lib/pact_broker/ui/controllers/clusters.rb +1 -1
- data/lib/pact_broker/ui/controllers/groups.rb +2 -2
- data/lib/pact_broker/ui/controllers/index.rb +1 -1
- data/lib/pact_broker/ui/controllers/matrix.rb +2 -2
- data/lib/pact_broker/ui/views/groups/show.html.erb +3 -3
- data/lib/pact_broker/ui/views/index/show-with-tags.haml +10 -10
- data/lib/pact_broker/ui/views/index/show.haml +6 -6
- data/lib/pact_broker/ui/views/layouts/main.haml +1 -1
- data/lib/pact_broker/ui/views/matrix/show.haml +4 -5
- data/lib/pact_broker/version.rb +1 -1
- data/lib/pact_broker/webhooks/job.rb +8 -2
- data/public/javascripts/pact.js +6 -2
- data/script/seed.rb +5 -7
- data/spec/features/get_provider_pacts_for_verification_spec.rb +0 -18
- data/spec/lib/pact_broker/api/contracts/verifiable_pacts_json_query_schema_spec.rb +23 -4
- data/spec/lib/pact_broker/api/decorators/version_decorator_spec.rb +4 -0
- data/spec/lib/pact_broker/api/renderers/html_pact_renderer_spec.rb +24 -6
- data/spec/lib/pact_broker/api/resources/error_handler_spec.rb +18 -1
- data/spec/lib/pact_broker/api/resources/provider_pacts_for_verification_spec.rb +8 -38
- data/spec/lib/pact_broker/badges/service_spec.rb +6 -6
- data/spec/lib/pact_broker/pacts/content_spec.rb +90 -0
- data/spec/lib/pact_broker/pacts/repository_find_for_verification_fallback_spec.rb +14 -0
- data/spec/lib/pact_broker/pacts/repository_find_for_verification_spec.rb +62 -0
- data/spec/lib/pact_broker/webhooks/job_spec.rb +19 -1
- data/spec/support/database_cleaner.rb +1 -5
- metadata +3 -5
- data/lib/pact_broker/api/contracts/verifiable_pacts_query_schema.rb +0 -36
- data/spec/lib/pact_broker/api/contracts/verifiable_pacts_query_schema_spec.rb +0 -97
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dbaaee53f1641458eb110582a96bf0be98d7078ef1fa681ffee934c6e8007347
|
|
4
|
+
data.tar.gz: 84a2f6e6785acc85cf7053b86a54574746cb06de917bd11a0dff23403046aff5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: de93223c0a1d52af6563bf31b2ae733c41b6cec65afb4a61be741d78f47cf18484ee2fa292c9660b8db09cb3a1a66c549decb145a0b7a036477a9ac73b70f8c6
|
|
7
|
+
data.tar.gz: 04d3a59551f4fe9f46af8b65cd6c0dc3326ac86a594298eb22d529e33f6a98e39cdf6f9c682bd69bd9bbb85f4f290fe3e2f706d71cfa766b61def28c0dbd7bfc
|
|
@@ -6,20 +6,40 @@ on:
|
|
|
6
6
|
- release-triggered
|
|
7
7
|
|
|
8
8
|
jobs:
|
|
9
|
-
|
|
9
|
+
release:
|
|
10
10
|
runs-on: ubuntu-latest
|
|
11
11
|
steps:
|
|
12
12
|
- uses: actions/checkout@v2
|
|
13
13
|
with:
|
|
14
14
|
fetch-depth: 0
|
|
15
|
+
# - name: 'Wait for status checks'
|
|
16
|
+
# id: wait-for-status-checks
|
|
17
|
+
# uses: "WyriHaximus/github-action-wait-for-status@v2"
|
|
18
|
+
# with:
|
|
19
|
+
# checkInterval: 15
|
|
20
|
+
# env:
|
|
21
|
+
# GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
|
15
22
|
- uses: pact-foundation/release-gem@v0.0.11
|
|
16
23
|
env:
|
|
17
24
|
GEM_HOST_API_KEY: '${{ secrets.RUBYGEMS_API_KEY }}'
|
|
18
25
|
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
|
|
19
26
|
INCREMENT: '${{ github.event.client_payload.increment }}'
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
notify-gem-released:
|
|
28
|
+
needs: release
|
|
29
|
+
strategy:
|
|
30
|
+
matrix:
|
|
31
|
+
repository: [pact-foundation/pact-broker-docker, DiUS/pact_broker-docker]
|
|
32
|
+
runs-on: ubuntu-latest
|
|
33
|
+
steps:
|
|
34
|
+
- name: Notify ${{ matrix.repository }} of gem release
|
|
35
|
+
uses: peter-evans/repository-dispatch@v1
|
|
36
|
+
with:
|
|
37
|
+
token: ${{ secrets.GHTOKENNOTIFYPBRELEASED }}
|
|
38
|
+
repository: ${{ matrix.repository }}
|
|
39
|
+
event-type: gem-released
|
|
40
|
+
client-payload: |
|
|
41
|
+
{
|
|
42
|
+
"name": "${{ needs.release.outputs.gem_name }}",
|
|
43
|
+
"version": "${{ needs.release.outputs.version }}",
|
|
44
|
+
"increment": "${{ needs.release.outputs.increment }}"
|
|
45
|
+
}
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,46 @@
|
|
|
1
|
+
<a name="v2.60.0"></a>
|
|
2
|
+
### v2.60.0 (2020-09-08)
|
|
3
|
+
|
|
4
|
+
#### Features
|
|
5
|
+
|
|
6
|
+
* **pacts for verification**
|
|
7
|
+
* add deprecation title to beta:provider-pacts-for-verification relation ([47a61f69](/../../commit/47a61f69))
|
|
8
|
+
* do not require environment variable feature toggle to enable feature ([7d0fe1ea](/../../commit/7d0fe1ea))
|
|
9
|
+
* allow consumer to be specified with fallback tags, and overall latest to be specified with or without a consumer ([2d52d173](/../../commit/2d52d173))
|
|
10
|
+
|
|
11
|
+
#### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* correctly handle new test results format when merging test results with pact contents ([b35ab71b](/../../commit/b35ab71b))
|
|
14
|
+
|
|
15
|
+
<a name="v2.59.2"></a>
|
|
16
|
+
### v2.59.2 (2020-08-06)
|
|
17
|
+
|
|
18
|
+
#### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* gracefully handle contracts without interactions or messages in deployment status warnings ([6c223e69](/../../commit/6c223e69))
|
|
21
|
+
* add missing info level log for business level errors ([80a895bf](/../../commit/80a895bf))
|
|
22
|
+
|
|
23
|
+
<a name="v2.59.1"></a>
|
|
24
|
+
### v2.59.1 (2020-08-04)
|
|
25
|
+
|
|
26
|
+
#### Bug Fixes
|
|
27
|
+
|
|
28
|
+
* fix error rendering relationships diagram when the number of index items is greater than one page ([93a19982](/../../commit/93a19982))
|
|
29
|
+
|
|
30
|
+
<a name="v2.59.0"></a>
|
|
31
|
+
### v2.59.0 (2020-07-30)
|
|
32
|
+
|
|
33
|
+
#### Features
|
|
34
|
+
|
|
35
|
+
* add timestamps to version resource ([818a0c2c](/../../commit/818a0c2c))
|
|
36
|
+
|
|
37
|
+
<a name="v2.58.3"></a>
|
|
38
|
+
### v2.58.3 (2020-07-25)
|
|
39
|
+
|
|
40
|
+
#### Bug Fixes
|
|
41
|
+
|
|
42
|
+
* correctly encode user entered data in attributes, Javascript, and HTML ([523980e2](/../../commit/523980e2))
|
|
43
|
+
|
|
1
44
|
<a name="v2.58.2"></a>
|
|
2
45
|
### v2.58.2 (2020-07-17)
|
|
3
46
|
|
data/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](https://codeclimate.com/github/pact-foundation/pact_broker)
|
|
7
7
|
[](https://codeclimate.com/github/pact-foundation/pact_broker/coverage)
|
|
8
8
|
|
|
9
|
-
The Pact Broker is an application for sharing
|
|
9
|
+
The Pact Broker is an application for sharing of consumer driven contracts and verification results. It is optimised for use with "pacts" (contracts created by the [Pact][pact-docs] framework), but can be used for any type of contract that can be serialized to JSON.
|
|
10
10
|
|
|
11
11
|
<br/>
|
|
12
12
|
<a href="https:/pactflow.io/?utm_source=github&utm_campaign=pact_broker_intro"><img src="docs/images/Pactflow logo - black small.png"></a>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'dry-validation'
|
|
2
2
|
require 'pact_broker/hash_refinements'
|
|
3
|
+
require 'pact_broker/string_refinements'
|
|
3
4
|
require 'pact_broker/api/contracts/dry_validation_workarounds'
|
|
4
5
|
require 'pact_broker/api/contracts/dry_validation_predicates'
|
|
5
6
|
|
|
@@ -9,6 +10,7 @@ module PactBroker
|
|
|
9
10
|
class VerifiablePactsJSONQuerySchema
|
|
10
11
|
extend DryValidationWorkarounds
|
|
11
12
|
using PactBroker::HashRefinements
|
|
13
|
+
using PactBroker::StringRefinements
|
|
12
14
|
|
|
13
15
|
SCHEMA = Dry::Validation.Schema do
|
|
14
16
|
configure do
|
|
@@ -24,7 +26,7 @@ module PactBroker
|
|
|
24
26
|
# end
|
|
25
27
|
# end
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
optional(:tag).filled(:str?)
|
|
28
30
|
optional(:latest).filled(included_in?: [true, false])
|
|
29
31
|
optional(:fallbackTag).filled(:str?)
|
|
30
32
|
optional(:consumer).filled(:str?, :not_blank?)
|
|
@@ -54,8 +56,9 @@ module PactBroker
|
|
|
54
56
|
errors << "fallbackTag can only be set if latest is true (at index #{index})"
|
|
55
57
|
end
|
|
56
58
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
|
|
60
|
+
if not_provided?(selector[:tag]) && selector[:latest] != true
|
|
61
|
+
errors << "latest must be true, or a tag must be provided (at index #{index})"
|
|
59
62
|
end
|
|
60
63
|
end
|
|
61
64
|
if errors.any?
|
|
@@ -64,6 +67,10 @@ module PactBroker
|
|
|
64
67
|
end
|
|
65
68
|
end
|
|
66
69
|
end
|
|
70
|
+
|
|
71
|
+
def self.not_provided?(value)
|
|
72
|
+
value.nil? || value.blank?
|
|
73
|
+
end
|
|
67
74
|
end
|
|
68
75
|
end
|
|
69
76
|
end
|
|
@@ -4,6 +4,7 @@ require 'redcarpet'
|
|
|
4
4
|
require 'pact/doc/markdown/consumer_contract_renderer'
|
|
5
5
|
require 'pact_broker/api/pact_broker_urls'
|
|
6
6
|
require 'pact_broker/logging'
|
|
7
|
+
require 'rack'
|
|
7
8
|
|
|
8
9
|
module PactBroker
|
|
9
10
|
module Api
|
|
@@ -58,8 +59,8 @@ module PactBroker
|
|
|
58
59
|
#{badge_list_item}
|
|
59
60
|
#{badge_markdown_item}
|
|
60
61
|
<li>
|
|
61
|
-
<span class='name'>#{
|
|
62
|
-
<span class='value'>#{
|
|
62
|
+
<span class='name'>#{consumer_name} version:</span>
|
|
63
|
+
<span class='value'>#{consumer_version_number}#{tags}</span>
|
|
63
64
|
</li>
|
|
64
65
|
<li>
|
|
65
66
|
<span class='name' title='#{published_date}'>Date published:</span>
|
|
@@ -75,9 +76,9 @@ module PactBroker
|
|
|
75
76
|
<a href=\"#{base_url}/\">Home</a>
|
|
76
77
|
</li>
|
|
77
78
|
<li>
|
|
78
|
-
<span data-consumer-name=\"#{
|
|
79
|
-
data-provider-name=\"#{
|
|
80
|
-
data-consumer-version-number=\"#{
|
|
79
|
+
<span data-consumer-name=\"#{consumer_name}\"
|
|
80
|
+
data-provider-name=\"#{provider_name}\"
|
|
81
|
+
data-consumer-version-number=\"#{consumer_version_number}\"
|
|
81
82
|
data-pact-url=\"#{pact_url}\"
|
|
82
83
|
class='more-options glyphicon glyphicon-option-horizontal'
|
|
83
84
|
aria-hidden='true'></span>
|
|
@@ -88,7 +89,7 @@ module PactBroker
|
|
|
88
89
|
|
|
89
90
|
def badge_list_item
|
|
90
91
|
"<li class='pact-badge'>
|
|
91
|
-
<img src
|
|
92
|
+
<img src=\"#{badge_url}\"/>
|
|
92
93
|
</li>
|
|
93
94
|
"
|
|
94
95
|
end
|
|
@@ -117,7 +118,19 @@ module PactBroker
|
|
|
117
118
|
end
|
|
118
119
|
|
|
119
120
|
def title
|
|
120
|
-
"Pact between #{
|
|
121
|
+
"Pact between #{consumer_name} and #{provider_name}"
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def consumer_version_number
|
|
125
|
+
h(@pact.consumer_version_number)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def consumer_name
|
|
129
|
+
h(@pact.consumer.name)
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def provider_name
|
|
133
|
+
h(@pact.provider.name)
|
|
121
134
|
end
|
|
122
135
|
|
|
123
136
|
def published_date
|
|
@@ -154,7 +167,8 @@ module PactBroker
|
|
|
154
167
|
|
|
155
168
|
def tags
|
|
156
169
|
if @pact.consumer_version_tag_names.any?
|
|
157
|
-
|
|
170
|
+
tag_names = @pact.consumer_version_tag_names.collect{ |t| h(t) }.join(", ")
|
|
171
|
+
" (#{tag_names})"
|
|
158
172
|
else
|
|
159
173
|
""
|
|
160
174
|
end
|
|
@@ -179,6 +193,10 @@ module PactBroker
|
|
|
179
193
|
logger.info "Could not parse the following content to a Pact due to #{e.class} #{e.message}, showing raw content instead: #{@json_content}"
|
|
180
194
|
raise NotAPactError
|
|
181
195
|
end
|
|
196
|
+
|
|
197
|
+
def h string
|
|
198
|
+
Rack::Utils.escape_html(string)
|
|
199
|
+
end
|
|
182
200
|
end
|
|
183
201
|
end
|
|
184
202
|
end
|
|
@@ -45,6 +45,15 @@ module PactBroker
|
|
|
45
45
|
response.body = Decorators::WebhookDecorator.new(saved_webhook).to_json(decorator_options)
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
+
def policy_name
|
|
49
|
+
:'webhooks::webooks'
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def policy_record
|
|
53
|
+
# Note: consumer and provider not yet set on new webhook
|
|
54
|
+
request.post? ? webhook : webhooks
|
|
55
|
+
end
|
|
56
|
+
|
|
48
57
|
private
|
|
49
58
|
|
|
50
59
|
def validation_errors? webhook
|
|
@@ -5,11 +5,8 @@ module PactBroker
|
|
|
5
5
|
module Api
|
|
6
6
|
module Resources
|
|
7
7
|
class ErrorHandler
|
|
8
|
-
|
|
9
8
|
include PactBroker::Logging
|
|
10
9
|
|
|
11
|
-
WARNING_ERROR_CLASSES = [Sequel::ForeignKeyConstraintViolation]
|
|
12
|
-
|
|
13
10
|
def self.call e, request, response
|
|
14
11
|
error_reference = generate_error_reference
|
|
15
12
|
if log_as_warning?(e)
|
|
@@ -17,6 +14,7 @@ module PactBroker
|
|
|
17
14
|
elsif reportable?(e)
|
|
18
15
|
log_error(e, "Error reference #{error_reference}")
|
|
19
16
|
report(e, error_reference, request)
|
|
17
|
+
else
|
|
20
18
|
logger.info("Error reference #{error_reference}", e)
|
|
21
19
|
end
|
|
22
20
|
response.body = response_body_hash(e, error_reference).to_json
|
|
@@ -31,7 +29,7 @@ module PactBroker
|
|
|
31
29
|
end
|
|
32
30
|
|
|
33
31
|
def self.log_as_warning?(e)
|
|
34
|
-
|
|
32
|
+
PactBroker.configuration.warning_error_classes.any? { |clazz| e.is_a?(clazz) }
|
|
35
33
|
end
|
|
36
34
|
|
|
37
35
|
def self.display_message(e, error_reference)
|
|
@@ -121,6 +121,17 @@ module PactBroker
|
|
|
121
121
|
title: "Determine if an application can be safely deployed to an environment identified by the given tag",
|
|
122
122
|
templated: true
|
|
123
123
|
},
|
|
124
|
+
'pb:provider-pacts-for-verification' => {
|
|
125
|
+
href: base_url + '/pacts/provider/{provider}/for-verification',
|
|
126
|
+
title: 'Pact versions to be verified for the specified provider',
|
|
127
|
+
templated: true
|
|
128
|
+
},
|
|
129
|
+
'beta:provider-pacts-for-verification' => {
|
|
130
|
+
name: 'beta',
|
|
131
|
+
href: base_url + '/doc/{rel}?context=index',
|
|
132
|
+
title: 'DEPRECATED - please use pb:provider-pacts-for-verification',
|
|
133
|
+
templated: true
|
|
134
|
+
},
|
|
124
135
|
'curies' =>
|
|
125
136
|
[{
|
|
126
137
|
name: 'pb',
|
|
@@ -133,16 +144,12 @@ module PactBroker
|
|
|
133
144
|
}]
|
|
134
145
|
}
|
|
135
146
|
|
|
136
|
-
if PactBroker.feature_enabled?(:pacts_for_verification)
|
|
137
|
-
links_hash['beta:provider-pacts-for-verification'] = {
|
|
138
|
-
href: base_url + '/pacts/provider/{provider}/for-verification',
|
|
139
|
-
title: 'Pact versions to be verified for the specified provider',
|
|
140
|
-
templated: true
|
|
141
|
-
}
|
|
142
|
-
end
|
|
143
|
-
|
|
144
147
|
links_hash
|
|
145
148
|
end
|
|
149
|
+
|
|
150
|
+
def policy_name
|
|
151
|
+
:'index::index'
|
|
152
|
+
end
|
|
146
153
|
end
|
|
147
154
|
end
|
|
148
155
|
end
|
|
@@ -16,6 +16,18 @@ module PactBroker
|
|
|
16
16
|
integration_service.delete(consumer_name, provider_name)
|
|
17
17
|
true
|
|
18
18
|
end
|
|
19
|
+
|
|
20
|
+
def policy_name
|
|
21
|
+
:'integrations::integration'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def policy_resource
|
|
25
|
+
integration
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def integration
|
|
29
|
+
@integration ||= OpenStruct.new(consumer: consumer, provider: provider)
|
|
30
|
+
end
|
|
19
31
|
end
|
|
20
32
|
end
|
|
21
33
|
end
|
|
@@ -26,13 +26,21 @@ module PactBroker
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def integrations
|
|
29
|
-
integration_service.find_all
|
|
29
|
+
@integrations ||= integration_service.find_all
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def delete_resource
|
|
33
33
|
integration_service.delete_all
|
|
34
34
|
true
|
|
35
35
|
end
|
|
36
|
+
|
|
37
|
+
def policy_name
|
|
38
|
+
:'integrations::integrations'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def policy_resource
|
|
42
|
+
integrations
|
|
43
|
+
end
|
|
36
44
|
end
|
|
37
45
|
end
|
|
38
46
|
end
|
|
@@ -19,7 +19,7 @@ module PactBroker
|
|
|
19
19
|
|
|
20
20
|
def from_json
|
|
21
21
|
unless label
|
|
22
|
-
@label = label_service.create
|
|
22
|
+
@label = label_service.create(identifier_from_path)
|
|
23
23
|
# Make it return a 201 by setting the Location header
|
|
24
24
|
response.headers["Location"] = label_url(label, base_url)
|
|
25
25
|
end
|
|
@@ -27,26 +27,33 @@ module PactBroker
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def resource_exists?
|
|
30
|
-
!!
|
|
30
|
+
!!label
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def resource_object
|
|
34
34
|
label
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
+
def policy_name
|
|
38
|
+
:'labels::label'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def policy_record
|
|
42
|
+
label
|
|
43
|
+
end
|
|
44
|
+
|
|
37
45
|
def to_json
|
|
38
46
|
PactBroker::Api::Decorators::LabelDecorator.new(label).to_json(decorator_options)
|
|
39
47
|
end
|
|
40
48
|
|
|
41
49
|
def label
|
|
42
|
-
@label ||= label_service.find
|
|
50
|
+
@label ||= label_service.find(identifier_from_path)
|
|
43
51
|
end
|
|
44
52
|
|
|
45
53
|
def delete_resource
|
|
46
|
-
label_service.delete
|
|
54
|
+
label_service.delete(identifier_from_path)
|
|
47
55
|
true
|
|
48
56
|
end
|
|
49
|
-
|
|
50
57
|
end
|
|
51
58
|
end
|
|
52
59
|
|