conjur-cli 4.13.1 → 4.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8e1f0f7628065a0ce442b2265afe5f31ead8eaca
4
- data.tar.gz: 7779ade9cf9b10d8814e127d2e696a24fb5d6606
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YzdkNTU4NDk0N2QyMmNiOWJkMDA3MzZkZmNhMTg2NjZiNTQzZTMwYw==
5
+ data.tar.gz: !binary |-
6
+ ODE1ODg4ZGMyZGYzYTBiYTNmNzMzMWZlNjUwYjdjZjc4NDZjYWJkOA==
5
7
  SHA512:
6
- metadata.gz: 4caf67febf27ac99ccbb1183a5371f04c6c768b643172f78bef981917762da18d5cbc519b92675b54f1acb0af867e75fde053f4747d4a397a6f7730e4a47cbe8
7
- data.tar.gz: 0efb81a0af8cdb3ec276a980507003a0785cdffc04b483f360f208dbb6971064fb53115d3b23a89b33368f979a29ceafad12d4764794145041612f2f5e69c826
8
+ metadata.gz: !binary |-
9
+ NzE2OGU2MWI2NTI4ZjQyZjBmMDQyOTQ2ZDM5OTY1YTBjNWY2MmJjMDQ0ZTNj
10
+ MmM2ZjkzMjRmMTZkN2UxZjc3MmM5NTAxNjg4ZjE4YjE5Y2NiMTA4ZDI2OGQy
11
+ YTgxZWJiZjZjZjBlMDVhZjM2OWZiOTMyYTYzMzY4MTA2YjhmYWM=
12
+ data.tar.gz: !binary |-
13
+ NjlhMjllYzZjNDMwOTdmYjg0Nzc4MGU1ZWY0ZTg3Y2JiN2EyMmJkNWMzYmIx
14
+ YWY5Y2U0NmE3NmJmNGYyYTRhMzdlODk1ODZkN2YzYjJiZTBmMWU5Zjg2MWFh
15
+ NGI3NGQ2NjU3NDBmY2NiYWY0NTAzMWU0ZDM3MjZiZDY5NGI3YTk=
data/Gemfile CHANGED
@@ -1,5 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ #ruby-gemset=conjur-cli
4
+
3
5
  # Specify your gem's dependencies in conjur.gemspec
4
6
  gemspec
5
7
 
@@ -81,8 +81,7 @@ module Conjur::Authn
81
81
  end
82
82
 
83
83
  def ask_for_credentials(options = {})
84
- raise "No credentials provided or found" if options[:noask]
85
-
84
+ raise "No Conjur credentials provided or found" if options[:noask]
86
85
 
87
86
  # also use stderr here, because we might be prompting for a password as part
88
87
  # of a command like user:create that we'd want to send to a file.
@@ -28,7 +28,18 @@ class Conjur::DSLCommand < Conjur::Command
28
28
  filename = nil
29
29
  script = if script = args.pop
30
30
  filename = script
31
- script = File.read(script)
31
+ script = if File.exists?(script)
32
+ File.read(script)
33
+ else
34
+ require 'open-uri'
35
+ uri = URI.parse(script)
36
+ raise "Unable to read this kind of URL : #{script}" unless uri.respond_to?(:read)
37
+ begin
38
+ uri.read
39
+ rescue OpenURI::HTTPError
40
+ raise "Unable to read URI #{script} : #{$!.message}"
41
+ end
42
+ end
32
43
  else
33
44
  STDIN.read
34
45
  end
@@ -79,7 +79,8 @@ RUNLONGDESC
79
79
  env = get_env_object(options)
80
80
  runtime_environment = Hash[ env.obtain(api).map {|k,v| [k.upcase, v] } ]
81
81
  if Conjur.log
82
- Conjur.log << "Running command in the prepared environment: #{args}"
82
+ Conjur.log << "[conjur env] Loaded environment #{runtime_environment.keys}\n"
83
+ Conjur.log << "[conjur env] Running command #{args}\n"
83
84
  end
84
85
  Kernel.system(runtime_environment, *args) or exit($?.to_i) # keep original exit code in case of failure
85
86
  end
@@ -45,17 +45,16 @@ class Conjur::Command::Init < Conjur::Command
45
45
 
46
46
  c.desc "Conjur organization account name (not required for appliance)"
47
47
  c.flag ["a", "account"]
48
-
48
+
49
49
  c.desc "Conjur SSL certificate (will be obtained from host unless provided by this option)"
50
50
  c.flag ["c", "certificate"]
51
51
 
52
52
  c.desc "File to write the configuration to"
