conjur-api 2.0.0 → 2.0.1

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.
@@ -15,14 +15,13 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Conjur::API::VERSION
17
17
 
18
- gem.add_runtime_dependency 'rest-client'
19
- gem.add_runtime_dependency 'slosilo'
20
- gem.add_runtime_dependency 'activesupport'
18
+ gem.add_dependency 'rest-client'
19
+ gem.add_dependency 'slosilo'
20
+ gem.add_dependency 'activesupport'
21
21
 
22
22
  gem.add_development_dependency 'rake'
23
23
  gem.add_development_dependency 'spork'
24
24
  gem.add_development_dependency 'rspec'
25
- gem.add_development_dependency 'vcr'
26
25
  gem.add_development_dependency 'webmock'
27
26
  gem.add_development_dependency 'ci_reporter'
28
27
  end
@@ -1,5 +1,5 @@
1
1
  module Conjur
2
2
  class API
3
- VERSION = "2.0.0"
3
+ VERSION = "2.0.1"
4
4
  end
5
5
  end
@@ -7,7 +7,6 @@ require 'conjur/log_source'
7
7
  require 'conjur/has_attributes'
8
8
  require 'conjur/has_identifier'
9
9
  require 'conjur/has_id'
10
- require 'conjur/das-api'
11
10
  require 'conjur/authn-api'
12
11
  require 'conjur/authz-api'
13
12
  require 'conjur/core-api'
@@ -17,7 +17,7 @@ module Conjur
17
17
  if Conjur.log
18
18
  Conjur.log << "Logging in #{username} via Basic authentication\n"
19
19
  end
20
- RestClient::Resource.new(Conjur::Authn::API.host, user: username, password: password)['/users/login'].get
20
+ RestClient::Resource.new(Conjur::Authn::API.host, user: username, password: password)['users/login'].get
21
21
  end
22
22
 
23
23
  # Perform login by CAS authentication.
@@ -34,7 +34,7 @@ module Conjur
34
34
  if Conjur.log
35
35
  Conjur.log << "Authenticating #{username}\n"
36
36
  end
37
- JSON::parse(RestClient::Resource.new(Conjur::Authn::API.host)["/users/#{path_escape username}/authenticate"].post password, content_type: 'text/plain').tap do |token|
37
+ JSON::parse(RestClient::Resource.new(Conjur::Authn::API.host)["users/#{path_escape username}/authenticate"].post password, content_type: 'text/plain').tap do |token|
38
38
  raise InvalidToken.new unless token_valid?(token)
39
39
  end
40
40
  end
@@ -60,7 +60,7 @@ module Conjur
60
60
  log do |logger|
61
61
  logger << "Creating authn user #{login}"
62
62
  end
63
- JSON.parse RestClient::Resource.new(Conjur::Authn::API.host, credentials)['/users'].post(options.merge(login: login))
63
+ JSON.parse RestClient::Resource.new(Conjur::Authn::API.host, credentials)['users'].post(options.merge(login: login))
64
64
  end
65
65
  end
66
66
  end
@@ -3,16 +3,11 @@ require 'conjur/group'
3
3
  module Conjur
4
4
  class API
5
5
  def create_group(id, options = {})
6
- log do |logger|
7
- logger << "Creating group "
8
- logger << id
9
- end
10
- resp = RestClient::Resource.new(Conjur::Core::API.host, credentials)['/groups'].post(options.merge(id: id))
11
- Group.new(resp.headers[:location], credentials)
6
+ standard_create Conjur::Core::API.host, :group, id, options
12
7
  end
13
8
 
14
9
  def group id
15
- Group.new(Conjur::Core::API.host)["/groups/#{path_escape id}"]
10
+ standard_show Conjur::Core::API.host, :group, id
16
11
  end
17
12
  end
18
13
  end
@@ -2,19 +2,6 @@ require 'conjur/host'
2
2
 
3
3
  module Conjur
4
4
  class API
5
- def create_host options
6
- log do |logger|
7
- logger << "Creating host"
8
- end
9
- resp = JSON.parse RestClient::Resource.new("#{Conjur::Core::API.host}/hosts", credentials).post(options)
10
- host(resp['id']).tap do |h|
11
- log do |logger|
12
- logger << "Created host #{h.id}"
13
- end
14
- h.attributes = resp
15
- end
16
- end
17
-
18
5
  class << self
