cfoundry 0.4.21 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/Rakefile +47 -24
  2. data/lib/cfoundry/auth_token.rb +48 -0
  3. data/lib/cfoundry/baseclient.rb +96 -277
  4. data/lib/cfoundry/client.rb +2 -0
  5. data/lib/cfoundry/concerns/login_helpers.rb +13 -0
  6. data/lib/cfoundry/errors.rb +21 -13
  7. data/lib/cfoundry/rest_client.rb +290 -0
  8. data/lib/cfoundry/test_support.rb +3 -0
  9. data/lib/cfoundry/trace_helpers.rb +9 -9
  10. data/lib/cfoundry/uaaclient.rb +66 -74
  11. data/lib/cfoundry/upload_helpers.rb +2 -0
  12. data/lib/cfoundry/v1/app.rb +2 -2
  13. data/lib/cfoundry/v1/base.rb +4 -51
  14. data/lib/cfoundry/v1/client.rb +7 -30
  15. data/lib/cfoundry/v1/model.rb +22 -5
  16. data/lib/cfoundry/v1/model_magic.rb +30 -15
  17. data/lib/cfoundry/v2/app.rb +2 -5
  18. data/lib/cfoundry/v2/base.rb +10 -74
  19. data/lib/cfoundry/v2/client.rb +19 -30
  20. data/lib/cfoundry/v2/domain.rb +1 -4
  21. data/lib/cfoundry/v2/model.rb +1 -3
  22. data/lib/cfoundry/v2/model_magic.rb +13 -23
  23. data/lib/cfoundry/version.rb +1 -1
  24. data/lib/cfoundry/zip.rb +1 -1
  25. data/spec/cfoundry/auth_token_spec.rb +77 -0
  26. data/spec/cfoundry/baseclient_spec.rb +54 -30
  27. data/spec/cfoundry/errors_spec.rb +10 -13
  28. data/spec/cfoundry/rest_client_spec.rb +238 -0
  29. data/spec/cfoundry/trace_helpers_spec.rb +10 -5
  30. data/spec/cfoundry/uaaclient_spec.rb +141 -114
  31. data/spec/cfoundry/upload_helpers_spec.rb +129 -0
  32. data/spec/cfoundry/v1/base_spec.rb +2 -2
  33. data/spec/cfoundry/v1/client_spec.rb +17 -0
  34. data/spec/cfoundry/v1/model_magic_spec.rb +43 -0
  35. data/spec/cfoundry/v2/base_spec.rb +256 -33
  36. data/spec/cfoundry/v2/client_spec.rb +68 -0
  37. data/spec/cfoundry/v2/model_magic_spec.rb +49 -0
  38. data/spec/fixtures/apps/with_vmcignore/ignored_dir/file_in_ignored_dir.txt +1 -0
  39. data/spec/fixtures/apps/with_vmcignore/ignored_file.txt +1 -0
  40. data/spec/fixtures/apps/with_vmcignore/non_ignored_dir/file_in_non_ignored_dir.txt +1 -0
  41. data/spec/fixtures/apps/with_vmcignore/non_ignored_dir/ignored_file.txt +1 -0
  42. data/spec/fixtures/apps/with_vmcignore/non_ignored_file.txt +1 -0
  43. data/spec/fixtures/empty_file +0 -0
  44. data/spec/spec_helper.rb +4 -4
  45. data/spec/support/randoms.rb +3 -0
  46. data/spec/support/shared_examples/client_login_examples.rb +46 -0
  47. data/spec/support/{summaries.rb → shared_examples/model_summary_examples.rb} +0 -0
  48. data/spec/support/v1_fake_helper.rb +144 -0
  49. metadata +101 -37
  50. data/lib/cfoundry/spec_helper.rb +0 -1
