conjur-api 2.0.0 → 2.0.1

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