19
6
  def enroll_host(url)
20
7
  if Conjur.log
@@ -30,8 +17,12 @@ module Conjur
30
17
  end
31
18
  end
32
19
 
20
+ def create_host options
21
+ standard_create Conjur::Core::API.host, :host, nil, options
22
+ end
23
+
33
24
  def host id
34
- Host.new("#{Conjur::Core::API.host}/hosts/#{path_escape id}", credentials)
25
+ standard_show Conjur::Core::API.host, :host, id
35
26
  end
36
27
  end
37
28
  end
@@ -4,15 +4,14 @@ module Conjur
4
4
  class API
5
5
  def create_role(role, options = {})
6
6
  log do |logger|
7
- logger << "Creating role "
8
- logger << role
7
+ logger << "Creating role #{account}/#{role}"
9
8
  end
10
- RestClient::Resource.new(Conjur::Authz::API.host, credentials)["/roles/#{path_escape role}"].put(options)
11
- Role.new(role, credentials)
9
+ RestClient::Resource.new(Conjur::Authz::API.host, credentials)["roles/#{path_escape role}"].put(options)
10
+ role(role)
12
11
  end
13
12
 
14
- def role identifier
15
- Role.new("#{Conjur::Authz::API.host}/roles/#{path_escape identifier}", credentials)
13
+ def role role
14
+ Role.new(Conjur::Authz::API.host, credentials)["roles/#{path_escape role}"]
16
15
  end
17
16
  end
18
17
  end
@@ -3,21 +3,11 @@ require 'conjur/secret'
3
3
  module Conjur
4
4
  class API
5
5
  def create_secret(value, options = {})
6
- log do |logger|
7
- logger << "Creating secret "
8
- logger << value
9
- end
10
- resp = RestClient::Resource.new(Conjur::Core::API.host, credentials)['/secrets'].post(options.merge(value: value))
11
- Secret.new(resp.headers[:location], credentials).tap do |secret|
12
- log do |logger|
13
- logger << "Created secret "
14
- logger << secret.id
15
- end
16
- end
6
+ standard_create Conjur::Core::API.host, :secret, nil, options.merge(value: value)
17
7
  end
18
8
 
19
9
  def secret id
20
- Secret.new("#{Conjur::Core::API.host}/secrets/#{path_escape id}", credentials)
10
+ standard_show Conjur::Core::API.host, :secret, id
21
11
  end
22
12
  end
23
13
  end
@@ -3,21 +3,11 @@ require 'conjur/user'
3
3
  module Conjur
4
4
  class API
5
5
  def create_user(login, options = {})
6
- log do |logger|
7
- logger << "Creating user "
8
- logger << login
9
- end
10
- resp = JSON.parse RestClient::Resource.new(Conjur::Core::API.host, credentials)['/users'].post(options.merge(login: login))
11
- user(resp['login']).tap do |u|
12
- log do |logger|
13
- logger << "Created user #{u.login}"
14
- end
15
- u.attributes = resp
16
- end
6
+ standard_create Conjur::Core::API.host, :user, nil, options.merge(login: login)
17
7
  end
18
8
 
19
9
  def user login
20
- User.new(Conjur::Core::API.host, credentials)["/users/#{path_escape login}"]
10
+ standard_show Conjur::Core::API.host, :user, login
21
11
  end
22
12
  end
23
13
  end
@@ -3,23 +3,11 @@ require 'conjur/variable'
3
3
  module Conjur
4
4
  class API
5
5
  def create_variable(mime_type, kind, options = {})
6
- log do |logger|
7
- logger << "Creating #{mime_type} variable #{kind}"
8
- if options
9
- logger << " with options #{options.inspect}"
10
- end
11
- end
12
- resp = RestClient::Resource.new(Conjur::Core::API.host, credentials)['variables'].post(options.merge(mime_type: mime_type, kind: kind))
13
- Variable.new(resp.headers[:location], credentials).tap do |variable|
14
- log do |logger|
15
- logger << "Created variable "
16
- logger << variable.id
17
- end
18
- end
6
+ standard_create Conjur::Core::API.host, :variable, nil, options.merge(mime_type: mime_type, kind: kind)
19
7
  end