@@ -0,0 +1,68 @@
1
+ require 'spec_helper'
2
+
3
+ describe CFoundry::V2::Client do
4
+ let(:client) { CFoundry::V2::Client.new }
5
+
6
+ describe "#register" do
7
+ let(:uaa) { CFoundry::UAAClient.new }
8
+ let(:email) { 'test@test.com' }
9
+ let(:password) { 'secret' }
10
+
11
+ subject { client.register(email, password) }
12
+
13
+ it "creates the user in uaa and ccng" do
14
+ stub(client.base).uaa { uaa }
15
+ stub(uaa).add_user(email, password) { { "id" => "1234" } }
16
+
17
+ user = fake(:user)
18
+ stub(client).user { user }
19
+ stub(user).create!
20
+ subject
21
+ expect(user.guid).to eq "1234"
22
+ end
23
+ end
24
+
25
+ describe "#current_user" do
26
+ subject { client.current_user }
27
+ before { client.token = token }
28
+
29
+ context "when there is no access_token_data" do
30
+ let(:token) { CFoundry::AuthToken.new("bearer some-access-token", "some-refresh-token") }
31
+ it { should eq nil }
32
+ end
33
+
34
+ context "when there is access_token_data" do
35
+ let(:token_data) { { :user_id => "123", :email => "guy@example.com" } }
36
+ let(:auth_header) { Base64.encode64("{}#{MultiJson.encode(token_data)}") }
37
+ let(:token) do
38
+ CFoundry::AuthToken.new("bearer #{auth_header}", "some-refresh-token")
39
+ end
40
+
41
+ it { should be_a CFoundry::V2::User }
42
+ its(:guid) { should eq "123" }
43
+ its(:emails) { should eq [{ :value => "guy@example.com"}] }
44
+ end
45
+ end
46
+
47
+ describe "#version" do
48
+ its(:version) { should eq 2 }
49
+ end
50
+
51
+ describe "#login_prompts" do
52
+ include_examples "client login prompts"
53
+ end
54
+
55
+ describe "#login" do
56
+ include_examples "client login" do
57
+ it 'sets the current organization to nil' do
58
+ client.current_organization = "org"
59
+ expect { subject }.to change { client.current_organization }.from("org").to(nil)
60
+ end
61
+
62
+ it 'sets the current space to nil' do
63
+ client.current_space = "space"
64
+ expect { subject }.to change { client.current_space }.from("space").to(nil)
65
+ end
66
+ end
67
+ end
68
+ end
@@ -67,6 +67,55 @@ describe CFoundry::V2::ModelMagic do
67
67
  expect(subject.foo).to eq "foo"
68
68
  end
69
69
  end
70
+
71
+ context 'when the attribute has a custom json key' do
72
+ let(:mymodel) {
73
+ fake_model { attribute :foo, :object, :at => :not_foo }
74
+ }
75
+
76
+ subject { myobject.fake }
77
+
78
+ it 'retrieves the attribute using the custom key' do
79
+ stub(client.base).my_fake_model(guid) {
80
+ { :entity => { :not_foo => "fizz" } }
81
+ }
82
+
83
+ expect(myobject.foo).to eq "fizz"
84
+ end
85
+ end
86
+ end
87
+
88
+ describe 'writing' do
89
+ context 'when the attribute has a custom json key' do
90
+ let(:mymodel) {
91
+ fake_model { attribute :foo, :object, :at => :not_foo }
92
+ }
93
+
94
+ subject { myobject }
95
+
96
+ it "stores it in the diff under the json key" do
97
+ mock(client.base).update_my_fake_model(subject.guid, :not_foo => 123)
98
+ subject.foo = 123
99
+ subject.update!
100
+ end
101
+
102
+ it "stores it in the manifest under the json key" do
103
+ subject.foo = 123
104
+
105
+ mock(client.base).create_my_fake_model(:not_foo => 123) do
106
+ { :metadata => { :guid => guid },
107
+ :entity => { :not_foo => 123 }
108
+ }
109
+ end
110
+
111
+ subject.create!
112
+ end
113
+
114
+ it "is then readable via the attribute name" do
115
+ subject.foo = 123
116
+ expect(subject.foo).to eq 123
117
+ end
118
+ end
70
119
  end
71
120
  end
72
121
 
@@ -0,0 +1 @@
1
+ ignored_file
@@ -0,0 +1 @@
1
+ non_ignored_file
File without changes
data/spec/spec_helper.rb CHANGED
@@ -1,16 +1,16 @@
1
+ SPEC_ROOT = File.dirname(__FILE__).freeze
2
+
1
3
  require "rspec"
2
4
  require "cfoundry"
3
5
  require "webmock/rspec"
6
+ require "ostruct"
4
7
 
5
8
  Dir[File.expand_path('../{support,fakes}/**/*.rb', __FILE__)].each do |file|
6
9
  require file
7
10
  end
