jfoundry 0.1.0.pre

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.
Files changed (66) hide show
  1. data/LICENSE +746 -0
  2. data/Rakefile +10 -0
  3. data/lib/cc_api_stub/applications.rb +53 -0
  4. data/lib/cc_api_stub/domains.rb +32 -0
  5. data/lib/cc_api_stub/frameworks.rb +22 -0
  6. data/lib/cc_api_stub/helper.rb +139 -0
  7. data/lib/cc_api_stub/login.rb +21 -0
  8. data/lib/cc_api_stub/organization_users.rb +21 -0
  9. data/lib/cc_api_stub/organizations.rb +70 -0
  10. data/lib/cc_api_stub/routes.rb +26 -0
  11. data/lib/cc_api_stub/runtimes.rb +22 -0
  12. data/lib/cc_api_stub/service_bindings.rb +22 -0
  13. data/lib/cc_api_stub/service_instances.rb +22 -0
  14. data/lib/cc_api_stub/services.rb +21 -0
  15. data/lib/cc_api_stub/spaces.rb +49 -0
  16. data/lib/cc_api_stub/users.rb +85 -0
  17. data/lib/cc_api_stub.rb +16 -0
  18. data/lib/jfoundry/auth_token.rb +63 -0
  19. data/lib/jfoundry/baseclient.rb +177 -0
  20. data/lib/jfoundry/chatty_hash.rb +46 -0
  21. data/lib/jfoundry/client.rb +39 -0
  22. data/lib/jfoundry/concerns/proxy_options.rb +17 -0
  23. data/lib/jfoundry/errors.rb +163 -0
  24. data/lib/jfoundry/rest_client.rb +331 -0
  25. data/lib/jfoundry/signature/version.rb +27 -0
  26. data/lib/jfoundry/signer.rb +13 -0
  27. data/lib/jfoundry/test_support.rb +3 -0
  28. data/lib/jfoundry/timer.rb +13 -0
  29. data/lib/jfoundry/trace_helpers.rb +64 -0
  30. data/lib/jfoundry/upload_helpers.rb +222 -0
  31. data/lib/jfoundry/v2/app.rb +357 -0
  32. data/lib/jfoundry/v2/app_event.rb +13 -0
  33. data/lib/jfoundry/v2/base.rb +92 -0
  34. data/lib/jfoundry/v2/client.rb +78 -0
  35. data/lib/jfoundry/v2/domain.rb +20 -0
  36. data/lib/jfoundry/v2/managed_service_instance.rb +13 -0
  37. data/lib/jfoundry/v2/model.rb +209 -0
  38. data/lib/jfoundry/v2/model_magic/attribute.rb +49 -0
  39. data/lib/jfoundry/v2/model_magic/client_extensions.rb +170 -0
  40. data/lib/jfoundry/v2/model_magic/has_summary.rb +49 -0
  41. data/lib/jfoundry/v2/model_magic/queryable_by.rb +39 -0
  42. data/lib/jfoundry/v2/model_magic/to_many.rb +138 -0
  43. data/lib/jfoundry/v2/model_magic/to_one.rb +81 -0
  44. data/lib/jfoundry/v2/model_magic.rb +93 -0
  45. data/lib/jfoundry/v2/organization.rb +22 -0
  46. data/lib/jfoundry/v2/quota_definition.rb +12 -0
  47. data/lib/jfoundry/v2/route.rb +25 -0
  48. data/lib/jfoundry/v2/service.rb +20 -0
  49. data/lib/jfoundry/v2/service_auth_token.rb +10 -0
  50. data/lib/jfoundry/v2/service_binding.rb +10 -0
  51. data/lib/jfoundry/v2/service_broker.rb +11 -0
  52. data/lib/jfoundry/v2/service_instance.rb +13 -0
  53. data/lib/jfoundry/v2/service_plan.rb +13 -0
  54. data/lib/jfoundry/v2/space.rb +18 -0
  55. data/lib/jfoundry/v2/stack.rb +10 -0
  56. data/lib/jfoundry/v2/user.rb +104 -0
  57. data/lib/jfoundry/v2/user_provided_service_instance.rb +7 -0
  58. data/lib/jfoundry/validator.rb +41 -0
  59. data/lib/jfoundry/version.rb +4 -0
  60. data/lib/jfoundry/zip.rb +56 -0
  61. data/lib/jfoundry.rb +5 -0
  62. data/lib/tasks/gem_release.rake +42 -0
  63. data/vendor/errors/README.md +3 -0
  64. data/vendor/errors/v1.yml +189 -0
  65. data/vendor/errors/v2.yml +470 -0
  66. metadata +269 -0
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "rake"
2
+ require "rspec/core/rake_task"
3
+ Dir.glob("lib/tasks/**/*").sort.each { |ext| load(ext) }
4
+
5
+ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
6
+ require "jfoundry/version"
7
+
8
+
9
+ RSpec::Core::RakeTask.new(:spec)
10
+ task :default => :spec
@@ -0,0 +1,53 @@
1
+ module CcApiStub
2
+ module Applications
3
+ extend Helper
4
+
5
+ class << self
6
+ def succeed_to_load(options={})
7
+ response_body = Helper.load_fixtures(options.delete(:fixture) || "fake_cc_#{object_name}", options)
8
+ stub_get(object_endpoint(options[:id]), {}, response(200, response_body))
9
+ end
10
+
11
+ def succeed_to_create
12
+ response_body = Helper.load_fixtures("fake_cc_created_application")
13
+ stub_post(%r{/v2/apps$}, nil, response(201, response_body))
14
+ end
15
+
16
+ def succeed_to_update(options={})
17
+ response_body = Helper.load_fixtures(:fake_cc_application, options)
18
+ stub_put(object_endpoint(options[:id]), nil, response(200, response_body))
19
+ end
20
+
21
+ def succeed_to_map_route
22
+ stub_put(%r{/v2/apps/[^/]+/routes/[^/]+$}, {}, response(201, {}))
23
+ end
24
+
25
+ def succeed_to_load_stats
26
+ response_body = Helper.load_fixtures("fake_cc_stats")
27
+ stub_get(%r{/v2/apps/[^/]+/stats$}, {}, response(200, response_body))
28
+ end
29
+
30
+ def summary_fixture
31
+ Helper.load_fixtures("fake_cc_application_summary")
32
+ end
33
+
34
+ def succeed_to_load_summary(options={})
35
+ response = summary_fixture
36
+ response["state"] = options[:state] if options.has_key?(:state)
37
+ response["routes"] = options[:routes] if options.has_key?(:routes)
38
+ stub_get(%r{/v2/apps/[^/]+/summary$}, {}, response(200, response))
39
+ end
40
+
41
+ def succeed_to_load_service_bindings
42
+ response_body = Helper.load_fixtures("fake_cc_service_bindings")
43
+ stub_get(%r{/v2/apps/[^/]+/service_bindings/?(?:\?.+)?$}, {}, response(200, response_body))
44
+ end
45
+
46
+ private
47
+
48
+ def object_endpoint(id = nil)
49
+ %r{/v2/apps/#{id}[^/]+$}
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,32 @@
1
+ module CcApiStub
2
+ module Domains
3
+ extend Helper
4
+
5
+ class << self
6
+ def succeed_to_create
7
+ response_body = Helper.load_fixtures("fake_cc_created_domain")
8
+ stub_post(%r{/v2/domains/?(\?.+)?$}, {}, response(201, response_body))
9
+ end
10
+
11
+ def succeed_to_delete
12
+ stub_delete(%r{/v2/domains/[^/\?]+$}, {}, response(200))
13
+ end
14
+
15
+ def succeed_to_load_spaces
16
+ response_body = Helper.load_fixtures("fake_cc_domain_spaces")
17
+ stub_get(%r{/v2/domains/[^/]+/spaces.*$}, {}, response(200, response_body))
18
+ end
19
+
20
+ def succeed_to_add_space
21
+ response_body = Helper.load_fixtures("fake_cc_created_domain")
22
+ stub_put(%r{/v2/domains/[^/]+/spaces/[^/]+$}, {}, response(201, response_body))
23
+ end
24
+
25
+ private
26
+
27
+ def object_endpoint(id = nil)
28
+ %r{/v2/domains/#{id}[^/]+$}
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,22 @@
1
+ module CcApiStub
2
+ module Frameworks
3
+ extend Helper
4
+
5
+ class << self
6
+ def succeed_to_load
7
+ response_body = Helper.load_fixtures("fake_cc_frameworks")
8
+ stub_get(collection_endpoint, {}, response(200, response_body))
9
+ end
10
+
11
+ def fail_to_load
12
+ stub_get(collection_endpoint, {}, response(500))
13
+ end
14
+
15
+ private
16
+
17
+ def collection_endpoint
18
+ %r{/v2/frameworks\?inline-relations-depth=1$}
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,139 @@
1
+ require 'json'
2
+
3
+ module CcApiStub
4
+ module Helper
5
+ class << self
6
+ def response(code, body=nil)
7
+ {
8
+ :status => code,
9
+ :headers => {},
10
+ :body => body.nil? ? "--garbage--" : body.to_json
11
+ }
12
+ end
13
+
14
+ def fail_request(method = :any, code = 500, response_body = {}, path = /#{CcApiStub::Helper.host}/)
15
+ WebMock::API.stub_request(method, path).to_return(response(code, response_body))
16
+ end
17
+
18
+ def host=(host)
19
+ @@host = host
20
+ end
21
+
22
+ def host
23
+ @@host or raise 'No host set'
24
+ end
25
+
26
+ def fail_with_error(method, error_attributes=nil)
27
+ WebMock::API.
28
+ stub_request(method, /#{CcApiStub::Helper.host}/).
29
+ to_return(response(400, error_attributes))
30
+ end
31
+
32
+ def load_fixtures(fixture_name_or_path, options = {})
33
+ path = if options.delete(:use_local_fixture)
34
+ fixture_name_or_path
35
+ else
36
+ File.join(File.dirname(__FILE__), "..", "..", "spec/fixtures/#{fixture_name_or_path.to_s}.json")
37
+ end
38
+ JSON.parse(File.read(path)).tap do |fixture|
39
+ fixture["entity"].merge!(options.stringify_keys) if options.any?
40
+ end
41
+ end
42
+ end
43
+
44
+ def stub_get(*args)
45
+ stub_request(:get, *args)
46
+ end
47
+
48
+ def stub_post(*args)
49
+ stub_request(:post, *args)
50
+ end
51
+
52
+ def stub_put(*args)
53
+ stub_request(:put, *args)
54
+ end
55
+
56
+ def stub_delete(*args)
57
+ stub_request(:delete, *args)
58
+ end
59
+
60
+ def stub_request(method, path, params = nil, response = nil)
61
+ stub = WebMock::API.stub_request(method, path)
62
+ stub.to_return(response) if response
63
+ stub.with(params) if params
64
+ stub
65
+ end
66
+
67
+ def object_name
68
+ name.demodulize.underscore.singularize
69
+ end
70
+
71
+ def find_fixture(fixture_name)
72
+ begin
73
+ Helper.load_fixtures("fake_#{fixture_name}")
74
+ rescue
75
+ Helper.load_fixtures("fake_organization_#{fixture_name}")
76
+ end
77
+ end
78
+
79
+ def object_class
80
+ begin
81
+ object_name.camelcase.constantize
82
+ rescue
83
+ "Organization::#{object_name.camelcase}".constantize
84
+ rescue
85
+ "User::#{object_name.camelcase}".constantize
86
+ end
87
+ end
88
+
89
+ def response(code, body=nil)
90
+ CcApiStub::Helper.response(code, body)
91
+ end
92
+
93
+ def succeed_to_load(options={})
94
+ response_body = options[:response] || CcApiStub::Helper.load_fixtures(options.delete(:fixture) || "fake_cc_#{object_name}", options)
95
+ stub_get(object_endpoint(options[:id]), {}, response(200, response_body))
96
+ end
97
+
98
+ def fail_to_load(options = {})
99
+ stub_get(object_endpoint(options[:id]), {}, response(500))
100
+ end
101
+
102
+ def succeed_to_load_many(options={})
103
+ response_body = options[:response] || CcApiStub::Helper.load_fixtures(options.delete(:fixture) || "fake_cc_#{object_name.pluralize}", options)
104
+ stub_get(collection_endpoint, {}, response(200, response_body))
105
+ end
106
+
107
+ def succeed_to_load_empty(options = {})
108
+ root = options[:root] || object_name.pluralize
109
+ stub_get(collection_endpoint, {}, response(200, {root => [], "pagination" => {}}))
110
+ end
111
+
112
+ def fail_to_load_many
113
+ stub_get(collection_endpoint, {}, response(500))
114
+ end
115
+
116
+ def succeed_to_create
117
+ response_body = {object_name.to_sym => {:id => "#{object_name.gsub("_", "-")}-id-1"}}
118
+ stub_post(collection_endpoint, {}, response(201, response_body))
119
+ end
120
+
121
+ def succeed_to_update(options = {})
122
+ stub_put(object_endpoint(options[:id]), nil, response(200, {}))
123
+ end
124
+
125
+ def fail_to_update(options = {})
126
+ stub_put(object_endpoint(options[:id]), nil, response(500, {}))
127
+ end
128
+
129
+ def succeed_to_delete(options = {})
130
+ stub_delete(object_endpoint(options[:id]), nil, response(200))
131
+ end
132
+
133
+ alias_method :succeed_to_leave, :succeed_to_delete
134
+
135
+ def fixture_prefix
136
+ "_cc"
137
+ end
138
+ end
139
+ end
@@ -0,0 +1,21 @@
1
+ module CcApiStub
2
+ module Login
3
+ class << self
4
+ def succeeds_to_find_uaa(domain="http://some-other-random-domain.com:8181")
5
+ WebMock::API.stub_request(:get, "#{domain}/info").
6
+ to_return(
7
+ :status => 200,
8
+ :body => "{\"token_endpoint\":\"https://uaa.localhost\"}"
9
+ )
10
+ end
11
+
12
+ def succeeds_to_login_as_admin
13
+ WebMock::API.stub_request(:post, %r{uaa.localhost/oauth/authorize}).
14
+ to_return(
15
+ :status => 302,
16
+ :headers => {"Location" => "https://uaa.localhost/redirect/cf#access_token=sre-admin-access-token&token_type=bearer"}
17
+ )
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module CcApiStub
2
+ module OrganizationUsers
3
+ extend Helper
4
+
5
+ class << self
6
+ def succeed_to_delete(options = {})
7
+ stub_delete(object_endpoint(options[:id]), {}, response(200, ""))
8
+ end
9
+
10
+ def fail_to_delete(options = {})
11
+ stub_delete(object_endpoint(options[:id]), {}, response(500))
12
+ end
13
+
14
+ private
15
+
16
+ def object_endpoint(id = nil)
17
+ %r{/v2/organizations/[^/]+/users/#{id}[^/]+$}
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,70 @@
1
+ module CcApiStub
2
+ module Organizations
3
+ extend Helper
4
+
5
+ class << self
6
+ def succeed_to_create
7
+ response_body = Helper.load_fixtures("fake_cc_created_organization")
8
+ stub_post(collection_endpoint, {}, response(201, response_body))
9
+ end
10
+
11
+ def summary_fixture
12
+ Helper.load_fixtures("fake_cc_organization_summary")
13
+ end
14
+
15
+ def fail_to_find(org_id)
16
+ stub_get(%r{/v2/organizations/#{org_id}}, {}, response(404, {:code => 30003, :description => "The organization could not be found"}))
17
+ end
18
+
19
+ def succeed_to_load_summary(options={})
20
+ response_body = summary_fixture
21
+ response_body["spaces"] = [] if options[:no_spaces]
22
+ stub_get(%r{/v2/organizations/[^/]+/summary$}, {}, response(200, response_body))
23
+ end
24
+
25
+ def succeed_to_search(name)
26
+ response_body = Helper.load_fixtures("fake_cc_organization_search")
27
+ stub_get(%r{/v2/organizations\?inline-relations-depth=1&q=name:#{name}$}, {}, response(200, response_body))
28
+ end
29
+
30
+ def succeed_to_search_none
31
+ response_body = Helper.load_fixtures("fake_cc_empty_search")
32
+ stub_get(%r{/v2/organizations\?inline-relations-depth=1&q=name:.*$}, {}, response(200, response_body))
33
+ end
34
+
35
+ def domains_fixture
36
+ Helper.load_fixtures("fake_cc_organization_domains")
37
+ end
38
+
39
+ def domain_fixture_hash
40
+ MultiJson.load(domains_fixture["resources"].first.to_json, :symbolize_keys => true)
41
+ end
42
+
43
+ def succeed_to_load_domains
44
+ stub_get(%r{/v2/organizations/[^/]+/domains\?inline-relations-depth=1}, {}, response(200, domains_fixture))
45
+ end
46
+
47
+ def users_fixture
48
+ Helper.load_fixtures("fake_cc_organization_users")
49
+ end
50
+
51
+ def user_fixture_hash
52
+ MultiJson.load(users_fixture["resources"].first.to_json, :symbolize_keys => true)
53
+ end
54
+
55
+ def succeed_to_load_users
56
+ stub_get(%r{/v2/organizations/[^\/]+/users\?inline-relations-depth=1}, {}, response(200, users_fixture))
57
+ end
58
+
59
+ private
60
+
61
+ def object_endpoint(id = nil)
62
+ %r{/v2/organizations/#{id}[^/]+$}
63
+ end
64
+
65
+ def collection_endpoint
66
+ %r{/v2/organizations\/?(\?.+)?$}
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,26 @@
1
+ module CcApiStub
2
+ module Routes
3
+ extend Helper
4
+
5
+ class << self
6
+ def succeed_to_load_none
7
+ stub_get(collection_endpoint, {}, response(200, {:resources => []}))
8
+ end
9
+
10
+ def succeed_to_create
11
+ response_body = Helper.load_fixtures("fake_cc_created_route")
12
+ stub_post(collection_endpoint, {}, response(201, response_body))
13
+ end
14
+
15
+ private
16
+
17
+ def collection_endpoint
18
+ %r{/v2/routes/?.*$}
19
+ end
20
+
21
+ def object_endpoint(id = nil)
22
+ %r{/v2/routes/#{id}[^/]+$}
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,22 @@
1
+ module CcApiStub
2
+ module Runtimes
3
+ extend Helper
4
+
5
+ class << self
6
+ def succeed_to_load
7
+ response_body = Helper.load_fixtures("fake_cc_runtimes")
8
+ stub_get(collection_endpoint, {}, response(200, response_body))
9
+ end
10
+
11
+ def fail_to_load
12
+ stub_get(collection_endpoint, {}, response(500))
13
+ end
14
+
15
+ private
16
+
17
+ def collection_endpoint
18
+ %r{/v2/runtimes\?inline-relations-depth=1$}
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ module CcApiStub
2
+ module ServiceBindings
3
+ extend Helper
4
+
5
+ class << self
6
+ def succeed_to_create
7
+ response_body = Helper.load_fixtures("fake_cc_service_binding")
8
+ stub_post(collection_endpoint, {}, response(201, response_body))
9
+ end
10
+
11
+ private
12
+
13
+ def object_endpoint(id = nil)
14
+ %r{/v2/service_bindings/#{id}[^/]+$}
15
+ end
16
+
17
+ def collection_endpoint
18
+ %r{/v2/service_bindings$}
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ module CcApiStub
2
+ module ServiceInstances
3
+ extend Helper
4
+
5
+ class << self
6
+ def succeed_to_create
7
+ response_body = Helper.load_fixtures("fake_cc_created_service_instance")
8
+ stub_post(collection_endpoint, {}, response(201, response_body))
9
+ end
10
+
11
+ private
12
+
13
+ def object_endpoint(id = nil)
14
+ %r{/v2/service_instances/#{id}[^/]+$}
15
+ end
16
+
17
+ def collection_endpoint
18
+ %r{/v2/service_instances$}
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ module CcApiStub
2
+ module Services
3
+ extend Helper
4
+
5
+ class << self
6
+ def service_fixture_hash
7
+ MultiJson.load(services_fixture["resources"].first.to_json, :symbolize_keys => true)
8
+ end
9
+
10
+ private
11
+
12
+ def collection_endpoint
13
+ %r{/v2/services\?inline-relations-depth=1}
14
+ end
15
+
16
+ def services_fixture
17
+ Helper.load_fixtures("fake_cc_services")
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,49 @@
1
+ module CcApiStub
2
+ module Spaces
3
+ extend Helper
4
+
5
+ class << self
6
+ def succeed_to_load(options={})
7
+ response_body = Helper.load_fixtures(options.delete(:fixture) || "fake_cc_#{object_name}", options)
8
+ stub_get(object_endpoint(options[:id]), {}, response(200, response_body))
9
+ end
10
+
11
+ def succeed_to_create
12
+ response_body = Helper.load_fixtures("fake_cc_created_space")
13
+ stub_post(collection_endpoint, {}, response(201, response_body))
14
+ end
15
+
16
+ def summary_fixture
17
+ Helper.load_fixtures("fake_cc_space_summary")
18
+ end
19
+
20
+ def succeed_to_load_summary(options={})
21
+ response_body = summary_fixture
22
+ response_body["services"] = [] if options.delete(:no_services)
23
+ stub_get(%r{/v2/spaces/[^/]+/summary$}, {}, response(200, response_body))
24
+ end
25
+
26
+ def space_fixture_hash
27
+ {
28
+ :metadata => {
29
+ :guid => "space-id-1",
30
+ :url => "/v2/spaces/space-id-1"
31
+ },
32
+ :entity => {
33
+ :name => "space-name-1"
34
+ }
35
+ }
36
+ end
37
+
38
+ private
39
+
40
+ def collection_endpoint
41
+ %r{/v2/spaces$}
42
+ end
43
+
44
+ def object_endpoint(id = nil)
45
+ %r{/v2/spaces/#{id}[^/]+$}
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,85 @@
1
+ module CcApiStub
2
+ module Users
3
+ extend Helper
4
+
5
+ class << self
6
+ def succeed_to_load(options={})
7
+ response_body = Helper.load_fixtures(options[:fixture] || "fake_cc_user")
8
+ response_body["metadata"]["guid"] = options[:id] || "user-id-1"
9
+
10
+ if options[:no_organizations]
11
+ response_body["entity"]["organizations"] = []
12
+ else
13
+ def space(space_id) {"metadata" => { "guid" => space_id }, "entity" => {}} end
14
+
15
+ organization = response_body["entity"]["organizations"].first
16
+ organization["metadata"]["guid"] = options[:organization_id] || "organization-id-1"
17
+ organization["entity"]["spaces"] = [] if options[:no_spaces]
18
+
19
+ permissions = options[:permissions] || [:organization_manager]
20
+
21
+ response_body["entity"]["managed_organizations"] << organization if permissions.include?(:organization_manager)
22
+ response_body["entity"]["billing_managed_organizations"] << organization if permissions.include?(:organization_billing_manager)
23
+ response_body["entity"]["audited_organizations"] << organization if permissions.include?(:organization_auditor)
24
+
25
+ unless options[:no_spaces]
26
+ space = space("space-id-1")
27
+ response_body["entity"]["spaces"] << space if permissions.include?(:space_developer)
28
+ response_body["entity"]["managed_spaces"] << space if permissions.include?(:space_manager)
29
+ response_body["entity"]["audited_spaces"] << space if permissions.include?(:space_auditor)
30
+
31
+ space2 = space("space-id-2")
32
+ response_body["entity"]["spaces"] << space2 if permissions.include?(:space2_developer)
33
+ response_body["entity"]["managed_spaces"] << space2 if permissions.include?(:space2_manager)
34
+ response_body["entity"]["audited_spaces"] << space2 if permissions.include?(:space2_auditor)
35
+ end
36
+ end
37
+
38
+ stub_get(%r{/v2/users/[^/]+\?inline-relations-depth=2$}, {}, response(200, response_body))
39
+ stub_get(%r{/v2/users/[^/]+/summary(\?inline-relations-depth=\d)?$}, {}, response(200, response_body))
40
+ end
41
+
42
+ def fail_to_find(options = {})
43
+ stub_get(object_endpoint(options[:id]), {}, response(404, {:code => 20003, :description => "The user could not be found"}))
44
+ end
45
+
46
+ def succeed_to_create
47
+ response_body = Helper.load_fixtures("fake_cc_created_user")
48
+ stub_post(collection_endpoint, {}, response(201, response_body))
49
+ end
50
+
51
+ def fail_to_create
52
+ CcApiStub::Helper.fail_request(:post, 500, {}, /users/)
53
+ end
54
+
55
+ def succeed_to_replace_permissions(options = {})
56
+ stub_put(object_endpoint(options[:id]), {}, response(200, ""))
57
+ end
58
+
59
+ def fail_to_replace_permissions(options = {})
60
+ stub_put(object_endpoint(options[:id]), {}, response(500))
61
+ end
62
+
63
+ def organizations_fixture
64
+ Helper.load_fixtures("fake_cc_user")["entity"]["organizations"]
65
+ end
66
+
67
+ def organization_fixture_hash(options={})
68
+ fixture = organizations_fixture.first
69
+ fixture["entity"].delete("spaces") if options[:no_spaces]
70
+ fixture["entity"].delete("managers") if options[:no_managers]
71
+ MultiJson.load(fixture.to_json, :symbolize_keys => true)
72
+ end
73
+
74
+ private
75
+
76
+ def collection_endpoint
77
+ %r{/v2/users$}
78
+ end
79
+
80
+ def object_endpoint(id = nil)
81
+ %r{/v2/users/#{id}[^/]+(/summary)?}
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,16 @@
1
+ require "cc_api_stub/helper"
2
+ require "cc_api_stub/organizations"
3
+ require "cc_api_stub/applications"
4
+ require "cc_api_stub/domains"
5
+ require "cc_api_stub/frameworks"
6
+ require "cc_api_stub/organization_users"
7
+ require "cc_api_stub/routes"
8
+ require "cc_api_stub/runtimes"
9
+ require "cc_api_stub/service_bindings"
10
+ require "cc_api_stub/service_instances"
11
+ require "cc_api_stub/services"
12
+ require "cc_api_stub/spaces"
13
+ require "cc_api_stub/users"
14
+
15
+ module CcApiStub
16
+ end