20
8
 
21
9
  def variable id
22
- Variable.new("#{Conjur::Core::API.host}/variables/#{path_escape id}", credentials)
10
+ standard_show Conjur::Core::API.host, :variable, id
23
11
  end
24
12
  end
25
13
  end
@@ -6,11 +6,14 @@ require 'conjur/has_attributes'
6
6
  require 'conjur/escape'
7
7
  require 'conjur/log'
8
8
  require 'conjur/log_source'
9
+ require 'conjur/standard_methods'
10
+ require 'conjur/token_cache'
9
11
 
10
12
  module Conjur
11
13
  class API
12
14
  include Escape
13
15
  include LogSource
16
+ include StandardMethods
14
17
 
15
18
  class << self
16
19
  def new_from_key(username, api_key)
@@ -26,25 +29,29 @@ module Conjur
26
29
  @username = username
27
30
  @api_key = api_key
28
31
  @token = token
32
+ TokenCache.store(@token) if token
33
+
29
34
  raise "Expecting ( username and api_key ) or token" unless ( username && api_key ) || token
30
35
  end
31
36
 
32
- attr_reader :api_key, :username, :token
37
+ attr_reader :api_key, :username
33
38
 
34
39
  def username
35
- @username || token['data']
40
+ @username || @token['data']
36
41
  end
37
42
 
38
43
  def host
39
44
  self.class.host
40
45
  end
41
46
 
47
+ def token
48
+ TokenCache.fetch(username, api_key)
49
+ end
50
+
51
+ # Authenticate the username and api_key to obtain a request token.
52
+ # Tokens are cached by username for a short period of time.
42
53
  def credentials
43
- if token
44
- { headers: { authorization: "Token token=\"#{Base64.strict_encode64 token.to_json}\"" }, username: username }
45
- else
46
- { user: username, password: api_key }
47
- end
54
+ { headers: { authorization: "Token token=\"#{Base64.strict_encode64 token.to_json}\"" }, username: username }
48
55
  end
49
56
  end
50
57
  end
@@ -3,6 +3,7 @@ module Conjur
3
3
  include ActsAsResource
4
4
  include ActsAsRole
5
5
  include HasId
6
+ include HasAttributes
6
7
 
7
8
  def roleid
8
9
  "group:#{id}"
@@ -23,7 +23,7 @@ module Conjur
23
23
 
24
24
  # Lists roles that have a specified permission on the resource.
25
25
  def permitted_roles(permission, options = {})
26
- JSON.parse RestClient::Resource.new(Conjur::Authz::API.host, self.options)["/roles/allowed_to/#{permission}/#{path_escape kind}/#{path_escape identifier}"].get(options)
26
+ JSON.parse RestClient::Resource.new(Conjur::Authz::API.host, self.options)["roles/allowed_to/#{permission}/#{path_escape kind}/#{path_escape identifier}"].get(options)
27
27
  end
28
28
 
29
29
  # Changes the owner of a resource
@@ -14,7 +14,7 @@ module Conjur
14
14
  end
15
15
 
16
16
  def all(options = {})
17
- JSON.parse(self["/all"].get(options)).collect do |id|
17
+ JSON.parse(self["all"].get(options)).collect do |id|
18
18
  Role.new("#{Conjur::Authz::API.host}/roles/#{path_escape id}", self.options)
19
19
  end
20
20
  end
@@ -29,7 +29,7 @@ module Conjur
29
29
  logger << " and extended options #{options.to_json}"
30
30
  end
31
31
  end
32
- self["/members/#{path_escape member}?admin_option=#{query_escape admin_option}"].put(options)
32
+ self["members/#{path_escape member}?admin_option=#{query_escape admin_option}"].put(options)
33
33
  end
34
34
 
35
35
  def revoke_from(member, options = {})
@@ -39,11 +39,11 @@ module Conjur
39
39
  logger << " with options #{options.to_json}"
40
40
  end
41
41
  end
42
- self["/members/#{path_escape member}"].delete(options)
42
+ self["members/#{path_escape member}"].delete(options)
43
43
  end
44
44
 