8
11
 
9
- def random_string(tag = "random")
10
- sprintf("%s-%x", tag, rand(10 ** 6))
11
- end
12
-
13
12
  RSpec.configure do |c|
14
13
  c.include Fake::FakeMethods
14
+ c.include V1Fake::FakeMethods
15
15
  c.mock_with :rr
16
16
  end
@@ -0,0 +1,3 @@
1
+ def random_string(tag = "random")
2
+ sprintf("%s-%x", tag, rand(10 ** 6))
3
+ end
@@ -0,0 +1,46 @@
1
+ shared_examples_for 'client login prompts' do
2
+ let(:uaa) { CFoundry::UAAClient.new }
3
+ let(:prompts) do
4
+ {
5
+ :user_id => ["text", "User ID"],
6
+ :pin => ["password", "Your 8-digit Pin #"]
7
+ }
8
+ end
9
+
10
+ before do
11
+ stub(client.base).uaa { uaa }
12
+ stub(uaa).prompts { prompts }
13
+ end
14
+
15
+ subject { client.login_prompts }
16
+
17
+ it 'returns the prompts provided by UAA' do
18
+ expect(subject).to eq(prompts)
19
+ end
20
+ end
21
+
22
+ shared_examples_for 'client login' do
23
+ let(:email) { 'test@test.com' }
24
+ let(:password) { 'secret' }
25
+ let(:uaa) { CFoundry::UAAClient.new }
26
+ let(:access_token) { "some-access-token" }
27
+ let(:token_info) { CF::UAA::TokenInfo.new({ :access_token => access_token, :token_type => "bearer" }) }
28
+
29
+ before do
30
+ stub(client.base).uaa { uaa }
31
+ stub(uaa).authorize(email, password) { token_info }
32
+ end
33
+
34
+ subject { client.login(email, password) }
35
+
36
+ it 'returns a UAA token' do
37
+ expect(subject).to be_a(CFoundry::AuthToken)
38
+ expect(subject.auth_header).to eq("bearer #{access_token}")
39
+ end
40
+
41
+ it 'saves the data as the token' do
42
+ subject
43
+ expect(client.token).to be_a(CFoundry::AuthToken)
44
+ expect(client.token.auth_header).to eq("bearer #{access_token}")
45
+ end
46
+ end
@@ -0,0 +1,144 @@
1
+ module V1Fake
2
+ module FakeMethods
3
+ def v1_fake_client(attributes = {})
4
+ CFoundry::V1::FakeClient.new.fake(attributes)
5
+ end
6
+
7
+ def v1_fake(what, attributes = {})
8
+ v1_fake_client.send(what).fake(attributes)
9
+ end
10
+
11
+ def v1_fake_list(what, count, attributes = {})
12
+ objs = []
13
+
14
+ count.times do
15
+ objs << fake(what, attributes)
16
+ end
17
+
18
+ objs
19
+ end
20
+
21
+ def v1_fake_model(name = :my_fake_model, &init)
22
+ # There is a difference between ruby 1.8.7 and 1.8.8 in the order that
23
+ # the inherited callback gets called. In 1.8.7 the inherited callback
24
+ # is called after the block; in 1.8.8 and later it's called before.
25
+ # The upshot for us is we need a failproof way of getting the name
26
+ # to klass. So we're using a global variable to hand off the value.
27
+ # Please don't shoot us. - ESH & MMB
28
+ $object_name = name
29
+ klass = Class.new(CFoundry::V1::FakeModel) do
30
+ self.object_name = name
31
+ end
32
+
33
+ klass.class_eval(&init) if init
34
+
35
+ klass.define_client_methods
36
+
37
+ klass
38
+ end
39
+ end
40
+
41
+ def fake(attributes = {})
42
+ fake_attributes(attributes).each do |k, v|
43
+ send(:"#{k}=", v)
44
+ setup_reverse_relationship(v)
45
+ end
46
+
47
+ self
48
+ end
49
+
50
+ def setup_reverse_relationship(v)
51
+ # assign relationship for 'v' pointing back to this object
52
+ end
53
+ end
54
+
55
+ module CFoundry::V1
56
+ class Model
57
+ include V1Fake
58
+
59
+ attr_writer :client
60
+
61
+ private
62
+
63
+ def get_many(plural)
64
+ @cache[plural]
65
+ end
66
+
67
+ def fake_attributes(attributes)
68
+ default_fakes.merge(attributes)
69
+ end
70
+
71
+ # override this to provide basic attributes (like name) dynamically
72
+ def default_fakes
73
+ {}
74
+ end
75
+ end
76
+
77
+
78
+ class FakeBase < Base
79
+ end
80
+
81
+
82
+ class FakeClient < Client
83
+ include Fake
84
+
85
+ def initialize(target = "http://example.com", token = nil)
86
+ @base = FakeBase.new(target, token)
87
+ end
88
+
89
+ private
90
+
91
+ def get_many(plural)
92
+ instance_variable_get(:"@#{plural}")
93
+ end
94
+
95
+ def fake_attributes(attributes)
96
+ attributes
97
+ end
98
+
99
+ def setup_reverse_relationship(v)
100
+ if v.is_a?(Model)
101
+ v.client = self
102
+ elsif v.is_a?(Array)
103
+ v.each do |x|
104
+ setup_reverse_relationship(x)
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+
111
+ class FakeModel < CFoundry::V1::Model
112
+ attr_reader :diff
113
+
114
+ def self.inherited(klass)
115
+ class << klass
116
+ attr_writer :object_name
117
+ end
118
+
119
+ # There is a difference between ruby 1.8.7 and 1.8.8 in the order that
120
+ # the inherited callback gets called. In 1.8.7 the inherited callback
121
+ # is called after the block; in 1.8.8 and later it's called before.
122
+ # The upshot for us is we need a failproof way of getting the name
123
+ # to klass. So we're using a global variable to hand off the value.
124
+ # Please don't shoot us. - ESH & MMB
125
+ klass.object_name = $object_name
126
+ super
127
+ end
128
+
129
+ class << self
130
+ attr_writer :object_name
131
+ end
132
+ end
133
+
134
+
135
+ module ModelMagic
136
+ def self.on_client(&blk)
137
+ FakeClient.module_eval(&blk)
138
+ end
139
+
140
+ def self.on_base_client(&blk)
141
+ FakeBase.module_eval(&blk)
142
+ end
143
+ end
144
+ end
metadata CHANGED
@@ -1,26 +1,25 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfoundry
3
3
  version: !ruby/object:Gem::Version
