@@ -166,12 +166,12 @@ module VCAP::CloudController
166166
167167 describe '#run_action_user' do
168168 let ( :task ) { TaskModel . make ( app : parent_app , droplet : droplet , state : TaskModel ::SUCCEEDED_STATE ) }
169- let ( :droplet ) { DropletModel . make }
169+ let ( :droplet ) { DropletModel . make ( app : parent_app ) }
170170
171171 context 'when the task belongs to a CNB lifecycle app' do
172172 let ( :parent_app ) { AppModel . make ( :cnb ) }
173173 let ( :task ) { TaskModel . make ( app : parent_app , droplet : droplet , state : TaskModel ::SUCCEEDED_STATE ) }
174- let ( :droplet ) { DropletModel . make ( :cnb ) }
174+ let ( :droplet ) { DropletModel . make ( :cnb , app : parent_app ) }
175175
176176 context 'when the task has a user specified' do
177177 before do
@@ -197,8 +197,8 @@ module VCAP::CloudController
197197 context 'when the task belongs to a Docker lifecycle app' do
198198 let ( :parent_app ) { AppModel . make ( :docker ) }
199199 let ( :task ) { TaskModel . make ( app : parent_app , droplet : droplet , state : TaskModel ::SUCCEEDED_STATE ) }
200- let ( :droplet ) { DropletModel . make ( :docker ) }
201- let ( :droplet_execution_metadata ) { '{"entrypoint":["/image-entrypoint.sh"],"user":"cnb "}' }
200+ let ( :droplet ) { DropletModel . make ( :docker , app : parent_app ) }
201+ let ( :droplet_execution_metadata ) { '{"entrypoint":["/image-entrypoint.sh"],"user":"some-user "}' }
202202
203203 before do
204204 task . droplet . update ( execution_metadata : droplet_execution_metadata )
@@ -216,7 +216,7 @@ module VCAP::CloudController
216216
217217 context 'when the droplet execution metadata specifies a user' do
218218 it 'returns the specified user' do
219- expect ( task . run_action_user ) . to eq ( 'cnb ' )
219+ expect ( task . run_action_user ) . to eq ( 'some-user ' )
220220 end
221221 end
222222
@@ -268,6 +268,91 @@ module VCAP::CloudController
268268 it 'returns the default "vcap" user' do
269269 expect ( task . run_action_user ) . to eq ( 'vcap' )
270270 end
271+
272+ context 'when there is no droplet for the task' do
273+ before do
274+ task . droplet . delete
275+ task . reload
276+ end
277+
278+ it 'returns vcap' do
279+ expect ( task . run_action_user ) . to eq ( 'vcap' )
280+ end
281+ end
282+ end
283+ end
284+ end
285+
286+ describe 'docker?' do
287+ context 'when there is a droplet and it has the docker lifecycle' do
288+ let ( :parent_app ) { AppModel . make ( :docker ) }
289+ let ( :task ) { TaskModel . make ( app : parent_app , droplet : droplet , state : TaskModel ::SUCCEEDED_STATE ) }
290+ let ( :droplet ) { DropletModel . make ( :docker , app : parent_app ) }
291+
292+ it 'returns true' do
293+ expect ( task . docker? ) . to be ( true )
294+ end
295+ end
296+
297+ context 'when there is a droplet and it does not have the docker lifecycle' do
298+ let ( :parent_app ) { AppModel . make ( :docker ) }
299+ let ( :task ) { TaskModel . make ( app : parent_app , droplet : droplet , state : TaskModel ::SUCCEEDED_STATE ) }
300+ let ( :droplet ) { DropletModel . make ( :buildpack , app : parent_app ) }
301+
302+ it 'returns false' do
303+ expect ( task . docker? ) . to be ( false )
304+ end
305+ end
306+
307+ context 'when there is not a droplet for the task' do
308+ let ( :parent_app ) { AppModel . make ( :docker ) }
309+ let ( :task ) { TaskModel . make ( app : parent_app , droplet : droplet , state : TaskModel ::SUCCEEDED_STATE ) }
310+ let ( :droplet ) { DropletModel . make ( :docker , app : parent_app ) }
311+
312+ before do
313+ task . droplet . delete
314+ task . reload
315+ end
316+
317+ it 'returns false' do
318+ expect ( task . docker? ) . to be ( false )
319+ end
320+ end
321+ end
322+
323+ describe 'cnb?' do
324+ context 'when there is a droplet and it has the cnb lifecycle' do
325+ let ( :parent_app ) { AppModel . make ( :cnb ) }
326+ let ( :task ) { TaskModel . make ( app : parent_app , droplet : droplet , state : TaskModel ::SUCCEEDED_STATE ) }
327+ let ( :droplet ) { DropletModel . make ( :cnb , app : parent_app ) }
328+
329+ it 'returns true' do
330+ expect ( task . cnb? ) . to be ( true )
331+ end
332+ end
333+
334+ context 'when there is a droplet and it does not have the cnb lifecycle' do
335+ let ( :parent_app ) { AppModel . make ( :cnb ) }
336+ let ( :task ) { TaskModel . make ( app : parent_app , droplet : droplet , state : TaskModel ::SUCCEEDED_STATE ) }
337+ let ( :droplet ) { DropletModel . make ( :buildpack , app : parent_app ) }
338+
339+ it 'returns false' do
340+ expect ( task . cnb? ) . to be ( false )
341+ end
342+ end
343+
344+ context 'when there is not a droplet for the task' do
345+ let ( :parent_app ) { AppModel . make ( :cnb ) }
346+ let ( :task ) { TaskModel . make ( app : parent_app , droplet : droplet , state : TaskModel ::SUCCEEDED_STATE ) }
347+ let ( :droplet ) { DropletModel . make ( :cnb , app : parent_app ) }
348+
349+ before do
350+ task . droplet . delete
351+ task . reload
352+ end
353+
354+ it 'returns false' do
355+ expect ( task . cnb? ) . to be ( false )
271356 end
272357 end
273358 end
0 commit comments