45
45
  def permitted?(resource_kind, resource_id, privilege, options = {})
46
- self["/permitted?resource_kind=#{query_escape resource_kind}&resource_id=#{query_escape resource_id}&privilege=#{query_escape privilege}"].get(options)
46
+ self["permitted?resource_kind=#{query_escape resource_kind}&resource_id=#{query_escape resource_id}&privilege=#{query_escape privilege}"].get(options)
47
47
  true
48
48
  rescue RestClient::ResourceNotFound
49
49
  false
@@ -6,7 +6,7 @@ module Conjur
6
6
  include HasId
7
7
 
8
8
  def value
9
- self['/value'].get.body
9
+ self['value'].get.body
10
10
  end
11
11
  end
12
12
  end
@@ -0,0 +1,39 @@
1
+ module Conjur
2
+ module StandardMethods
3
+ require 'active_support/core_ext'
4
+
5
+ protected
6
+
7
+ def standard_create(host, type, id = nil, options = nil)
8
+ log do |logger|
9
+ logger << "Creating #{type} #{id}"
10
+ unless options.blank?
11
+ logger << " with options #{options.inspect}"
12
+ end
13
+ end
14
+ options ||= {}
15
+ options[:id] = id if id
16
+ resp = RestClient::Resource.new(host, credentials)[type.to_s.pluralize].post(options)
17
+ "Conjur::#{type.to_s.classify}".constantize.new(resp.headers[:location], credentials).tap do |obj|
18
+ obj.attributes = JSON.parse(resp.body)
19
+ if id.blank? && obj.respond_to?(:id)
20
+ log do |logger|
21
+ logger << "Created #{type} #{obj.id}"
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ def standard_list(host, type, options)
28
+ JSON.parse(RestClient::Resource.new(host, credentials)[type.to_s.pluralize].get(options)).collect do |json|
29
+ send(type, json['id']).tap do |obj|
30
+ obj.attributes = json
31
+ end
32
+ end
33
+ end
34
+
35
+ def standard_show(host, type, id)
36
+ "Conjur::#{type.to_s.classify}".constantize.new(host, credentials)[ [type.to_s.pluralize, path_escape(id)].join('/') ]
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,40 @@
1
+ module Conjur
2
+ # Cache API tokens. The cache key is the authentication hostname and the username.
3
+ # Tokens are cached for a short period of time; long enough to save on server trips
4
+ # but not long enough to worry about tokens expiring.
5
+ class TokenCache
6
+ @@tokens = Hash.new
7
+
8
+ class << self
9
+ def fetch(username, api_key)
10
+ key = [ Conjur::Authn::API.host, username ]
11
+ token = @@tokens[key]
12
+ if token.nil? || expired?(token)
13
+ if username && api_key
14
+ store(token = Conjur::API.authenticate(username, api_key))
15
+ elsif token.nil?
16
+ raise "Token is nil and no api_key is available to create it"
17
+ else
18
+ $stderr.puts "Token is expired and no api_key is available to renew it"
19
+ end
20
+ end
21
+ token
22
+ end
23
+
24
+ def store(token)
25
+ username = token['data']
26
+ raise "No data in token" unless username
27
+ raise "Expecting string username in token" unless username.is_a?(String)
28
+ key = [ Conjur::Authn::API.host, username ]
29
+ @@tokens[key] = token
30
+ end
31
+
32
+ protected
33
+
34
+ # Expire tokens after 1 minute, even though they are valid for longer.
35
+ def expired?(token, expiry = 1 * 60)
36
+ Time.parse(token["timestamp"]) + expiry < Time.now
37
+ end
38
+ end
39
+ end
40
+ end
@@ -60,11 +60,6 @@ describe Conjur::API do
60
60
  let(:api) { Conjur::Authz::API }
61
61
  it_should_behave_like "API endpoint"
62
62
  end
63
- context "of das service" do
64
- let(:port_offset) { 200 }
65
- let(:api) { Conjur::DAS::API }
66
- it_should_behave_like "API endpoint"
67
- end
68
63
  context "of core service" do
69
64
  let(:port_offset) { 300 }
70
65
  let(:api) { Conjur::Core::API }
@@ -83,16 +78,37 @@ describe Conjur::API do
83
78
  end
