pact_broker 0.0.9 → 0.0.10
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.
- data/CHANGELOG.md +14 -0
- data/Gemfile.lock +11 -9
- data/lib/pact_broker/api/decorators/base_decorator.rb +1 -1
- data/lib/pact_broker/api/decorators/latest_pact_decorator.rb +24 -0
- data/lib/pact_broker/api/decorators/pact_collection_decorator.rb +3 -3
- data/lib/pact_broker/api/decorators/pact_decorator.rb +1 -1
- data/lib/pact_broker/api/decorators/pact_pacticipant_decorator.rb +1 -1
- data/lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb +1 -1
- data/lib/pact_broker/api/decorators/tag_decorator.rb +19 -0
- data/lib/pact_broker/api/decorators.rb +2 -1
- data/lib/pact_broker/api/{decorators/pact_broker_urls.rb → pact_broker_urls.rb} +14 -1
- data/lib/pact_broker/api/resources/base_resource.rb +14 -1
- data/lib/pact_broker/api/resources/latest_pacts.rb +1 -1
- data/lib/pact_broker/api/resources/pact.rb +3 -9
- data/lib/pact_broker/api/resources/pacticipant.rb +8 -21
- data/lib/pact_broker/api/resources/pacticipants.rb +1 -1
- data/lib/pact_broker/api/resources/tag.rb +44 -0
- data/lib/pact_broker/api.rb +2 -0
- data/lib/pact_broker/logging.rb +4 -0
- data/lib/pact_broker/models/tag.rb +5 -0
- data/lib/pact_broker/repositories/tag_repository.rb +25 -0
- data/lib/pact_broker/repositories/version_repository.rb +8 -0
- data/lib/pact_broker/repositories.rb +5 -0
- data/lib/pact_broker/services/pacticipant_service.rb +9 -9
- data/lib/pact_broker/services/tag_service.rb +25 -0
- data/lib/pact_broker/services.rb +5 -0
- data/lib/pact_broker/version.rb +1 -1
- data/pact_broker.gemspec +1 -1
- data/spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb +2 -2
- data/spec/lib/pact_broker/api/resources/tag_spec.rb +118 -0
- data/spec/lib/pact_broker/repositories/tag_repository_spec.rb +53 -0
- data/spec/lib/pact_broker/repositories/version_repository_spec.rb +38 -0
- data/spec/lib/pact_broker/services/tag_service_spec.rb +31 -0
- data/spec/service_consumers/pact_helper.rb +1 -0
- data/spec/service_consumers/provider_states_for_pact_broker_client.rb +9 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/support/provider_state_builder.rb +25 -0
- metadata +22 -9
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@ Do this to generate your change history
|
|
|
2
2
|
|
|
3
3
|
$ git log --date=relative --pretty=format:' * %h - %s (%an, %ad)' 'package/pact-broker-0.0.PRODVERSION'..'package/pact-broker-0.0.NEWVERSION'
|
|
4
4
|
|
|
5
|
+
#### 0.0.10 (2014-03-24)
|
|
6
|
+
|
|
7
|
+
* 7aee2ae - Implemented version tagging (Beth, 2 days ago)
|
|
8
|
+
* cc78f92 - Added 'latest' pact url to pact representation in the 'latest pacts' response (Beth, 2 days ago)
|
|
9
|
+
|
|
10
|
+
#### 0.0.9 (2014-02-27)
|
|
11
|
+
|
|
12
|
+
* d07f4b7 - Using default gem publish tasks (Beth, 4 weeks ago)
|
|
13
|
+
* d60b7ee - Comment (Beth, 7 weeks ago)
|
|
14
|
+
* 836347c - Using local pacts (Beth, 7 weeks ago)
|
|
15
|
+
* a2cb2bb - Fixed bug querying mysql DB, rather than sqlite (Beth, 7 weeks ago)
|
|
16
|
+
* 9d5f83b - Using the to_json options to pass in the base_url instead of the nasty hack. (Beth, 4 months ago)
|
|
17
|
+
* adb6148 - Changed 'last' to 'latest' (Beth, 4 months ago)
|
|
18
|
+
|
|
5
19
|
#### 0.0.8 (2013-11-18)
|
|
6
20
|
|
|
7
21
|
* 6022baa - Changed name to title in list pacticipants response (Beth, 7 hours ago)
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
pact_broker (0.0.
|
|
4
|
+
pact_broker (0.0.10)
|
|
5
5
|
httparty
|
|
6
6
|
json
|
|
7
7
|
roar
|
|
@@ -20,6 +20,7 @@ GEM
|
|
|
20
20
|
ci_reporter (1.9.0)
|
|
21
21
|
builder (>= 2.1.2)
|
|
22
22
|
coderay (1.0.9)
|
|
23
|
+
colored (1.2)
|
|
23
24
|
columnize (0.3.6)
|
|
24
25
|
debugger (1.6.2)
|
|
25
26
|
columnize (>= 0.3.1)
|
|
@@ -30,7 +31,7 @@ GEM
|
|
|
30
31
|
diff-lcs (1.2.5)
|
|
31
32
|
fakefs (0.4.3)
|
|
32
33
|
find_a_port (1.0.1)
|
|
33
|
-
httparty (0.
|
|
34
|
+
httparty (0.13.0)
|
|
34
35
|
json (~> 1.8)
|
|
35
36
|
multi_xml (>= 0.5.2)
|
|
36
37
|
i18n (0.6.9)
|
|
@@ -41,8 +42,9 @@ GEM
|
|
|
41
42
|
multi_xml (0.5.5)
|
|
42
43
|
nokogiri (1.6.1)
|
|
43
44
|
mini_portile (~> 0.5.0)
|
|
44
|
-
pact (1.0.
|
|
45
|
+
pact (1.1.0.rc1)
|
|
45
46
|
awesome_print (~> 1.1)
|
|
47
|
+
colored
|
|
46
48
|
find_a_port (~> 1.0.1)
|
|
47
49
|
json
|
|
48
50
|
rack-test (~> 0.6.2)
|
|
@@ -59,11 +61,11 @@ GEM
|
|
|
59
61
|
rack (>= 1.0)
|
|
60
62
|
rake (10.0.4)
|
|
61
63
|
randexp (0.1.7)
|
|
62
|
-
representable (1.
|
|
64
|
+
representable (1.7.7)
|
|
63
65
|
multi_json
|
|
64
66
|
nokogiri
|
|
65
|
-
roar (0.12.
|
|
66
|
-
representable (
|
|
67
|
+
roar (0.12.4)
|
|
68
|
+
representable (>= 1.6.0)
|
|
67
69
|
rspec (2.14.1)
|
|
68
70
|
rspec-core (~> 2.14.0)
|
|
69
71
|
rspec-expectations (~> 2.14.0)
|
|
@@ -74,7 +76,7 @@ GEM
|
|
|
74
76
|
rspec-fire (1.2.0)
|
|
75
77
|
rspec (~> 2.11)
|
|
76
78
|
rspec-mocks (2.14.4)
|
|
77
|
-
sequel (4.
|
|
79
|
+
sequel (4.8.0)
|
|
78
80
|
shotgun (0.9)
|
|
79
81
|
rack (>= 1.0)
|
|
80
82
|
simplecov (0.7.1)
|
|
@@ -82,7 +84,7 @@ GEM
|
|
|
82
84
|
simplecov-html (~> 0.7.1)
|
|
83
85
|
simplecov-html (0.7.1)
|
|
84
86
|
slop (3.4.6)
|
|
85
|
-
sqlite3 (1.3.
|
|
87
|
+
sqlite3 (1.3.9)
|
|
86
88
|
thor (0.18.1)
|
|
87
89
|
versionomy (0.4.4)
|
|
88
90
|
blockenspiel (>= 0.4.5)
|
|
@@ -99,7 +101,7 @@ DEPENDENCIES
|
|
|
99
101
|
ci_reporter
|
|
100
102
|
debugger
|
|
101
103
|
fakefs (~> 0.4)
|
|
102
|
-
pact
|
|
104
|
+
pact (= 1.1.0.rc1)
|
|
103
105
|
pact_broker!
|
|
104
106
|
pry
|
|
105
107
|
rake (~> 10.0.3)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require_relative 'pact_decorator'
|
|
2
|
+
|
|
3
|
+
module PactBroker
|
|
4
|
+
|
|
5
|
+
module Api
|
|
6
|
+
|
|
7
|
+
module Decorators
|
|
8
|
+
|
|
9
|
+
class LatestPactDecorator < PactDecorator
|
|
10
|
+
|
|
11
|
+
links :self do | options |
|
|
12
|
+
[
|
|
13
|
+
{
|
|
14
|
+
href: latest_pact_url(options[:base_url], represented)
|
|
15
|
+
},{
|
|
16
|
+
href: pact_url(options[:base_url], represented)
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require_relative 'base_decorator'
|
|
2
2
|
require_relative 'version_decorator'
|
|
3
|
-
require_relative '
|
|
3
|
+
require_relative 'latest_pact_decorator'
|
|
4
4
|
require_relative 'representable_pact'
|
|
5
5
|
|
|
6
6
|
module PactBroker
|
|
@@ -9,11 +9,11 @@ module PactBroker
|
|
|
9
9
|
|
|
10
10
|
module Decorators
|
|
11
11
|
|
|
12
|
-
class
|
|
12
|
+
class PactCollectionDecorator < BaseDecorator
|
|
13
13
|
include Roar::Representer::JSON::HAL
|
|
14
14
|
include PactBroker::Api::PactBrokerUrls
|
|
15
15
|
|
|
16
|
-
collection :pacts, decorator_scope: true, :class => PactBroker::Models::Pact, :extend => PactBroker::Api::Decorators::
|
|
16
|
+
collection :pacts, decorator_scope: true, :class => PactBroker::Models::Pact, :extend => PactBroker::Api::Decorators::LatestPactDecorator
|
|
17
17
|
|
|
18
18
|
def pacts
|
|
19
19
|
represented.collect{ | pact | create_representable_pact(pact) }
|
|
@@ -7,7 +7,7 @@ module PactBroker
|
|
|
7
7
|
|
|
8
8
|
module Decorators
|
|
9
9
|
|
|
10
|
-
class
|
|
10
|
+
class PactDecorator < BaseDecorator
|
|
11
11
|
|
|
12
12
|
property :consumer, :extend => PactBroker::Api::Decorators::PactPacticipantRepresenter, :embedded => true
|
|
13
13
|
property :provider, :extend => PactBroker::Api::Decorators::PactPacticipantRepresenter, :embedded => true
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require_relative 'base_decorator'
|
|
2
|
+
require_relative 'pact_pacticipant_decorator'
|
|
3
|
+
|
|
4
|
+
module PactBroker
|
|
5
|
+
|
|
6
|
+
module Api
|
|
7
|
+
|
|
8
|
+
module Decorators
|
|
9
|
+
|
|
10
|
+
class TagDecorator < BaseDecorator
|
|
11
|
+
|
|
12
|
+
link :self do | options |
|
|
13
|
+
tag_url(options[:base_url], represented)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -3,4 +3,5 @@ require 'pact_broker/api/decorators/pacticipant_collection_decorator'
|
|
|
3
3
|
require 'pact_broker/api/decorators/version_decorator'
|
|
4
4
|
require 'pact_broker/api/decorators/pact_collection_decorator'
|
|
5
5
|
require 'pact_broker/api/decorators/pact_pacticipant_decorator'
|
|
6
|
-
require 'pact_broker/api/decorators/pact_decorator'
|
|
6
|
+
require 'pact_broker/api/decorators/pact_decorator'
|
|
7
|
+
require 'pact_broker/api/decorators/tag_decorator'
|
|
@@ -23,7 +23,8 @@ module PactBroker
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def pact_url base_url, pact
|
|
26
|
-
|
|
26
|
+
representable_pact = representable_pact(pact)
|
|
27
|
+
"#{pactigration_base_url(base_url, representable_pact)}/version/#{representable_pact.consumer.version.number}"
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
def latest_pact_url base_url, pact
|
|
@@ -34,8 +35,20 @@ module PactBroker
|
|
|
34
35
|
"#{base_url}/pacts/latest"
|
|
35
36
|
end
|
|
36
37
|
|
|
38
|
+
def tags_url base_url, version
|
|
39
|
+
"#{version_url(base_url, version)}/tags"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def tag_url base_url, tag
|
|
43
|
+
"#{tags_url(base_url, tag.version)}/#{tag.name}"
|
|
44
|
+
end
|
|
45
|
+
|
|
37
46
|
private
|
|
38
47
|
|
|
48
|
+
def representable_pact pact
|
|
49
|
+
Decorators::RepresentablePact === pact ? pact : Decorators::RepresentablePact.new(pact)
|
|
50
|
+
end
|
|
51
|
+
|
|
39
52
|
def pactigration_base_url base_url, pact
|
|
40
53
|
"#{base_url}/pact/provider/#{url_encode(pact.provider.name)}/consumer/#{url_encode(pact.consumer.name)}"
|
|
41
54
|
end
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
require 'webmachine'
|
|
2
2
|
require 'pact_broker/services'
|
|
3
3
|
require 'pact_broker/api/decorators'
|
|
4
|
+
require 'pact_broker/logging'
|
|
5
|
+
require 'pact_broker/api/pact_broker_urls'
|
|
4
6
|
|
|
5
7
|
module PactBroker::Api
|
|
6
8
|
|
|
7
9
|
module Resources
|
|
8
10
|
|
|
11
|
+
|
|
9
12
|
class ErrorHandler
|
|
13
|
+
|
|
14
|
+
include PactBroker::Logging
|
|
15
|
+
|
|
10
16
|
def self.handle_exception e, response
|
|
17
|
+
logger.error e
|
|
18
|
+
logger.error e.backtrace
|
|
11
19
|
response.body = {:message => e.message, :backtrace => e.backtrace }.to_json
|
|
12
20
|
response.code = 500
|
|
13
21
|
end
|
|
@@ -16,6 +24,7 @@ module PactBroker::Api
|
|
|
16
24
|
class BaseResource < Webmachine::Resource
|
|
17
25
|
|
|
18
26
|
include PactBroker::Services
|
|
27
|
+
include PactBroker::Api::PactBrokerUrls
|
|
19
28
|
|
|
20
29
|
def identifier_from_path
|
|
21
30
|
request.path_info.each_with_object({}) do | pair, hash|
|
|
@@ -23,13 +32,17 @@ module PactBroker::Api
|
|
|
23
32
|
end
|
|
24
33
|
end
|
|
25
34
|
|
|
26
|
-
def
|
|
35
|
+
def resource_url
|
|
27
36
|
request.uri.to_s.gsub(/#{request.uri.path}$/,'')
|
|
28
37
|
end
|
|
29
38
|
|
|
30
39
|
def handle_exception e
|
|
31
40
|
PactBroker::Api::Resources::ErrorHandler.handle_exception(e, response)
|
|
32
41
|
end
|
|
42
|
+
|
|
43
|
+
def params
|
|
44
|
+
JSON.parse(request.body.to_s, symbolize_names: true)
|
|
45
|
+
end
|
|
33
46
|
end
|
|
34
47
|
end
|
|
35
48
|
end
|
|
@@ -19,7 +19,7 @@ module PactBroker::Api
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def generate_json pacts
|
|
22
|
-
PactBroker::Api::Decorators::
|
|
22
|
+
PactBroker::Api::Decorators::PactCollectionDecorator.new(pacts).to_json(base_url: resource_url)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
end
|
|
@@ -25,15 +25,9 @@ module PactBroker::Api
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def from_json
|
|
28
|
-
pact, created = pact_service.create_or_update_pact(identifier_from_path.merge(:json_content => pact_content))
|
|
29
|
-
response.
|
|
30
|
-
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def finish_request
|
|
34
|
-
if @manual_response_code
|
|
35
|
-
response.code = @manual_response_code
|
|
36
|
-
end
|
|
28
|
+
@pact, created = pact_service.create_or_update_pact(identifier_from_path.merge(:json_content => pact_content))
|
|
29
|
+
response.headers["Location"] = pact_url(resource_url, @pact) if created
|
|
30
|
+
response.body = to_json
|
|
37
31
|
end
|
|
38
32
|
|
|
39
33
|
def to_json
|
|
@@ -31,12 +31,13 @@ module PactBroker::Api
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def from_json
|
|
34
|
-
pacticipant
|
|
35
|
-
name: identifier_from_path[:name]
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
if @pacticipant
|
|
35
|
+
@pacticipant = pacticipant_service.update params.merge(name: identifier_from_path[:name])
|
|
36
|
+
else
|
|
37
|
+
@pacticipant = pacticipant_service.create params.merge(name: identifier_from_path[:name])
|
|
38
|
+
response.headers["Location"] = pacticipant_url(resource_url, @pacticipant)
|
|
39
|
+
end
|
|
40
|
+
response.body = to_json
|
|
40
41
|
end
|
|
41
42
|
|
|
42
43
|
def resource_exists?
|
|
@@ -44,22 +45,8 @@ module PactBroker::Api
|
|
|
44
45
|
@pacticipant != nil
|
|
45
46
|
end
|
|
46
47
|
|
|
47
|
-
def finish_request
|
|
48
|
-
if @manual_response_code
|
|
49
|
-
response.code = @manual_response_code
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
48
|
def to_json
|
|
54
|
-
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def generate_json pacticipant
|
|
58
|
-
PactBroker::Api::Decorators::PacticipantRepresenter.new(pacticipant).to_json(base_url: request_base_url)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def params
|
|
62
|
-
JSON.parse(request.body.to_s)
|
|
49
|
+
PactBroker::Api::Decorators::PacticipantRepresenter.new(@pacticipant).to_json(base_url: resource_url)
|
|
63
50
|
end
|
|
64
51
|
|
|
65
52
|
end
|
|
@@ -19,7 +19,7 @@ module PactBroker::Api
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def generate_json pacticipants
|
|
22
|
-
PactBroker::Api::Decorators::PacticipantCollectionRepresenter.new(pacticipants).to_json(base_url:
|
|
22
|
+
PactBroker::Api::Decorators::PacticipantCollectionRepresenter.new(pacticipants).to_json(base_url: resource_url)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'pact_broker/api/resources/base_resource'
|
|
2
|
+
|
|
3
|
+
module PactBroker::Api
|
|
4
|
+
|
|
5
|
+
module Resources
|
|
6
|
+
|
|
7
|
+
class Tag < BaseResource
|
|
8
|
+
|
|
9
|
+
def content_types_provided
|
|
10
|
+
[["application/hal+json", :to_json]]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def content_types_accepted
|
|
14
|
+
[["application/json", :from_json]]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def allowed_methods
|
|
18
|
+
["GET","PUT"]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def from_json
|
|
22
|
+
unless @tag
|
|
23
|
+
@tag = tag_service.create identifier_from_path
|
|
24
|
+
response.headers["Location"] = tag_url(resource_url, @tag)
|
|
25
|
+
end
|
|
26
|
+
response.body = generate_json @tag
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def resource_exists?
|
|
30
|
+
@tag = tag_service.find identifier_from_path
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def to_json
|
|
34
|
+
generate_json(@tag)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def generate_json tag
|
|
38
|
+
PactBroker::Api::Decorators::TagDecorator.new(tag).to_json(base_url: resource_url)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
data/lib/pact_broker/api.rb
CHANGED
|
@@ -3,6 +3,7 @@ require 'pact_broker/api/resources/latest_pact'
|
|
|
3
3
|
require 'pact_broker/api/resources/latest_pacts'
|
|
4
4
|
require 'pact_broker/api/resources/pacticipant'
|
|
5
5
|
require 'pact_broker/api/resources/pacticipants'
|
|
6
|
+
require 'pact_broker/api/resources/tag'
|
|
6
7
|
require 'pact_broker/api/resources/index'
|
|
7
8
|
|
|
8
9
|
require 'webmachine/adapters/rack'
|
|
@@ -18,6 +19,7 @@ module PactBroker
|
|
|
18
19
|
add ['pacts', 'latest'], Api::Resources::LatestPacts
|
|
19
20
|
add ['pacticipants'], Api::Resources::Pacticipants
|
|
20
21
|
add ['pacticipants', :name], Api::Resources::Pacticipant
|
|
22
|
+
add ['pacticipants', :pacticipant_name, 'versions', :pacticipant_version_number, 'tags', :tag_name], Api::Resources::Tag
|
|
21
23
|
add [], Api::Resources::Index
|
|
22
24
|
end
|
|
23
25
|
end
|
data/lib/pact_broker/logging.rb
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'pact_broker/models/tag'
|
|
2
|
+
|
|
3
|
+
module PactBroker
|
|
4
|
+
module Repositories
|
|
5
|
+
class TagRepository
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def create args
|
|
9
|
+
Models::Tag.new(name: args.fetch(:name), version: args.fetch(:version)).save
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def find args
|
|
13
|
+
PactBroker::Models::Tag
|
|
14
|
+
.select(:tags__name, :tags__version_id)
|
|
15
|
+
.join(:versions, {id: :version_id})
|
|
16
|
+
.join(:pacticipants, {pacticipants__id: :versions__pacticipant_id})
|
|
17
|
+
.where(:tags__name => args.fetch(:tag_name))
|
|
18
|
+
.where(:versions__number => args.fetch(:pacticipant_version_number))
|
|
19
|
+
.where(:pacticipants__name => args.fetch(:pacticipant_name))
|
|
20
|
+
.single_record
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -9,6 +9,14 @@ module PactBroker
|
|
|
9
9
|
PactBroker::Models::Version.where(number: number, pacticipant_id: pacticipant_id).single_record
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
+
def find_by_pacticipant_name_and_number pacticipant_name, number
|
|
13
|
+
PactBroker::Models::Version
|
|
14
|
+
.where(number: number)
|
|
15
|
+
.join(:pacticipants, {id: :pacticipant_id})
|
|
16
|
+
.where(name: pacticipant_name)
|
|
17
|
+
.single_record
|
|
18
|
+
end
|
|
19
|
+
|
|
12
20
|
def create args
|
|
13
21
|
PactBroker.logger.info "Creating version #{args[:number]} for pacticipant_id=#{args[:pacticipant_id]}"
|
|
14
22
|
PactBroker::Models::Version.new(number: args[:number], pacticipant_id: args[:pacticipant_id]).save
|
|
@@ -2,6 +2,7 @@ require 'pact_broker/models'
|
|
|
2
2
|
require 'pact_broker/repositories/pacticipant_repository'
|
|
3
3
|
require 'pact_broker/repositories/version_repository'
|
|
4
4
|
require 'pact_broker/repositories/pact_repository'
|
|
5
|
+
require 'pact_broker/repositories/tag_repository'
|
|
5
6
|
|
|
6
7
|
module PactBroker
|
|
7
8
|
module Repositories
|
|
@@ -17,6 +18,10 @@ module PactBroker
|
|
|
17
18
|
PactRepository.new
|
|
18
19
|
end
|
|
19
20
|
|
|
21
|
+
def tag_repository
|
|
22
|
+
TagRepository.new
|
|
23
|
+
end
|
|
24
|
+
|
|
20
25
|
extend self
|
|
21
26
|
end
|
|
22
27
|
end
|
|
@@ -24,16 +24,16 @@ module PactBroker
|
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
def self.
|
|
28
|
-
pacticipant = pacticipant_repository.find_by_name(params
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return pacticipant, false
|
|
32
|
-
else
|
|
33
|
-
pacticipant = pacticipant_repository.create(name: params[:name], repository_url: params[:repository_url])
|
|
34
|
-
return pacticipant, true
|
|
35
|
-
end
|
|
27
|
+
def self.update params
|
|
28
|
+
pacticipant = pacticipant_repository.find_by_name(params.fetch(:name))
|
|
29
|
+
pacticipant.update(params)
|
|
30
|
+
pacticipant_repository.find_by_name(params.fetch(:name))
|
|
36
31
|
end
|
|
32
|
+
|
|
33
|
+
def self.create params
|
|
34
|
+
pacticipant_repository.create(params)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'pact_broker/repositories'
|
|
2
|
+
|
|
3
|
+
module PactBroker
|
|
4
|
+
|
|
5
|
+
module Services
|
|
6
|
+
module TagService
|
|
7
|
+
|
|
8
|
+
extend self
|
|
9
|
+
|
|
10
|
+
extend PactBroker::Repositories
|
|
11
|
+
|
|
12
|
+
def create args
|
|
13
|
+
pacticipant = pacticipant_repository.find_by_name_or_create args.fetch(:pacticipant_name)
|
|
14
|
+
version = version_repository.find_by_pacticipant_id_and_number_or_create pacticipant.id, args.fetch(:pacticipant_version_number)
|
|
15
|
+
tag_repository.create version: version, name: args.fetch(:tag_name)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def find args
|
|
19
|
+
tag_repository.find args
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
data/lib/pact_broker/services.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'pact_broker/services/pact_service'
|
|
2
2
|
require 'pact_broker/services/pacticipant_service'
|
|
3
|
+
require 'pact_broker/services/tag_service'
|
|
3
4
|
|
|
4
5
|
module PactBroker
|
|
5
6
|
module Services
|
|
@@ -10,5 +11,9 @@ module PactBroker
|
|
|
10
11
|
def pacticipant_service
|
|
11
12
|
PacticipantService
|
|
12
13
|
end
|
|
14
|
+
|
|
15
|
+
def tag_service
|
|
16
|
+
TagService
|
|
17
|
+
end
|
|
13
18
|
end
|
|
14
19
|
end
|
data/lib/pact_broker/version.rb
CHANGED
data/pact_broker.gemspec
CHANGED
|
@@ -36,5 +36,5 @@ Gem::Specification.new do |gem|
|
|
|
36
36
|
gem.add_development_dependency 'ci_reporter'
|
|
37
37
|
gem.add_development_dependency 'simplecov'
|
|
38
38
|
gem.add_development_dependency 'shotgun'
|
|
39
|
-
gem.add_development_dependency 'pact'
|
|
39
|
+
gem.add_development_dependency 'pact', '1.1.0.rc1'
|
|
40
40
|
end
|
|
@@ -5,7 +5,7 @@ require 'pact_broker/api/decorators'
|
|
|
5
5
|
|
|
6
6
|
module PactBroker::Api::Decorators
|
|
7
7
|
|
|
8
|
-
describe
|
|
8
|
+
describe PactCollectionDecorator do
|
|
9
9
|
|
|
10
10
|
let(:pact) do
|
|
11
11
|
provider = PactBroker::Models::Pacticipant.create(:name => 'Pricing Service')
|
|
@@ -16,7 +16,7 @@ module PactBroker::Api::Decorators
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
xit "should description" do
|
|
19
|
-
puts
|
|
19
|
+
puts PactCollectionDecorator.new([pact]).to_json
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'pact_broker/api/resources/tag'
|
|
3
|
+
|
|
4
|
+
module PactBroker
|
|
5
|
+
module Api
|
|
6
|
+
|
|
7
|
+
module Resources
|
|
8
|
+
|
|
9
|
+
describe Tag do
|
|
10
|
+
|
|
11
|
+
let(:tag) { double("PactBroker::Models::Tag") }
|
|
12
|
+
let(:tag_decorator) { instance_double("PactBroker::Api::Decorators::TagDecorator", :to_json => tag_json) }
|
|
13
|
+
let(:tag_json) { {"some" => "tag"}.to_json }
|
|
14
|
+
let(:tag_attributes) {
|
|
15
|
+
{
|
|
16
|
+
:pacticipant_name => "Condor",
|
|
17
|
+
:pacticipant_version_number => "1.3.0",
|
|
18
|
+
:tag_name => "prod"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
describe "GET" do
|
|
23
|
+
before do
|
|
24
|
+
allow(Services::TagService).to receive(:find).and_return(tag)
|
|
25
|
+
allow(PactBroker::Api::Decorators::TagDecorator).to receive(:new).and_return(tag_decorator)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
subject { get("/pacticipants/Condor/versions/1.3.0/tags/prod" ) }
|
|
29
|
+
|
|
30
|
+
context "when the tag exists" do
|
|
31
|
+
|
|
32
|
+
it "renders the tag" do
|
|
33
|
+
subject
|
|
34
|
+
expect(last_response.body).to eq tag_json
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "returns a success response" do
|
|
38
|
+
subject
|
|
39
|
+
expect(last_response).to be_successful
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
context "when the tag does not exist" do
|
|
45
|
+
let(:tag) { nil }
|
|
46
|
+
|
|
47
|
+
it "returns a 404" do
|
|
48
|
+
subject
|
|
49
|
+
expect(last_response.status).to eq 404
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe "PUT" do
|
|
55
|
+
|
|
56
|
+
let(:tag_url) { 'http://example.org/tag/url'}
|
|
57
|
+
|
|
58
|
+
before do
|
|
59
|
+
allow_any_instance_of(PactBroker::Api::Resources::Tag).to receive(:tag_url).and_return(tag_url)
|
|
60
|
+
allow(Services::TagService).to receive(:find).and_return(tag)
|
|
61
|
+
allow(PactBroker::Api::Decorators::TagDecorator).to receive(:new).and_return(tag_decorator)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
subject { put("/pacticipants/Condor/versions/1.3.0/tags/prod", nil, "CONTENT_LENGTH" => "0", "CONTENT_TYPE" => "application/json") }
|
|
65
|
+
|
|
66
|
+
it "returns a success response" do
|
|
67
|
+
subject
|
|
68
|
+
expect(last_response).to be_successful
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
context "when the tag already exists" do
|
|
72
|
+
|
|
73
|
+
it "returns a 200" do
|
|
74
|
+
subject
|
|
75
|
+
expect(last_response.status).to be 200
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "renders the tag" do
|
|
79
|
+
expect(tag_decorator).to receive(:to_json).with(base_url: "http://example.org")
|
|
80
|
+
subject
|
|
81
|
+
expect(last_response.body).to eq tag_json
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
context "when the tag does not exist" do
|
|
87
|
+
before do
|
|
88
|
+
allow(Services::TagService).to receive(:find).and_return(nil)
|
|
89
|
+
allow(Services::TagService).to receive(:create).and_return(tag)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
it "creates the tag" do
|
|
94
|
+
expect(Services::TagService).to receive(:create).with(tag_attributes)
|
|
95
|
+
subject
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "returns a 201" do
|
|
99
|
+
subject
|
|
100
|
+
expect(last_response.status).to be 201
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "renders the tag" do
|
|
104
|
+
expect(tag_decorator).to receive(:to_json).with(base_url: "http://example.org")
|
|
105
|
+
subject
|
|
106
|
+
expect(last_response.body).to eq tag_json
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'pact_broker/repositories/tag_repository'
|
|
3
|
+
|
|
4
|
+
module PactBroker
|
|
5
|
+
module Repositories
|
|
6
|
+
describe TagRepository do
|
|
7
|
+
|
|
8
|
+
describe ".find" do
|
|
9
|
+
|
|
10
|
+
let(:pacticipant_name) { "test_pacticipant" }
|
|
11
|
+
let(:version_number) { "1.2.3" }
|
|
12
|
+
let(:tag_name) { "prod" }
|
|
13
|
+
|
|
14
|
+
subject { TagRepository.new }
|
|
15
|
+
let(:options) { {pacticipant_name: pacticipant_name, pacticipant_version_number: version_number, tag_name: tag_name} }
|
|
16
|
+
let(:find_tag) { subject.find options }
|
|
17
|
+
|
|
18
|
+
let!(:provider_state_builder) do
|
|
19
|
+
ProviderStateBuilder.new
|
|
20
|
+
.create_pacticipant("wrong_pacticipant")
|
|
21
|
+
.create_version(version_number)
|
|
22
|
+
.create_tag(tag_name) #Tag with wrong pacticipant
|
|
23
|
+
.create_pacticipant(pacticipant_name)
|
|
24
|
+
.create_version("2.0.0")
|
|
25
|
+
.create_tag(tag_name) # Tag with wrong version number
|
|
26
|
+
.create_version(version_number)
|
|
27
|
+
.create_tag("wrong tag") #Tag with wrong name
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context "when the tag exists" do
|
|
31
|
+
|
|
32
|
+
before do
|
|
33
|
+
provider_state_builder.create_tag(tag_name) # Right tag!
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "returns the tag" do
|
|
37
|
+
expect(find_tag.name).to eq tag_name
|
|
38
|
+
expect(find_tag.version.number).to eq version_number
|
|
39
|
+
expect(find_tag.version.pacticipant.name).to eq pacticipant_name
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
context "when the tag does not exist" do
|
|
45
|
+
it "returns nil" do
|
|
46
|
+
expect(find_tag).to be_nil
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'pact_broker/repositories/version_repository'
|
|
3
|
+
|
|
4
|
+
module PactBroker
|
|
5
|
+
module Repositories
|
|
6
|
+
describe VersionRepository do
|
|
7
|
+
|
|
8
|
+
describe "#find_by_pacticipant_name_and_number" do
|
|
9
|
+
|
|
10
|
+
let(:pacticipant_name) { "test_pacticipant" }
|
|
11
|
+
let(:version_number) { "1.2.3" }
|
|
12
|
+
|
|
13
|
+
subject { described_class.new.find_by_pacticipant_name_and_number pacticipant_name, version_number }
|
|
14
|
+
|
|
15
|
+
context "when the version exists" do
|
|
16
|
+
before do
|
|
17
|
+
ProviderStateBuilder.new.create_version_with_hierarchy "other_pacticipant", version_number
|
|
18
|
+
ProviderStateBuilder.new.create_version_with_hierarchy pacticipant_name, version_number
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "returns the version" do
|
|
22
|
+
expect(subject.number).to eq version_number
|
|
23
|
+
expect(subject.pacticipant.name).to eq pacticipant_name
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
context "when the version doesn't exist" do
|
|
28
|
+
it "returns nil" do
|
|
29
|
+
expect(subject).to be_nil
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'pact_broker/services/tag_service'
|
|
3
|
+
|
|
4
|
+
module PactBroker
|
|
5
|
+
module Services
|
|
6
|
+
describe TagService do
|
|
7
|
+
|
|
8
|
+
describe ".create" do
|
|
9
|
+
|
|
10
|
+
let(:pacticipant_name) { "test_pacticipant" }
|
|
11
|
+
let(:version_number) { "1.2.3" }
|
|
12
|
+
let(:tag_name) { "prod" }
|
|
13
|
+
|
|
14
|
+
let(:options) { {pacticipant_name: pacticipant_name, pacticipant_version_number: version_number, tag_name: tag_name}}
|
|
15
|
+
let(:provider_state_builder) { ProviderStateBuilder.new }
|
|
16
|
+
|
|
17
|
+
subject { TagService.create(options) }
|
|
18
|
+
|
|
19
|
+
# Naughty integration test... didn't seem much point unit testing this
|
|
20
|
+
|
|
21
|
+
it "creates the new tag" do
|
|
22
|
+
expect(subject.name).to eq tag_name
|
|
23
|
+
expect(subject.version.number).to eq version_number
|
|
24
|
+
expect(subject.version.pacticipant.name).to eq pacticipant_name
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -54,6 +54,15 @@ Pact.provider_states_for "Pact Broker Client" do
|
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
+
provider_state "'Condor' exists in the pact-broker with version 1.3.0, tagged with 'prod'" do
|
|
58
|
+
set_up do
|
|
59
|
+
ProviderStateBuilder.new
|
|
60
|
+
.create_pacticipant("Condor")
|
|
61
|
+
.create_version('1.3.0')
|
|
62
|
+
.create_tag('prod')
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
57
66
|
provider_state "'Condor' does not exist in the pact-broker" do
|
|
58
67
|
no_op
|
|
59
68
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -4,7 +4,11 @@ RACK_ENV = 'test'
|
|
|
4
4
|
|
|
5
5
|
$: << File.expand_path("../../", __FILE__)
|
|
6
6
|
|
|
7
|
+
require 'rack/test'
|
|
7
8
|
require 'pact_broker/db'
|
|
9
|
+
require './spec/support/provider_state_builder'
|
|
10
|
+
require 'pact_broker/api'
|
|
11
|
+
require 'rspec/fire'
|
|
8
12
|
|
|
9
13
|
RSpec.configure do | config |
|
|
10
14
|
config.before :suite do
|
|
@@ -19,4 +23,10 @@ RSpec.configure do | config |
|
|
|
19
23
|
DB::PACT_BROKER_DB[:pacticipants].truncate
|
|
20
24
|
end
|
|
21
25
|
|
|
26
|
+
config.include Rack::Test::Methods
|
|
27
|
+
config.include RSpec::Fire
|
|
28
|
+
|
|
29
|
+
def app
|
|
30
|
+
PactBroker::API
|
|
31
|
+
end
|
|
22
32
|
end
|
|
@@ -62,6 +62,31 @@ class ProviderStateBuilder
|
|
|
62
62
|
PactBroker::Models::Pact.create(:consumer_version => version, :provider => provider)
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
+
def create_version_with_hierarchy pacticipant_name, pacticipant_version
|
|
66
|
+
pacticipant = PactBroker::Models::Pacticipant.create(:name => pacticipant_name)
|
|
67
|
+
PactBroker::Models::Version.create(:number => pacticipant_version, :pacticipant => pacticipant)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def create_tag_with_hierarchy pacticipant_name, pacticipant_version, tag_name
|
|
71
|
+
version = create_version_with_hierarchy pacticipant_name, pacticipant_version
|
|
72
|
+
PactBroker::Models::Tag.create(name: tag_name, version: version)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def create_pacticipant pacticipant_name
|
|
76
|
+
@pacticipant = PactBroker::Models::Pacticipant.create(:name => pacticipant_name)
|
|
77
|
+
self
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def create_version version_number
|
|
81
|
+
@version = PactBroker::Models::Version.create(:number => version_number, :pacticipant => @pacticipant)
|
|
82
|
+
self
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def create_tag tag_name
|
|
86
|
+
@tag = PactBroker::Models::Tag.create(name: tag_name, version: @version)
|
|
87
|
+
self
|
|
88
|
+
end
|
|
89
|
+
|
|
65
90
|
private
|
|
66
91
|
|
|
67
92
|
# def create_pacticipant name
|
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: 0.0.
|
|
4
|
+
version: 0.0.10
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -11,7 +11,7 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date: 2014-
|
|
14
|
+
date: 2014-03-24 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
17
|
name: httparty
|
|
@@ -258,17 +258,17 @@ dependencies:
|
|
|
258
258
|
requirement: !ruby/object:Gem::Requirement
|
|
259
259
|
none: false
|
|
260
260
|
requirements:
|
|
261
|
-
- -
|
|
261
|
+
- - '='
|
|
262
262
|
- !ruby/object:Gem::Version
|
|
263
|
-
version:
|
|
263
|
+
version: 1.1.0.rc1
|
|
264
264
|
type: :development
|
|
265
265
|
prerelease: false
|
|
266
266
|
version_requirements: !ruby/object:Gem::Requirement
|
|
267
267
|
none: false
|
|
268
268
|
requirements:
|
|
269
|
-
- -
|
|
269
|
+
- - '='
|
|
270
270
|
- !ruby/object:Gem::Version
|
|
271
|
-
version:
|
|
271
|
+
version: 1.1.0.rc1
|
|
272
272
|
description: A server that stores and returns pact files generated by the pact gem.
|
|
273
273
|
It enables head/prod cross testing of the consumer and provider projects.
|
|
274
274
|
email:
|
|
@@ -299,14 +299,16 @@ files:
|
|
|
299
299
|
- lib/pact_broker/api.rb
|
|
300
300
|
- lib/pact_broker/api/decorators.rb
|
|
301
301
|
- lib/pact_broker/api/decorators/base_decorator.rb
|
|
302
|
-
- lib/pact_broker/api/decorators/
|
|
302
|
+
- lib/pact_broker/api/decorators/latest_pact_decorator.rb
|
|
303
303
|
- lib/pact_broker/api/decorators/pact_collection_decorator.rb
|
|
304
304
|
- lib/pact_broker/api/decorators/pact_decorator.rb
|
|
305
305
|
- lib/pact_broker/api/decorators/pact_pacticipant_decorator.rb
|
|
306
306
|
- lib/pact_broker/api/decorators/pacticipant_collection_decorator.rb
|
|
307
307
|
- lib/pact_broker/api/decorators/pacticipant_decorator.rb
|
|
308
308
|
- lib/pact_broker/api/decorators/representable_pact.rb
|
|
309
|
+
- lib/pact_broker/api/decorators/tag_decorator.rb
|
|
309
310
|
- lib/pact_broker/api/decorators/version_decorator.rb
|
|
311
|
+
- lib/pact_broker/api/pact_broker_urls.rb
|
|
310
312
|
- lib/pact_broker/api/resources/base_resource.rb
|
|
311
313
|
- lib/pact_broker/api/resources/index.rb
|
|
312
314
|
- lib/pact_broker/api/resources/latest_pact.rb
|
|
@@ -314,6 +316,7 @@ files:
|
|
|
314
316
|
- lib/pact_broker/api/resources/pact.rb
|
|
315
317
|
- lib/pact_broker/api/resources/pacticipant.rb
|
|
316
318
|
- lib/pact_broker/api/resources/pacticipants.rb
|
|
319
|
+
- lib/pact_broker/api/resources/tag.rb
|
|
317
320
|
- lib/pact_broker/db.rb
|
|
318
321
|
- lib/pact_broker/logging.rb
|
|
319
322
|
- lib/pact_broker/models.rb
|
|
@@ -325,10 +328,12 @@ files:
|
|
|
325
328
|
- lib/pact_broker/repositories.rb
|
|
326
329
|
- lib/pact_broker/repositories/pact_repository.rb
|
|
327
330
|
- lib/pact_broker/repositories/pacticipant_repository.rb
|
|
331
|
+
- lib/pact_broker/repositories/tag_repository.rb
|
|
328
332
|
- lib/pact_broker/repositories/version_repository.rb
|
|
329
333
|
- lib/pact_broker/services.rb
|
|
330
334
|
- lib/pact_broker/services/pact_service.rb
|
|
331
335
|
- lib/pact_broker/services/pacticipant_service.rb
|
|
336
|
+
- lib/pact_broker/services/tag_service.rb
|
|
332
337
|
- lib/pact_broker/services/version_service.rb
|
|
333
338
|
- lib/pact_broker/tasks.rb
|
|
334
339
|
- lib/pact_broker/tasks/migration_task.rb
|
|
@@ -337,8 +342,12 @@ files:
|
|
|
337
342
|
- pact_broker_client-pact_broker.json
|
|
338
343
|
- spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb
|
|
339
344
|
- spec/lib/pact_broker/api/decorators/representable_pact_spec.rb
|
|
345
|
+
- spec/lib/pact_broker/api/resources/tag_spec.rb
|
|
340
346
|
- spec/lib/pact_broker/models/order_versions_spec.rb
|
|
341
347
|
- spec/lib/pact_broker/repositories/pact_repository_spec.rb
|
|
348
|
+
- spec/lib/pact_broker/repositories/tag_repository_spec.rb
|
|
349
|
+
- spec/lib/pact_broker/repositories/version_repository_spec.rb
|
|
350
|
+
- spec/lib/pact_broker/services/tag_service_spec.rb
|
|
342
351
|
- spec/service_consumers/pact_helper.rb
|
|
343
352
|
- spec/service_consumers/provider_states_for_pact_broker_client.rb
|
|
344
353
|
- spec/spec_helper.rb
|
|
@@ -361,7 +370,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
361
370
|
version: '0'
|
|
362
371
|
segments:
|
|
363
372
|
- 0
|
|
364
|
-
hash:
|
|
373
|
+
hash: -449205238157124147
|
|
365
374
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
366
375
|
none: false
|
|
367
376
|
requirements:
|
|
@@ -370,7 +379,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
370
379
|
version: '0'
|
|
371
380
|
segments:
|
|
372
381
|
- 0
|
|
373
|
-
hash:
|
|
382
|
+
hash: -449205238157124147
|
|
374
383
|
requirements: []
|
|
375
384
|
rubyforge_project:
|
|
376
385
|
rubygems_version: 1.8.23
|
|
@@ -380,8 +389,12 @@ summary: See description
|
|
|
380
389
|
test_files:
|
|
381
390
|
- spec/lib/pact_broker/api/decorators/pact_collection_decorator_spec.rb
|
|
382
391
|
- spec/lib/pact_broker/api/decorators/representable_pact_spec.rb
|
|
392
|
+
- spec/lib/pact_broker/api/resources/tag_spec.rb
|
|
383
393
|
- spec/lib/pact_broker/models/order_versions_spec.rb
|
|
384
394
|
- spec/lib/pact_broker/repositories/pact_repository_spec.rb
|
|
395
|
+
- spec/lib/pact_broker/repositories/tag_repository_spec.rb
|
|
396
|
+
- spec/lib/pact_broker/repositories/version_repository_spec.rb
|
|
397
|
+
- spec/lib/pact_broker/services/tag_service_spec.rb
|
|
385
398
|
- spec/service_consumers/pact_helper.rb
|
|
386
399
|
- spec/service_consumers/provider_states_for_pact_broker_client.rb
|
|
387
400
|
- spec/spec_helper.rb
|