4
- hash: 37
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 4
9
- - 21
10
- version: 0.4.21
8
+ - 5
9
+ - 0
10
+ version: 0.5.0
11
11
  platform: ruby
12
12
  authors:
13
+ - Cloud Foundry Team
13
14
  - Alex Suraci
14
15
  autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2013-02-08 00:00:00 Z
19
+ date: 2013-02-06 00:00:00 Z
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
- name: multipart-post
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
24
23
  none: false
25
24
  requirements:
26
25
  - - ~>
@@ -30,12 +29,12 @@ dependencies:
30
29
  - 1
31
30
  - 1
32
31
  version: "1.1"
32
+ prerelease: false
33
33
  type: :runtime
34
- version_requirements: *id001
34
+ name: multipart-post
35
+ requirement: *id001
35
36
  - !ruby/object:Gem::Dependency
36
- name: multi_json
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
37
+ version_requirements: &id002 !ruby/object:Gem::Requirement
39
38
  none: false
40
39
  requirements:
41
40
  - - ~>
@@ -45,12 +44,12 @@ dependencies:
45
44
  - 1
46
45
  - 3
47
46
  version: "1.3"
47
+ prerelease: false
48
48
  type: :runtime
49
- version_requirements: *id002
49
+ name: multi_json
50
+ requirement: *id002
50
51
  - !ruby/object:Gem::Dependency
51
- name: rubyzip
52
- prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
52
+ version_requirements: &id003 !ruby/object:Gem::Requirement
54
53
  none: false
55
54
  requirements:
56
55
  - - ~>
@@ -60,12 +59,28 @@ dependencies:
60
59
  - 0
61
60
  - 9
62
61
  version: "0.9"
62
+ prerelease: false
63
63
  type: :runtime
64
- version_requirements: *id003
64
+ name: rubyzip
65
+ requirement: *id003
65
66
  - !ruby/object:Gem::Dependency
66
- name: rake
67
+ version_requirements: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ~>
71
+ - !ruby/object:Gem::Version
72
+ hash: 29
73
+ segments:
74
+ - 1
75
+ - 3
76
+ - 3
77
+ version: 1.3.3
67
78
  prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