84
79
  context "credential handling" do
85
80
  let(:login) { "bob" }
81
+ let(:token) { { 'data' => login, 'timestamp' => (Time.now + elapsed ).to_s } }
82
+ let(:elapsed) { 0 }
83
+ before {
84
+ Conjur::TokenCache.class_variable_set("@@tokens", Hash.new)
85
+ }
86
86
  subject { api }
87
87
  context "from token" do
88
- let(:token) { { 'data' => login } }
89
88
  let(:api) { Conjur::API.new_from_token(token) }
90
- its(:credentials) { should == { headers: { authorization: "Token token=\"#{Base64.strict_encode64(token.to_json)}\"" }, username: login } }
89
+ context "expired" do
90
+ before {
91
+ Conjur::TokenCache.stub(:expired?).and_return true
92
+ }
93
+ it "should raise an error" do
94
+ $stderr.should_receive(:puts).with("Token is expired and no api_key is available to renew it")
95
+
96
+ api.credentials
97
+ end
98
+ end
99
+ context "not expired" do
100
+ its(:credentials) { should == { headers: { authorization: "Token token=\"#{Base64.strict_encode64(token.to_json)}\"" }, username: login } }
101
+ end
91
102
  end
92
103
  context "from api key" do
93
104
  let(:api_key) { "theapikey" }
94
105
  let(:api) { Conjur::API.new_from_key(login, api_key) }
95
- its(:credentials) { should == { user: login, password: api_key } }
106
+ it("should authenticate to get a token") do
107
+ Conjur::API.should_receive(:authenticate).with(login, api_key).and_return token
108
+
109
+ api.instance_variable_get("@token").should == nil
110
+ api.credentials.should == { headers: { authorization: "Token token=\"#{Base64.strict_encode64(token.to_json)}\"" }, username: login }
111
+ end
96
112
  end
97
113
  end
98
114
  end
@@ -3,32 +3,6 @@ require 'spec_helper'
3
3
  require 'conjur/api'
4
4
 
5
5
  describe Conjur::Resource do
6
- let(:user) { 'admin' }
7
- let(:api_key) { '^6feWZpr' }
8
-
9
- def conjur_api
10
- Conjur::API.new_from_key(user, api_key)
11
- end
12
-
13
- def self.it_creates_with code
14
- it "should create with status #{code}" do
15
- resource = conjur_api.resource("spec", identifier)
16
- resource.create
17
- resource.should exist
18
- conjur_api.resource("spec", identifier).kind.should == "spec"
19
- conjur_api.resource("spec", identifier).identifier.should == identifier
20
- end
21
- end
22
-
23
- def self.it_fails_with code
24
- it "should fail with status #{code}" do
25
- expect { conjur_api.resource("spec", identifier).create }.to raise_error { |error|
26
- error.should be_a(RestClient::Exception)
27
- error.http_code.should == code
28
- }
29
- end
30
- end
31
-
32
6
  let(:uuid) { "ddd1f59a-494d-48fb-b045-0374c4a6eef9" }
33
7
 
34
8
  context "identifier" do
@@ -60,25 +34,4 @@ describe Conjur::Resource do
60
34
  end
61
35
  end
62
36
  end
63
- context "#create" do
64
- context "with uuid identifier" do
65
- use_vcr_cassette
66
- let(:identifier) { uuid }
67
- it_creates_with 204
68
- it "is findable" do
69
- conjur_api.resource("spec", identifier).create
70
- conjur_api.resource("spec", identifier).should exist
71
- end
72
- end
73
- context "with path-like identifier" do
74
- use_vcr_cassette
75
- let(:identifier) { [ uuid, "xxx" ].join("/") }
76
- it_creates_with 204
77
- end
78
- context "with un-encoded path-like identifier" do
79
- use_vcr_cassette
80
- let(:identifier) { [ uuid, "+?!!?+/xxx" ].join("/") }
81
- it_creates_with 204
82
- end
83
- end
84
37
  end
@@ -11,19 +11,11 @@ Spork.prefork do
11
11
  # Allows loading of an environment config based on the environment
12
12
  require 'rspec'
13
13
  require 'webmock/rspec'
14
- require 'vcr'
15
14
  require 'securerandom'
