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.
- data/LICENSE +746 -0
- data/Rakefile +10 -0
- data/lib/cc_api_stub/applications.rb +53 -0
- data/lib/cc_api_stub/domains.rb +32 -0
- data/lib/cc_api_stub/frameworks.rb +22 -0
- data/lib/cc_api_stub/helper.rb +139 -0
- data/lib/cc_api_stub/login.rb +21 -0
- data/lib/cc_api_stub/organization_users.rb +21 -0
- data/lib/cc_api_stub/organizations.rb +70 -0
- data/lib/cc_api_stub/routes.rb +26 -0
- data/lib/cc_api_stub/runtimes.rb +22 -0
- data/lib/cc_api_stub/service_bindings.rb +22 -0
- data/lib/cc_api_stub/service_instances.rb +22 -0
- data/lib/cc_api_stub/services.rb +21 -0
- data/lib/cc_api_stub/spaces.rb +49 -0
- data/lib/cc_api_stub/users.rb +85 -0
- data/lib/cc_api_stub.rb +16 -0
- data/lib/jfoundry/auth_token.rb +63 -0
- data/lib/jfoundry/baseclient.rb +177 -0
- data/lib/jfoundry/chatty_hash.rb +46 -0
- data/lib/jfoundry/client.rb +39 -0
- data/lib/jfoundry/concerns/proxy_options.rb +17 -0
- data/lib/jfoundry/errors.rb +163 -0
- data/lib/jfoundry/rest_client.rb +331 -0
- data/lib/jfoundry/signature/version.rb +27 -0
- data/lib/jfoundry/signer.rb +13 -0
- data/lib/jfoundry/test_support.rb +3 -0
- data/lib/jfoundry/timer.rb +13 -0
- data/lib/jfoundry/trace_helpers.rb +64 -0
- data/lib/jfoundry/upload_helpers.rb +222 -0
- data/lib/jfoundry/v2/app.rb +357 -0
- data/lib/jfoundry/v2/app_event.rb +13 -0
- data/lib/jfoundry/v2/base.rb +92 -0
- data/lib/jfoundry/v2/client.rb +78 -0
- data/lib/jfoundry/v2/domain.rb +20 -0
- data/lib/jfoundry/v2/managed_service_instance.rb +13 -0
- data/lib/jfoundry/v2/model.rb +209 -0
- data/lib/jfoundry/v2/model_magic/attribute.rb +49 -0
- data/lib/jfoundry/v2/model_magic/client_extensions.rb +170 -0
- data/lib/jfoundry/v2/model_magic/has_summary.rb +49 -0
- data/lib/jfoundry/v2/model_magic/queryable_by.rb +39 -0
- data/lib/jfoundry/v2/model_magic/to_many.rb +138 -0
- data/lib/jfoundry/v2/model_magic/to_one.rb +81 -0
- data/lib/jfoundry/v2/model_magic.rb +93 -0
- data/lib/jfoundry/v2/organization.rb +22 -0
- data/lib/jfoundry/v2/quota_definition.rb +12 -0
- data/lib/jfoundry/v2/route.rb +25 -0
- data/lib/jfoundry/v2/service.rb +20 -0
- data/lib/jfoundry/v2/service_auth_token.rb +10 -0
- data/lib/jfoundry/v2/service_binding.rb +10 -0
- data/lib/jfoundry/v2/service_broker.rb +11 -0
- data/lib/jfoundry/v2/service_instance.rb +13 -0
- data/lib/jfoundry/v2/service_plan.rb +13 -0
- data/lib/jfoundry/v2/space.rb +18 -0
- data/lib/jfoundry/v2/stack.rb +10 -0
- data/lib/jfoundry/v2/user.rb +104 -0
- data/lib/jfoundry/v2/user_provided_service_instance.rb +7 -0
- data/lib/jfoundry/validator.rb +41 -0
- data/lib/jfoundry/version.rb +4 -0
- data/lib/jfoundry/zip.rb +56 -0
- data/lib/jfoundry.rb +5 -0
- data/lib/tasks/gem_release.rake +42 -0
- data/vendor/errors/README.md +3 -0
- data/vendor/errors/v1.yml +189 -0
- data/vendor/errors/v2.yml +470 -0
- metadata +269 -0
data/Rakefile
ADDED
@@ -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
|
data/lib/cc_api_stub.rb
ADDED
@@ -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
|