79
+ type: :runtime
80
+ name: cf-uaa-lib
81
+ requirement: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ version_requirements: &id005 !ruby/object:Gem::Requirement
69
84
  none: false
70
85
  requirements:
71
86
  - - ~>
@@ -75,12 +90,12 @@ dependencies:
75
90
  - 0
76
91
  - 9
77
92
  version: "0.9"
93
+ prerelease: false
78
94
  type: :development
79
- version_requirements: *id004
95
+ name: rake
96
+ requirement: *id005
80
97
  - !ruby/object:Gem::Dependency
81
- name: rspec
82
- prerelease: false
83
- requirement: &id005 !ruby/object:Gem::Requirement
98
+ version_requirements: &id006 !ruby/object:Gem::Requirement
84
99
  none: false
85
100
  requirements:
86
101
  - - ~>
@@ -90,12 +105,12 @@ dependencies:
90
105
  - 2
91
106
  - 11
92
107
  version: "2.11"
108
+ prerelease: false
93
109
  type: :development
94
- version_requirements: *id005
110
+ name: rspec
111
+ requirement: *id006
95
112
  - !ruby/object:Gem::Dependency
96
- name: webmock
97
- prerelease: false
98
- requirement: &id006 !ruby/object:Gem::Requirement
113
+ version_requirements: &id007 !ruby/object:Gem::Requirement
99
114
  none: false
100
115
  requirements:
101
116
  - - ~>
@@ -105,12 +120,12 @@ dependencies:
105
120
  - 1
106
121
  - 9
107
122
  version: "1.9"
123
+ prerelease: false
108
124
  type: :development
109
- version_requirements: *id006
125
+ name: webmock
126
+ requirement: *id007
110
127
  - !ruby/object:Gem::Dependency
111
- name: rr
112
- prerelease: false
113
- requirement: &id007 !ruby/object:Gem::Requirement
128
+ version_requirements: &id008 !ruby/object:Gem::Requirement
114
129
  none: false
115
130
  requirements:
116
131
  - - ~>
@@ -120,11 +135,27 @@ dependencies:
120
135
  - 1
121
136
  - 0
122
137
  version: "1.0"
138
+ prerelease: false
139
+ type: :development
140
+ name: rr
141
+ requirement: *id008
142
+ - !ruby/object:Gem::Dependency
143
+ version_requirements: &id009 !ruby/object:Gem::Requirement
144
+ none: false
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ hash: 3
149
+ segments:
150
+ - 0
151
+ version: "0"
152
+ prerelease: false
123
153
  type: :development
124
- version_requirements: *id007
154
+ name: gem-release
155
+ requirement: *id009
125
156
  description:
126
157
  email:
127
- - asuraci@vmware.com
158
+ - vcap-dev@googlegroups.com
128
159
  executables: []
129
160
 
130
161
  extensions: []
@@ -134,11 +165,14 @@ extra_rdoc_files: []
134
165
  files:
135
166
  - LICENSE
136
167
  - Rakefile
168
+ - lib/cfoundry/auth_token.rb
137
169
  - lib/cfoundry/baseclient.rb
138
170
  - lib/cfoundry/chatty_hash.rb
139
171
  - lib/cfoundry/client.rb
172
+ - lib/cfoundry/concerns/login_helpers.rb
140
173
  - lib/cfoundry/errors.rb
141
- - lib/cfoundry/spec_helper.rb
174
+ - lib/cfoundry/rest_client.rb
175
+ - lib/cfoundry/test_support.rb
142
176
  - lib/cfoundry/trace_helpers.rb
143
177
  - lib/cfoundry/uaaclient.rb
144
178
  - lib/cfoundry/upload_helpers.rb
@@ -173,12 +207,18 @@ files:
173
207
  - lib/cfoundry/version.rb
174
208
  - lib/cfoundry/zip.rb
175
209
  - lib/cfoundry.rb
210
+ - spec/cfoundry/auth_token_spec.rb
176
211
  - spec/cfoundry/baseclient_spec.rb
177
212
  - spec/cfoundry/errors_spec.rb
213
+ - spec/cfoundry/rest_client_spec.rb
178
214
  - spec/cfoundry/trace_helpers_spec.rb