53
- c.default_value File.expand_path('~/.conjurrc')
54
- c.flag ["f","file"]
55
-
53
+ c.flag ["f", "file"]
54
+
56
55
  c.desc "Force overwrite of existing files"
57
56
  c.flag "force"
58
-
57
+
59
58
  c.action do |global_options,options,args|
60
59
  hl = HighLine.new $stdin, $stderr
61
60
 
@@ -65,7 +64,7 @@ class Conjur::Command::Init < Conjur::Command
65
64
  if hostname
66
65
  Conjur.configuration.core_url = "https://#{hostname}/api"
67
66
  end
68
-
67
+
69
68
  account = options[:account]
70
69
  account ||= if hostname
71
70
  account = Conjur::Core::API.info['account'] or raise "Expecting 'account' in Core info"
@@ -73,7 +72,7 @@ class Conjur::Command::Init < Conjur::Command
73
72
  # using .to_s to overcome https://github.com/JEG2/highline/issues/69
74
73
  hl.ask("Enter your organization account name: ").to_s
75
74
  end
76
-
75
+
77
76
  if (certificate = options[:certificate]).blank?
78
77
  unless hostname.blank?
79
78
  connect_hostname = if hostname.include?(':')
@@ -91,28 +90,37 @@ class Conjur::Command::Init < Conjur::Command
91
90
  exit_now! "You decided not to trust the certificate" unless hl.ask("Trust this certificate (yes/no): ").strip == "yes"
92
91
  end
93
92
  end
94
-
93
+
95
94
  exit_now! "account is required" if account.blank?
