pact_broker-client 1.8.0 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +0 -17
- data/CHANGELOG.md +28 -0
- data/RELEASING.md +3 -14
- data/Rakefile +6 -1
- data/lib/pact_broker/client/base_client.rb +13 -1
- data/lib/pact_broker/client/can_i_deploy.rb +2 -3
- data/lib/pact_broker/client/cli/broker.rb +19 -8
- data/lib/pact_broker/client/cli/version_selector_options_parser.rb +5 -4
- data/lib/pact_broker/client/git.rb +15 -0
- data/lib/pact_broker/client/matrix.rb +17 -3
- data/lib/pact_broker/client/matrix/json_formatter.rb +2 -2
- data/lib/pact_broker/client/matrix/text_formatter.rb +3 -3
- data/lib/pact_broker/client/version.rb +1 -1
- data/pact-broker-client.gemspec +2 -3
- data/script/publish-pact.sh +1 -0
- data/script/release.sh +7 -0
- data/spec/integration/can_i_deploy_spec.rb +32 -0
- data/spec/lib/pact_broker/client/can_i_deploy_spec.rb +2 -2
- data/spec/lib/pact_broker/client/cli/broker_can_i_deploy_spec.rb +9 -1
- data/spec/lib/pact_broker/client/cli/broker_publish_spec.rb +25 -0
- data/spec/lib/pact_broker/client/cli/version_selector_options_parser_spec.rb +17 -14
- data/spec/lib/pact_broker/client/matrix/text_formatter_spec.rb +2 -2
- data/spec/lib/pact_broker/client/matrix_spec.rb +2 -1
- data/spec/pacts/pact_broker_client-pact_broker.json +272 -131
- data/spec/service_providers/pact_broker_client_matrix_spec.rb +89 -17
- data/spec/service_providers/pact_helper.rb +1 -0
- data/spec/support/matrix.json +26 -21
- data/spec/support/matrix.txt +1 -1
- metadata +11 -24
- data/Appraisals +0 -6
- data/gemfiles/default.gemfile +0 -7
- data/gemfiles/default.gemfile.lock +0 -106
- data/gemfiles/ruby_under_22.gemfile +0 -8
- data/gemfiles/ruby_under_22.gemfile.lock +0 -105
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca92e53e6aab9983ef939c9582e6ac0359ca8259
|
4
|
+
data.tar.gz: 4497c279c270dd495633134a1203a5ff84caeb30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 24a2de802420ad8fbd99085b3a12ac34666334991bfc379f968a055f2b4072892cec8ca12a09fcf7536eaf64310f57a727328542c8ae9fde3063f020f31d7731
|
7
|
+
data.tar.gz: 44faf6be7105518d0432f09834c610a9ab77e55d0b760c2eb8f8b983661b435ffb5dc9198b8ad665b0034439f2284e67838008da67430e576f18d286aa5b6373
|
data/.travis.yml
CHANGED
@@ -1,22 +1,5 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.1.8
|
4
3
|
- 2.2.4
|
5
4
|
- 2.3.1
|
6
5
|
- 2.4.1
|
7
|
-
gemfile:
|
8
|
-
- gemfiles/default.gemfile
|
9
|
-
- gemfiles/ruby_under_22.gemfile
|
10
|
-
matrix:
|
11
|
-
exclude:
|
12
|
-
# rack 2.0 and activesupport 5.0 no longer support ruby under 2.2.
|
13
|
-
- rvm: 2.0.0
|
14
|
-
gemfile: gemfiles/default.gemfile
|
15
|
-
- rvm: 2.1.8
|
16
|
-
gemfile: gemfiles/default.gemfile
|
17
|
-
- rvm: 2.2.4
|
18
|
-
gemfile: gemfiles/ruby_under_22.gemfile
|
19
|
-
- rvm: 2.3.1
|
20
|
-
gemfile: gemfiles/ruby_under_22.gemfile
|
21
|
-
- rvm: jruby-9.0.5.0
|
22
|
-
gemfile: gemfiles/ruby_under_22.gemfile
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,31 @@
|
|
1
|
+
<a name="v1.9.0"></a>
|
2
|
+
### v1.9.0 (2017-10-30)
|
3
|
+
|
4
|
+
|
5
|
+
#### Features
|
6
|
+
|
7
|
+
* **cli**
|
8
|
+
* add option to --tag-with-git-branch when publishing pacts ([484d5b8](/../../commit/484d5b8))
|
9
|
+
|
10
|
+
* **can-i-deploy**
|
11
|
+
* raise error when no --version is supplied for a --pacticipant ([0f3bfea](/../../commit/0f3bfea))
|
12
|
+
* change --name to --pacticipant ([d5d23bc](/../../commit/d5d23bc))
|
13
|
+
* include full response body in json output ([216bfdc](/../../commit/216bfdc))
|
14
|
+
* use array of query params for matrix ([314e2e2](/../../commit/314e2e2))
|
15
|
+
|
16
|
+
* **what-can-i-deploy**
|
17
|
+
* add success param to matrix query ([40adb2e](/../../commit/40adb2e))
|
18
|
+
|
19
|
+
* handle hash of errors in response ([fff32c2](/../../commit/fff32c2))
|
20
|
+
* change query params for matrix to use pacticipant[]=? and version[]=? ([003e305](/../../commit/003e305))
|
21
|
+
|
22
|
+
|
23
|
+
#### Bug Fixes
|
24
|
+
|
25
|
+
* **can-i-deploy**
|
26
|
+
* correct provider name in text output ([bfd0882](/../../commit/bfd0882))
|
27
|
+
|
28
|
+
|
1
29
|
<a name="v1.8.0"></a>
|
2
30
|
### v1.8.0 (2017-10-19)
|
3
31
|
|
data/RELEASING.md
CHANGED
@@ -1,16 +1,5 @@
|
|
1
1
|
# Releasing
|
2
2
|
|
3
|
-
1.
|
4
|
-
2.
|
5
|
-
3.
|
6
|
-
|
7
|
-
$ bundle exec rake generate_changelog
|
8
|
-
|
9
|
-
4. Add files to git
|
10
|
-
|
11
|
-
$ git add CHANGELOG.md lib/pact_broker/client/version.rb gemfiles
|
12
|
-
$ git commit -m "Releasing version $(ruby -r ./lib/pact_broker/client/version.rb -e "puts PactBroker::Client::VERSION")"
|
13
|
-
|
14
|
-
5. Release:
|
15
|
-
|
16
|
-
$ bundle exec rake release
|
3
|
+
1. Check status of https://travis-ci.org/pact-foundation/pact_broker-client
|
4
|
+
2. Increment the version in `lib/pact_broker/client/version.rb`
|
5
|
+
3. Run script/release.sh
|
data/Rakefile
CHANGED
@@ -12,7 +12,12 @@ RSpec::Core::RakeTask.new('spec:providers') do | task |
|
|
12
12
|
task.rspec_opts = "--pattern spec/service_providers/**/*_spec.rb"
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
# Must be run after spec:providers because it relies on the generated pact
|
16
|
+
RSpec::Core::RakeTask.new('spec:integration') do | task |
|
17
|
+
task.rspec_opts = "--pattern spec/integration/**/*_spec.rb"
|
18
|
+
end
|
19
|
+
|
20
|
+
task :default => [:spec, 'spec:providers', 'spec:integration']
|
16
21
|
|
17
22
|
task :generate_changelog do
|
18
23
|
require 'pact_broker/client/version'
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'erb'
|
2
2
|
require 'httparty'
|
3
3
|
require 'pact_broker/client/error'
|
4
|
+
require 'cgi'
|
4
5
|
|
5
6
|
module PactBroker
|
6
7
|
module Client
|
@@ -11,6 +12,10 @@ module PactBroker
|
|
11
12
|
def encode_param param
|
12
13
|
ERB::Util.url_encode param
|
13
14
|
end
|
15
|
+
|
16
|
+
def encode_query_param param
|
17
|
+
CGI::escape param
|
18
|
+
end
|
14
19
|
end
|
15
20
|
|
16
21
|
module StringToSymbol
|
@@ -65,7 +70,14 @@ module PactBroker
|
|
65
70
|
else
|
66
71
|
error_message = nil
|
67
72
|
begin
|
68
|
-
|
73
|
+
errors = JSON.parse(response.body)['errors']
|
74
|
+
error_message = if errors.is_a?(Array)
|
75
|
+
errors.join("\n")
|
76
|
+
elsif errors.is_a?(Hash)
|
77
|
+
errors.collect{ |key, value| "#{key}: #{value}" }.join("\n")
|
78
|
+
else
|
79
|
+
response.body
|
80
|
+
end
|
69
81
|
rescue
|
70
82
|
raise Error.new(response.body)
|
71
83
|
end
|
@@ -3,7 +3,6 @@ require 'pact_broker/client/pact_broker_client'
|
|
3
3
|
require 'pact_broker/client/retry'
|
4
4
|
require 'pact_broker/client/matrix/formatter'
|
5
5
|
|
6
|
-
|
7
6
|
module PactBroker
|
8
7
|
module Client
|
9
8
|
class CanIDeploy
|
@@ -45,7 +44,7 @@ module PactBroker
|
|
45
44
|
attr_reader :pact_broker_base_url, :version_selectors, :options, :pact_broker_client_options
|
46
45
|
|
47
46
|
def success_message(matrix)
|
48
|
-
message = format_matrix(matrix
|
47
|
+
message = format_matrix(matrix)
|
49
48
|
if format != 'json'
|
50
49
|
message = 'Computer says yes \o/' + "\n\n" + message
|
51
50
|
end
|
@@ -53,7 +52,7 @@ module PactBroker
|
|
53
52
|
end
|
54
53
|
|
55
54
|
def failure_message(matrix)
|
56
|
-
message = format_matrix(matrix
|
55
|
+
message = format_matrix(matrix)
|
57
56
|
if format != 'json'
|
58
57
|
message = 'Computer says no ¯\_(ツ)_/¯' + "\n\n" + message
|
59
58
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
-
require 'pact_broker/client/can_i_deploy'
|
2
1
|
require 'pact_broker/client/version'
|
2
|
+
require 'pact_broker/client/can_i_deploy'
|
3
|
+
require 'pact_broker/client/git'
|
3
4
|
require 'pact_broker/client/cli/version_selector_options_parser'
|
4
5
|
require 'pact_broker/client/cli/custom_thor'
|
5
6
|
require 'pact_broker/client/publish_pacts'
|
6
7
|
require 'rake/file_list'
|
8
|
+
require 'thor/error'
|
7
9
|
|
8
10
|
module PactBroker
|
9
11
|
module Client
|
@@ -14,16 +16,17 @@ module PactBroker
|
|
14
16
|
class Broker < CustomThor
|
15
17
|
desc 'can-i-deploy', "Returns exit code 0 or 1, indicating whether or not the specified application versions are compatible."
|
16
18
|
|
17
|
-
method_option :
|
18
|
-
method_option :version, required: true, aliases: "-
|
19
|
+
method_option :pacticipant, required: true, aliases: "-a", desc: "The pacticipant name. Use once for each pacticipant being checked."
|
20
|
+
method_option :version, required: true, aliases: "-e", desc: "The application version. Must be entered after the --pacticipant that it relates to."
|
19
21
|
method_option :broker_base_url, required: true, aliases: "-b", desc: "The base URL of the Pact Broker"
|
20
22
|
method_option :broker_username, aliases: "-u", desc: "Pact Broker basic auth username"
|
21
23
|
method_option :broker_password, aliases: "-p", desc: "Pact Broker basic auth password"
|
22
24
|
method_option :output, aliases: "-o", desc: "json or table", default: 'table'
|
23
|
-
method_option :verbose, aliases: "-v", desc: "Verbose output
|
25
|
+
method_option :verbose, aliases: "-v", type: :boolean, default: false, required: false, desc: "Verbose output. Default: false"
|
24
26
|
|
25
|
-
def can_i_deploy
|
27
|
+
def can_i_deploy(*ignored_but_necessary)
|
26
28
|
selectors = VersionSelectorOptionsParser.call(ARGV)
|
29
|
+
validate_can_i_deploy_selectors(selectors)
|
27
30
|
result = CanIDeploy.call(options.broker_base_url, selectors, {output: options.output}, pact_broker_client_options)
|
28
31
|
$stdout.puts result.message
|
29
32
|
exit(1) unless result.success
|
@@ -35,7 +38,8 @@ module PactBroker
|
|
35
38
|
method_option :broker_username, aliases: "-u", desc: "Pact Broker basic auth username"
|
36
39
|
method_option :broker_password, aliases: "-p", desc: "Pact Broker basic auth password"
|
37
40
|
method_option :tag, aliases: "-t", type: :array, banner: "TAG", desc: "Tag name for consumer version. Can be specified multiple times."
|
38
|
-
method_option :
|
41
|
+
method_option :tag_with_git_branch, aliases: "-g", type: :boolean, default: false, required: false, desc: "Tag consumer version with the name of the current git branch. Default: false"
|
42
|
+
method_option :verbose, aliases: "-v", type: :boolean, default: false, required: false, desc: "Verbose output. Default: false"
|
39
43
|
|
40
44
|
def publish(*pact_files)
|
41
45
|
validate_pact_files(pact_files)
|
@@ -58,10 +62,15 @@ module PactBroker
|
|
58
62
|
|
59
63
|
def validate_pact_files pact_files
|
60
64
|
unless pact_files && pact_files.any?
|
61
|
-
raise RequiredArgumentMissingError, "No value provided for required pact_files"
|
65
|
+
raise ::Thor::RequiredArgumentMissingError, "No value provided for required pact_files"
|
62
66
|
end
|
63
67
|
end
|
64
68
|
|
69
|
+
def validate_can_i_deploy_selectors selectors
|
70
|
+
pacticipants_without_versions = selectors.select{ |s| s[:version].nil? }.collect{ |s| s[:pacticipant] }
|
71
|
+
raise ::Thor::RequiredArgumentMissingError, "No --version provided for pacticipant #{pacticipants_without_versions.join(", ")}" if pacticipants_without_versions.any?
|
72
|
+
end
|
73
|
+
|
65
74
|
def publish_pacts pact_files
|
66
75
|
PactBroker::Client::PublishPacts.call(
|
67
76
|
options.broker_base_url,
|
@@ -83,7 +92,9 @@ module PactBroker
|
|
83
92
|
end
|
84
93
|
|
85
94
|
def tags
|
86
|
-
[*options.tag]
|
95
|
+
t = [*options.tag]
|
96
|
+
t << PactBroker::Client::Git.branch if options.tag_with_git_branch
|
97
|
+
t.compact.uniq
|
87
98
|
end
|
88
99
|
|
89
100
|
def pact_broker_client_options
|
@@ -7,15 +7,16 @@ module PactBroker
|
|
7
7
|
last_flag = nil
|
8
8
|
options.each do | option |
|
9
9
|
case option
|
10
|
-
when "--
|
10
|
+
when "--pacticipant", "-a"
|
11
11
|
versions << {}
|
12
12
|
when /^\-/
|
13
13
|
nil
|
14
14
|
else
|
15
15
|
case last_flag
|
16
|
-
when "--
|
17
|
-
versions.last[:
|
18
|
-
when "--version", "-
|
16
|
+
when "--pacticipant", "-a"
|
17
|
+
versions.last[:pacticipant] = option
|
18
|
+
when "--version", "-e"
|
19
|
+
versions << {pacticipant: nil} unless versions.last
|
19
20
|
versions.last[:version] = option
|
20
21
|
end
|
21
22
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'pact_broker/client/error'
|
2
|
+
|
3
|
+
module PactBroker
|
4
|
+
module Client
|
5
|
+
module Git
|
6
|
+
COMMAND = 'git rev-parse --abbrev-ref HEAD'
|
7
|
+
|
8
|
+
def self.branch
|
9
|
+
`#{COMMAND}`.strip
|
10
|
+
rescue StandardError => e
|
11
|
+
raise PactBroker::Client::Error, "Could not determine current git branch using command `#{COMMAND}`. #{e.class} #{e.message}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -3,8 +3,10 @@ require_relative 'base_client'
|
|
3
3
|
module PactBroker
|
4
4
|
module Client
|
5
5
|
class Matrix < BaseClient
|
6
|
-
def get selectors
|
7
|
-
query = {
|
6
|
+
def get selectors, options = {}
|
7
|
+
query = {
|
8
|
+
q: convert_selector_hashes_to_params(selectors)
|
9
|
+
}.merge(query_options(options))
|
8
10
|
response = self.class.get("/matrix", query: query, headers: default_get_headers)
|
9
11
|
$stdout.puts("DEBUG: Response headers #{response.headers}") if verbose?
|
10
12
|
$stdout.puts("DEBUG: Response body #{response}") if verbose?
|
@@ -31,8 +33,20 @@ module PactBroker
|
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
36
|
+
def query_options(options)
|
37
|
+
opts = {}
|
38
|
+
if options.key?(:success)
|
39
|
+
opts[:success] = [*options[:success]]
|
40
|
+
end
|
41
|
+
opts
|
42
|
+
end
|
43
|
+
|
34
44
|
def convert_selector_hashes_to_params(selectors)
|
35
|
-
selectors.collect
|
45
|
+
selectors.collect do |selector|
|
46
|
+
{ pacticipant: selector[:pacticipant] }.tap do | hash |
|
47
|
+
hash[:version] = selector[:version] if selector[:version]
|
48
|
+
end
|
49
|
+
end
|
36
50
|
end
|
37
51
|
end
|
38
52
|
end
|
@@ -7,12 +7,12 @@ module PactBroker
|
|
7
7
|
|
8
8
|
Line = Struct.new(:consumer, :consumer_version, :provider, :provider_version, :success)
|
9
9
|
|
10
|
-
def self.call(
|
11
|
-
data =
|
10
|
+
def self.call(matrix)
|
11
|
+
data = matrix[:matrix].collect do | line |
|
12
12
|
Line.new(
|
13
13
|
lookup(line, :consumer, :name),
|
14
14
|
lookup(line, :consumer, :version, :number),
|
15
|
-
lookup(line, :
|
15
|
+
lookup(line, :provider, :name),
|
16
16
|
lookup(line, :provider, :version, :number),
|
17
17
|
lookup(line, :verificationResult, :success).to_s
|
18
18
|
)
|
data/pact-broker-client.gemspec
CHANGED
@@ -7,9 +7,9 @@ require 'pact_broker/client/version'
|
|
7
7
|
Gem::Specification.new do |gem|
|
8
8
|
gem.name = "pact_broker-client"
|
9
9
|
gem.version = PactBroker::Client::VERSION
|
10
|
-
gem.authors = ["
|
10
|
+
gem.authors = ["Beth Skurrie"]
|
11
11
|
gem.email = ["bskurrie@dius.com.au"]
|
12
|
-
gem.description = %q{
|
12
|
+
gem.description = %q{Client for the Pact Broker. Publish, retrieve and query pacts and verification results.}
|
13
13
|
gem.summary = %q{See description}
|
14
14
|
gem.homepage = "https://github.com/bethesque/pact_broker-client.git"
|
15
15
|
|
@@ -27,7 +27,6 @@ Gem::Specification.new do |gem|
|
|
27
27
|
gem.add_runtime_dependency 'table_print', '~> 1.5'
|
28
28
|
|
29
29
|
gem.add_development_dependency 'fakefs', '~> 0.4'
|
30
|
-
gem.add_development_dependency 'appraisal'
|
31
30
|
gem.add_development_dependency 'webmock', '~> 3.0'
|
32
31
|
gem.add_development_dependency 'conventional-changelog'
|
33
32
|
gem.add_development_dependency 'pact', '~> 1.16'
|
@@ -0,0 +1 @@
|
|
1
|
+
bundle exec bin/pact-broker publish spec/pacts/pact_broker_client-pact_broker.json --consumer-app-version 1.2.3 --broker-base-url http://localhost:9292 --tag-with-git-branch
|
data/script/release.sh
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -e
|
3
|
+
bundle exec rake
|
4
|
+
bundle exec rake generate_changelog
|
5
|
+
git add CHANGELOG.md lib/pact_broker/client/version.rb
|
6
|
+
git commit -m "Releasing version $(ruby -r ./lib/pact_broker/client/version.rb -e "puts PactBroker::Client::VERSION")"
|
7
|
+
bundle exec rake release
|
@@ -0,0 +1,32 @@
|
|
1
|
+
describe "pact-broker can-i-deploy" do
|
2
|
+
before(:all) do
|
3
|
+
@pipe = IO.popen("bundle exec pact-stub-service spec/pacts/pact_broker_client-pact_broker.json -p 5000")
|
4
|
+
sleep 2
|
5
|
+
end
|
6
|
+
|
7
|
+
context "when the pacticipants can be deployed" do
|
8
|
+
subject { `bundle exec bin/pact-broker can-i-deploy -v --pacticipant Foo --version 1.2.3 --pacticipant Bar --version 4.5.6 --broker-base-url http://localhost:5000` }
|
9
|
+
|
10
|
+
it "returns a success exit code" do
|
11
|
+
subject
|
12
|
+
expect($?.exitstatus).to eq 0
|
13
|
+
expect(subject).to match /CONSUMER/
|
14
|
+
expect(subject).to match /Foo/
|
15
|
+
expect(subject).to match /PROVIDER/
|
16
|
+
expect(subject).to match /Bar/
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context "when the pacticipants can't be deployed" do
|
21
|
+
subject { `bundle exec bin/pact-broker can-i-deploy -v --pacticipant Wiffle --version 1.2.3 --pacticipant Meep --version 4.5.6 --broker-base-url http://localhost:5000` }
|
22
|
+
|
23
|
+
it "returns an error exit code" do
|
24
|
+
subject
|
25
|
+
expect($?.exitstatus).to_not eq 0
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
after(:all) do
|
30
|
+
Process.kill 'KILL', @pipe.pid
|
31
|
+
end
|
32
|
+
end
|
@@ -4,7 +4,7 @@ module PactBroker
|
|
4
4
|
module Client
|
5
5
|
describe CanIDeploy do
|
6
6
|
let(:pact_broker_base_url) { 'http://example.org' }
|
7
|
-
let(:version_selectors) { [{
|
7
|
+
let(:version_selectors) { [{pacticipant: "Foo", version: "1"}] }
|
8
8
|
let(:pact_broker_client_options) { { foo: 'bar' } }
|
9
9
|
let(:matrix_client) { instance_double('PactBroker::Client::Matrix') }
|
10
10
|
let(:matrix) { {matrix: ['foo'], summary: {compatible: true}} }
|
@@ -24,7 +24,7 @@ module PactBroker
|
|
24
24
|
end
|
25
25
|
|
26
26
|
it "creates a text table out of the matrix" do
|
27
|
-
expect(Matrix::Formatter).to receive(:call).with(
|
27
|
+
expect(Matrix::Formatter).to receive(:call).with(matrix, 'text')
|
28
28
|
subject
|
29
29
|
end
|
30
30
|
|
@@ -15,7 +15,7 @@ module PactBroker
|
|
15
15
|
let(:result) { instance_double('PactBroker::Client::CanIDeploy::Result', success: success, message: message) }
|
16
16
|
let(:success) { true }
|
17
17
|
let(:message) { 'message' }
|
18
|
-
let(:version_selectors) { [
|
18
|
+
let(:version_selectors) { [{pacticipant: "Foo", version: "1"}] }
|
19
19
|
let(:minimum_valid_options) do
|
20
20
|
{
|
21
21
|
broker_base_url: 'http://pact-broker',
|
@@ -36,6 +36,14 @@ module PactBroker
|
|
36
36
|
invoke_can_i_deploy
|
37
37
|
end
|
38
38
|
|
39
|
+
context "with a missing --version" do
|
40
|
+
let(:version_selectors) { [{pacticipant: "Foo", version: nil}] }
|
41
|
+
|
42
|
+
it "raises an error" do
|
43
|
+
expect { invoke_can_i_deploy }.to raise_error Thor::RequiredArgumentMissingError, "No --version provided for pacticipant Foo"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
39
47
|
context "with basic auth" do
|
40
48
|
before do
|
41
49
|
subject.options = OpenStruct.new(minimum_valid_options.merge(broker_username: 'foo', broker_password: 'bar'))
|