16
15
 
17
16
  # Uncomment the next line to use webrat's matchers
18
17
  #require 'webrat/integrations/rspec-rails'
19
18
 
20
- VCR.configure do |c|
21
- c.cassette_library_dir = 'spec/vcr_cassettes'
22
- c.hook_into :webmock
23
- c.default_cassette_options = { :record => :new_episodes }
24
- # c.ignore_localhost = true
25
- end
26
-
27
19
  RSpec.configure do |config|
28
20
  # If you're not using ActiveRecord you should remove these
29
21
  # lines, delete config/database.yml and disable :active_record
@@ -62,8 +54,6 @@ Spork.prefork do
62
54
  # == Notes
63
55
  #
64
56
  # For more information take a look at Spec::Runner::Configuration and Spec::Runner
65
-
66
- config.extend VCR::RSpec::Macros
67
57
  end
68
58
  end
69
59
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conjur-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-03-12 00:00:00.000000000 Z
13
+ date: 2013-03-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
@@ -108,22 +108,6 @@ dependencies:
108
108
  - - ! '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: vcr
113
- requirement: !ruby/object:Gem::Requirement
114
- none: false
115
- requirements:
116
- - - ! '>='
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- none: false
123
- requirements:
124
- - - ! '>='
125
- - !ruby/object:Gem::Version
126
- version: '0'
127
111
  - !ruby/object:Gem::Dependency
128
112
  name: webmock
129
113
  requirement: !ruby/object:Gem::Requirement
@@ -209,10 +193,11 @@ files:
209
193
  - lib/conjur/resource.rb
210
194
  - lib/conjur/role.rb
211
195
  - lib/conjur/secret.rb
196
+ - lib/conjur/standard_methods.rb
197
+ - lib/conjur/token_cache.rb
212
198
  - lib/conjur/user.rb
213
199
  - lib/conjur/variable.rb
214
200
  - spec/lib/api_spec.rb
215
- - spec/lib/das_spec.rb
216
201
  - spec/lib/resource_spec.rb
217
202
  - spec/lib/role_spec.rb
218
203
  - spec/lib/user_spec.rb
@@ -234,7 +219,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
234
219
  version: '0'
235
220
  segments:
236
221
  - 0
237
- hash: 3213033468970777555
222
+ hash: 3809342943954328390
238
223
  required_rubygems_version: !ruby/object:Gem::Requirement
239
224
  none: false
240
225
  requirements:
@@ -243,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
243
228
  version: '0'
244
229
  segments:
245
230
  - 0
246
- hash: 3213033468970777555
231
+ hash: 3809342943954328390
247
232
  requirements: []
248
233
  rubyforge_project:
249
234
  rubygems_version: 1.8.24
@@ -256,7 +241,6 @@ test_files:
256
241
  - features/ping_as_server.feature
257
242
  - features/ping_as_user.feature
258
243
  - spec/lib/api_spec.rb
259
- - spec/lib/das_spec.rb
260
244
  - spec/lib/resource_spec.rb
261
245
  - spec/lib/role_spec.rb
262
246
  - spec/lib/user_spec.rb
@@ -1,33 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'conjur/api'
4
-
5
- describe Conjur::API do
6
- context "data_access_service_url" do
7
- let(:account) { "the-account" }
8
- let(:path) { "upload" }
9
- subject { Conjur::API.data_access_service_url(account, path, params) }
10
- context "to test environment" do
11
- before(:each) do
12
- Conjur.stub(:env).and_return "development"
13
- end
14
- context "with empty params" do
15
- let(:params) { {} }
16
- it { should == "http://localhost:5200/data/the-account/inscitiv/upload" }
17
- end
18
- context "with params" do
19
- let(:params) { { "foo" => "b/r" } }
20
- it { should == "http://localhost:5200/data/the-account/inscitiv/upload?foo=b%2Fr" }
21
- end
22
- end
23
- context "to production environment" do
24
- before(:each) do
25
- Conjur.stub(:env).and_return "production"
26
- end
27
- context "with empty params" do
28
- let(:params) { {} }
29
- it { should == "https://das-v2-conjur.herokuapp.com/data/the-account/inscitiv/upload" }
30
- end
31
- end
32
- end
33
- end