conjur-cli 4.13.1 → 4.14.0

Sign up to get free protection for your applications and to get access to all the features.
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: []