96
-
97
- config = {
95
+
96
+ config = {
98
97
  account: account,
99
98
  plugins: []
100
99
  }
101
-
100
+
102
101
  config[:appliance_url] = "https://#{hostname}/api" unless hostname.blank?
103
-
102
+
103
+ config_file = File.expand_path('~/.conjurrc')
104
+
105
+ if !options[:file].nil?
106
+ config_file = File.expand_path(options[:file])
107
+ elsif ENV['CONJURRC']
108
+ config_file = File.expand_path(ENV['CONJURRC'])
109
+ end
110
+
104
111
  unless certificate.blank?
105
- cert_file = File.join(File.dirname(options[:file]), "conjur-#{account}.pem")
112
+ cert_file = File.join(File.dirname(config_file), "conjur-#{account}.pem")
106
113
  config[:cert_file] = cert_file
107
114
  write_file(cert_file, options[:force]) do |f|
108
115
  f.puts certificate
109
116
  end
110
117
  puts "Wrote certificate to #{cert_file}"
111
118
  end
112
-
113
- write_file(options[:file], options[:force]) do |f|
119
+
120
+ write_file(config_file, options[:force]) do |f|
114
121
  f.puts YAML.dump(config.stringify_keys)
115
122
  end
123
+
116
124
  puts "Wrote configuration to #{options[:file]}"
117
125
  end
118
126
  end
@@ -24,7 +24,7 @@ require 'active_support/core_ext/hash/indifferent_access'
24
24
  module Conjur
25
25
  class Config
26
26
  @@attributes = {}
27
-
27
+
28
28
  class << self
29
29
  def clear
30
30
  @@attributes = {}
@@ -46,9 +46,9 @@ module Conjur
46
46
  end
47
47
 
48
48
  def default_config_files
49
- ['/etc/conjur.conf', user_config_files].flatten
49
+ ['/etc/conjur.conf', user_config_files].flatten.uniq
50
50
  end
51
-
51
+
52
52
  def load(config_files = default_config_files)
53
53
  require 'yaml'
54
54
  require 'conjur/log'
@@ -65,12 +65,12 @@ module Conjur
65
65
  end
66
66
  end
67
67
  end
68
-
68
+
69
69
  def apply
70
70
  require 'conjur/configuration'
71
71
  keys = Config.keys.dup
72
72
  keys.delete(:plugins)
73
-
73
+
74
74
  cfg = Conjur.configuration
75
75
  keys.each do |k|
76
76
  if Conjur.configuration.respond_to?("#{k}_env_var") && (env_var = Conjur.configuration.send("#{k}_env_var")) && (v = ENV[env_var])
@@ -82,7 +82,7 @@ module Conjur
82
82
  value = Config[k]
83
83
  cfg.set k, value if value
84
84
  end
85
-
85
+
86
86
  if Conjur.log
87
87
  begin
88
88
  require 'conjur/api'
@@ -95,11 +95,11 @@ module Conjur
95
95
  OpenSSL::SSL::SSLContext::DEFAULT_CERT_STORE.add_file Config[:cert_file]
96
96
  end
97
97
  end
98
-
98
+
99
99
  def inspect
100
100
  @@attributes.inspect
101
101
  end
102
-
102
+
103
103
  def plugins
104
104
  plugins = @@attributes['plugins']
105
105
  if plugins
@@ -108,16 +108,16 @@ module Conjur
108
108
  []
109
109
  end
110
110
  end
111
-
111
+
112
112
  def merge(a)
113
113
  a = {} unless a
114
114
  @@attributes.deep_merge!(a.stringify_keys)
115
115
  end
116
-
116
+
117
117
  def keys
118
118
  @@attributes.keys.map(&:to_sym)
119
119
  end
120
-
120
+
121
121
  def [](key)
122
122
  @@attributes[key.to_s]
123
123
  end
@@ -9,6 +9,7 @@ module Conjur
9
9
  include Conjur::IdentifierManipulation
10
10
 
11
11
  attr_reader :script, :filename, :context
12
+ attr_reader :policy_role, :policy_resource
12
13
 
13
14
  def initialize(script, filename = nil)
14
15
  @context = {
@@ -16,9 +17,10 @@ module Conjur
16
17
  "api_keys" => {}
17
18
  }
18
19
 
19
- @context['env'] = Conjur.env unless Conjur.env == 'production'
20
+ @context['env'] = Conjur.env unless Conjur.env == 'production'
20
21
  @context['stack'] = Conjur.stack unless Conjur.stack == 'v4'
21
- @context['appliance_url'] = Conjur.configuration.appliance_url unless Conjur.configuration.appliance_url.nil?
22
+ @context['appliance_url'] = Conjur.configuration.appliance_url unless Conjur.configuration.appliance_url.nil?
23
+ @context['ssl_certificate'] = File.read(Conjur::Config[:cert_file]) unless Conjur::Config[:cert_file].nil?
22
24
 
23
25
  @script = script
24
26
  @filename = filename
@@ -89,9 +91,11 @@ module Conjur
89
91
 
90
92
  def policy id, &block
91
93
  self.role "policy", id do |role|
94
+ @policy_role = role
92
95
  context["policy"] = role.identifier
93
96
  self.owns do
94
- self.resource "policy", id do
97
+ self.resource "policy", id do |resource|
98
+ @policy_resource = resource
95
99
  scope id do
96
100
  block.call if block_given?
97
101
  end
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright (C) 2013 Conjur Inc
2
+ # Copyright (C) 2014 Conjur Inc
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
5
  # this software and associated documentation files (the "Software"), to deal in
@@ -19,6 +19,6 @@
19
19
  # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  #
21
21
  module Conjur
22
- VERSION = "4.13.1"
22
+ VERSION = "4.14.0"
23
23
  ::Version=VERSION
24
24
  end
@@ -1,7 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
- tmpdir = Dir.mktmpdir
4
-
5
3
  GITHUB_FP = "SHA1 Fingerprint=A0:C4:A7:46:00:ED:A7:2D:C0:BE:CB:9A:8C:B6:07:CA:58:EE:74:5E"
6
4
  GITHUB_CERT = <<EOF
7
5
  -----BEGIN CERTIFICATE-----
@@ -41,10 +39,6 @@ XX4C2NesiZcLYbc2n7B9O+63M2k=
41
39
  EOF
42
40
 
43
41
  describe Conjur::Command::Init do
44
- it "properly defaults to a file path" do
45
- expect(Conjur::CLI.commands[:init].flags[:f].default_value).to eq("#{ENV['HOME']}/.conjurrc")
46
- end
47
-
48
42
  describe ".get_certificate" do
49
43
  it "returns the right certificate from github" do
50
44
  fingerprint, certificate = Conjur::Command::Init.get_certificate('github.com:443')
@@ -57,12 +51,14 @@ describe Conjur::Command::Init do
57
51
  before {
58
52
  File.stub(:exists?).and_return false
59
53
  }
54
+
60
55
  context "auto-fetching fingerprint" do
61
56
  before {
62
57
  HighLine.any_instance.stub(:ask).with("Enter the hostname (and optional port) of your Conjur endpoint: ").and_return "the-host"
63
58
  Conjur::Command::Init.stub get_certificate: ["the-fingerprint", nil]
64
59
  HighLine.any_instance.stub(:ask).with(/^Trust this certificate/).and_return "yes"
65
60
  }
61
+
66
62
  describe_command 'init' do
67
63
  it "fetches account and writes config file" do
68
64
  # Stub hostname
@@ -71,6 +67,7 @@ describe Conjur::Command::Init do
71
67
  invoke
72
68
  end
73
69
  end
70
+
74
71
  describe_command 'init -a the-account' do
75
72
  it "writes config file" do
76
73
  File.should_receive(:open)
@@ -78,11 +75,13 @@ describe Conjur::Command::Init do
78
75
  end
79
76
  end
80
77
  end
78
+
81
79
  describe_command 'init -a the-account -h foobar' do
82
80
  it "can't get the cert" do
83
81
  expect { invoke }.to raise_error(GLI::CustomExit, /unable to retrieve certificate/i)
84
82
  end
85
83
  end
84
+
86
85
  # KEG: These tests have a nasty habit of hanging
87
86
  # describe_command 'init -a the-account -h google.com' do
88
87
  # it "writes the config and cert" do
@@ -98,25 +97,71 @@ describe Conjur::Command::Init do
98
97
  # invoke
99
98
  # end
100
99
  # end
100
+
101
101
  describe_command 'init -a the-account -h localhost -c the-cert' do
102
102
  it "writes config and cert files" do
103
103
  File.should_receive(:open).twice
104
104
  invoke
105
105
  end
106
106
  end
107
+
107
108
  context "in a temp dir" do
108
- describe_command "init -f #{tmpdir}/.conjurrc -a the-account -h localhost -c the-cert" do
109
+ tmpdir = Dir.mktmpdir
110
+
111
+ shared_examples "check config and cert files" do |file, env|
112
+ around do |example|
113
+ Dir.foreach(tmpdir) {|f|
114
+ fn = File.join(tmpdir, f)
115
+ File.delete(fn) if f != '.' && f != '..'
116
+ }
117
+ f = ENV.delete 'CONJURRC'
118
+ if not env.nil?
119
+ ENV['CONJURRC'] = env
120
+ end
121
+ example.run
122
+ ENV['CONJURRC'] = f
123
+ end
124
+
109
125
  it "writes config and cert files" do
110
126
  invoke
111
-
112
- expect(YAML.load(File.read(File.join(tmpdir, ".conjurrc")))).to eq({
127
+
128
+ expect(YAML.load(File.read(file))).to eq({
113
129
  account: 'the-account',
114
130
  appliance_url: "https://localhost/api",
115
- cert_file: "#{tmpdir}/conjur-the-account.pem",
131
+ cert_file: File.join(File.dirname(file), "conjur-the-account.pem"),
116
132
  plugins: [],
117
133
  }.stringify_keys)
134
+ end
135
+ end
136
+
137
+ context "default behavior" do
138
+ describe_command "init -a the-account -h localhost -c the-cert" do
139
+ before(:each) {
140
+ File.stub(:expand_path).and_call_original
141
+ File.stub(:expand_path).with('~/.conjurrc').and_return("#{tmpdir}/.conjurrc")
142
+ }
143
+
144
+ include_examples "check config and cert files", "#{tmpdir}/.conjurrc"
145
+ end
146
+ end
118
147
 
119
- File.read(File.join(tmpdir, "conjur-the-account.pem")).should == "the-cert\n"
148
+ context "explicit output file" do
149
+ describe_command "init -f #{tmpdir}/.conjurrc2 -a the-account -h localhost -c the-cert" do
150
+ include_examples "check config and cert files", File.join(tmpdir, ".conjurrc2")
151
+ end
152
+ end
153
+
154
+ context "to CONJURRC" do
155
+ describe_command "init -a the-account -h localhost -c the-cert" do
156
+ file = File.join(tmpdir, ".conjurrc_env")
157
+ include_examples "check config and cert files", file, file
158
+ end
159
+ end
160
+
161
+ context "explicit output file overrides CONJURRC" do
162
+ describe_command "init -f #{tmpdir}/.conjurrc_2 -a the-account -h localhost -c the-cert" do
163
+ ENV['CONJURRC'] = "#{tmpdir}/.conjurrc_env_2"
164
+ include_examples "check config and cert files", File.join(tmpdir, ".conjurrc_2")
120
165
  end
121
166
  end
122
167
  end
@@ -22,7 +22,8 @@ describe Conjur::Command::Policy do
22
22
  double("resource", exists?: true).as_null_object
23
23
  end
24
24
  before {
25
- File.stub(:read).with("policy-body").and_return "{}"
25
+ File.stub(:exists?).with("policy.rb").and_return true
26
+ File.stub(:read).with("policy.rb").and_return "{}"
26
27
  Conjur::DSL::Runner.any_instance.stub(:api).and_return api
27
28
  }
28
29
  before {
@@ -32,7 +33,17 @@ describe Conjur::Command::Policy do
32
33
  api.stub(:resource).with("the-account:policy:#{collection}/the-policy-1.0.0").and_return resource
33
34
  }
34
35
 
35
- describe_command 'policy:load --collection the-collection policy-body' do
36
+ describe_command 'policy:load --collection the-collection http://example.com/policy.rb' do
37
+ let(:collection) { "the-collection" }
38
+ before {
39
+ File.stub(:exists?).with("http://example.com/policy.rb").and_return false
40
+ URI.stub(:parse).with("http://example.com/policy.rb").and_return double(:uri, read: "{}")
41
+ }
42
+ it "creates the policy" do
43
+ invoke.should == 0
44
+ end
45
+ end
46
+ describe_command 'policy:load --collection the-collection policy.rb' do
36
47
  let(:collection) { "the-collection" }
37
48
  it "creates the policy" do
38
49
  invoke.should == 0
@@ -43,7 +54,7 @@ describe Conjur::Command::Policy do
43
54
  before {
44
55
  stub_const("ENV", "USER" => "alice", "HOSTNAME" => "localhost")
45
56
  }
46
- describe_command 'policy:load --as-group the-group policy-body' do
57
+ describe_command 'policy:load --as-group the-group policy.rb' do
47
58
  let(:group) { double(:group, exists?: true) }
48
59
  it "creates the policy" do
49
60
  Conjur::Command.api.stub(:role).with("the-account:group:the-group").and_return group
@@ -52,7 +63,7 @@ describe Conjur::Command::Policy do
52
63
  invoke.should == 0
53
64
  end
54
65
  end
55
- describe_command 'policy:load policy-body' do
66
+ describe_command 'policy:load policy.rb' do
56
67
  it "creates the policy with default collection" do
57
68
  invoke.should == 0
58
69
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conjur-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.13.1
4
+ version: 4.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafał Rzepecki
@@ -9,125 +9,125 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-15 00:00:00.000000000 Z
12
+ date: 2014-09-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ! '>='
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '>='
25
+ - - ! '>='
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: conjur-api
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - ! '>='
33
33
  - !ruby/object:Gem::Version
34
34
  version: 4.10.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - ! '>='
40
40
  - !ruby/object:Gem::Version
41
41
  version: 4.10.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: gli
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - '>='
46
+ - - ! '>='
47
47
  - !ruby/object:Gem::Version
48
48
  version: 2.8.0
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - ! '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: 2.8.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: highline
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - '>='
60
+ - - ! '>='
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - '>='
67
+ - - ! '>='
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: netrc
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '>='
74
+ - - ! '>='
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ! '>='
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: methadone
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - '>='
88
+ - - ! '>='
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - '>='
95
+ - - ! '>='
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: deep_merge
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - '>='
102
+ - - ! '>='
103
103
  - !ruby/object:Gem::Version
104
104
  version: '0'
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - '>='
109
+ - - ! '>='
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: cas_rest_client
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - '>='
116
+ - - ! '>='
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
119
  type: :runtime
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - '>='
123
+ - - ! '>='
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: rspec
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - '>='
130
+ - - ! '>='
131
131
  - !ruby/object:Gem::Version
132
132
  version: '2.14'
133
133
  - - <
@@ -137,7 +137,7 @@ dependencies:
137
137
  prerelease: false
138
138
  version_requirements: !ruby/object:Gem::Requirement
139
139
  requirements:
140
- - - '>='
140
+ - - ! '>='
141
141
  - !ruby/object:Gem::Version
142
142
  version: '2.14'
143
143
  - - <
@@ -147,28 +147,28 @@ dependencies:
147
147
  name: simplecov
148
148
  requirement: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - '>='
150
+ - - ! '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  type: :development
154
154
  prerelease: false
155
155
  version_requirements: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - '>='
157
+ - - ! '>='
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  - !ruby/object:Gem::Dependency
161
161
  name: aruba
162
162
  requirement: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - '>='
164
+ - - ! '>='
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  type: :development
168
168
  prerelease: false
169
169
  version_requirements: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - '>='
171
+ - - ! '>='
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  - !ruby/object:Gem::Dependency
@@ -302,12 +302,12 @@ require_paths:
302
302
  - lib
303
303
  required_ruby_version: !ruby/object:Gem::Requirement
304
304
  requirements:
305
- - - '>='
305
+ - - ! '>='
306
306
  - !ruby/object:Gem::Version
307
307
  version: '0'
308
308
  required_rubygems_version: !ruby/object:Gem::Requirement
309
309
  requirements:
310
- - - '>='
310
+ - - ! '>='
311
311
  - !ruby/object:Gem::Version
312
312
  version: '0'
313
313
  requirements: []