179
215
  - spec/cfoundry/uaaclient_spec.rb
216
+ - spec/cfoundry/upload_helpers_spec.rb
180
217
  - spec/cfoundry/v1/base_spec.rb
218
+ - spec/cfoundry/v1/client_spec.rb
219
+ - spec/cfoundry/v1/model_magic_spec.rb
181
220
  - spec/cfoundry/v2/base_spec.rb
221
+ - spec/cfoundry/v2/client_spec.rb
182
222
  - spec/cfoundry/v2/model_magic_spec.rb
183
223
  - spec/cfoundry/v2/organization_spec.rb
184
224
  - spec/cfoundry/v2/space_spec.rb
@@ -193,10 +233,19 @@ files:
193
233
  - spec/fakes/service_plan_fake.rb
194
234
  - spec/fakes/space_fake.rb
195
235
  - spec/fakes/user_fake.rb
236
+ - spec/fixtures/apps/with_vmcignore/ignored_dir/file_in_ignored_dir.txt
237
+ - spec/fixtures/apps/with_vmcignore/ignored_file.txt
238
+ - spec/fixtures/apps/with_vmcignore/non_ignored_dir/file_in_non_ignored_dir.txt
239
+ - spec/fixtures/apps/with_vmcignore/non_ignored_dir/ignored_file.txt
240
+ - spec/fixtures/apps/with_vmcignore/non_ignored_file.txt
241
+ - spec/fixtures/empty_file
196
242
  - spec/spec_helper.rb
197
243
  - spec/support/fake_helper.rb
198
- - spec/support/summaries.rb
199
- homepage: http://cloudfoundry.com/
244
+ - spec/support/randoms.rb
245
+ - spec/support/shared_examples/client_login_examples.rb
246
+ - spec/support/shared_examples/model_summary_examples.rb
247
+ - spec/support/v1_fake_helper.rb
248
+ homepage: http://github.com/cloudfoundry/vmc-lib
200
249
  licenses: []
201
250
 
202
251
  post_install_message:
@@ -230,12 +279,18 @@ signing_key:
230
279
  specification_version: 3
231
280
  summary: High-level library for working with the Cloud Foundry API.
232
281
  test_files:
282
+ - spec/cfoundry/auth_token_spec.rb
233
283
  - spec/cfoundry/baseclient_spec.rb
234
284
  - spec/cfoundry/errors_spec.rb
285
+ - spec/cfoundry/rest_client_spec.rb
235
286
  - spec/cfoundry/trace_helpers_spec.rb
236
287
  - spec/cfoundry/uaaclient_spec.rb
288
+ - spec/cfoundry/upload_helpers_spec.rb
237
289
  - spec/cfoundry/v1/base_spec.rb
290
+ - spec/cfoundry/v1/client_spec.rb
291
+ - spec/cfoundry/v1/model_magic_spec.rb
238
292
  - spec/cfoundry/v2/base_spec.rb
293
+ - spec/cfoundry/v2/client_spec.rb
239
294
  - spec/cfoundry/v2/model_magic_spec.rb
240
295
  - spec/cfoundry/v2/organization_spec.rb
241
296
  - spec/cfoundry/v2/space_spec.rb
@@ -250,6 +305,15 @@ test_files:
250
305
  - spec/fakes/service_plan_fake.rb
251
306
  - spec/fakes/space_fake.rb
252
307
  - spec/fakes/user_fake.rb
308
+ - spec/fixtures/apps/with_vmcignore/ignored_dir/file_in_ignored_dir.txt
309
+ - spec/fixtures/apps/with_vmcignore/ignored_file.txt
310
+ - spec/fixtures/apps/with_vmcignore/non_ignored_dir/file_in_non_ignored_dir.txt
311
+ - spec/fixtures/apps/with_vmcignore/non_ignored_dir/ignored_file.txt
312
+ - spec/fixtures/apps/with_vmcignore/non_ignored_file.txt
313
+ - spec/fixtures/empty_file
253
314
  - spec/spec_helper.rb
254
315
  - spec/support/fake_helper.rb
255
- - spec/support/summaries.rb
316
+ - spec/support/randoms.rb
317
+ - spec/support/shared_examples/client_login_examples.rb
318
+ - spec/support/shared_examples/model_summary_examples.rb
319
+ - spec/support/v1_fake_helper.rb