@@ -204,51 +204,111 @@ module VCAP::CloudController
204204 task . droplet . update ( execution_metadata : droplet_execution_metadata )
205205 end
206206
207- context 'when the task has a user specified ' do
207+ context 'when root user is allowed ' do
208208 before do
209- task . update ( user : 'ContainerUser' )
209+ TestConfig . override ( allow_process_root_user : true )
210210 end
211211
212- it 'returns the user' do
213- expect ( task . run_action_user ) . to eq ( 'ContainerUser' )
212+ context 'when the task has a user specified' do
213+ before do
214+ task . update ( user : 'ContainerUser' )
215+ end
216+
217+ it 'returns the user' do
218+ expect ( task . run_action_user ) . to eq ( 'ContainerUser' )
219+ end
214220 end
215- end
216221
217- context 'when the droplet execution metadata specifies a user' do
218- it 'returns the specified user' do
219- expect ( task . run_action_user ) . to eq ( 'cnb' )
222+ context 'when the droplet execution metadata specifies a user' do
223+ it 'returns the specified user' do
224+ expect ( task . run_action_user ) . to eq ( 'cnb' )
225+ end
220226 end
221- end
222227
223- context 'when the droplet execution metadata DOES NOT specify a user' do
224- let ( :droplet_execution_metadata ) { '{"entrypoint":["/image-entrypoint.sh"]}' }
228+ context 'when the droplet execution metadata DOES NOT specify a user' do
229+ let ( :droplet_execution_metadata ) { '{"entrypoint":["/image-entrypoint.sh"]}' }
225230
226- it 'defaults the user to root' do
227- expect ( task . run_action_user ) . to eq ( 'root' )
231+ it 'defaults the user to root' do
232+ expect ( task . run_action_user ) . to eq ( 'root' )
233+ end
228234 end
229- end
230235
231- context 'when the droplet execution metadata is an empty string' do
232- let ( :droplet_execution_metadata ) { '' }
236+ context 'when the droplet execution metadata is an empty string' do
237+ let ( :droplet_execution_metadata ) { '' }
233238
234- it 'defaults the user to root' do
235- expect ( task . run_action_user ) . to eq ( 'root' )
239+ it 'defaults the user to root' do
240+ expect ( task . run_action_user ) . to eq ( 'root' )
241+ end
236242 end
237- end
238243
239- context 'when the droplet execution metadata is nil' do
240- let ( :droplet_execution_metadata ) { nil }
244+ context 'when the droplet execution metadata is nil' do
245+ let ( :droplet_execution_metadata ) { nil }
241246
242- it 'defaults the user to root' do
243- expect ( task . run_action_user ) . to eq ( 'root' )
247+ it 'defaults the user to root' do
248+ expect ( task . run_action_user ) . to eq ( 'root' )
249+ end
250+ end
251+
252+ context 'when the droplet execution metadata has invalid json' do
253+ let ( :droplet_execution_metadata ) { '{' }
254+
255+ it 'defaults the user to root' do
256+ expect ( task . run_action_user ) . to eq ( 'root' )
257+ end
244258 end
245259 end
246260
247- context 'when the droplet execution metadata has invalid json' do
248- let ( :droplet_execution_metadata ) { '{' }
261+ context 'when root user is not allowed' do
262+ before do
263+ TestConfig . override ( allow_process_root_user : false )
264+ end
249265
250- it 'defaults the user to root' do
251- expect ( task . run_action_user ) . to eq ( 'root' )
266+ context 'when the task has a user specified' do
267+ before do
268+ task . update ( user : 'ContainerUser' )
269+ end
270+
271+ it 'returns the user' do
272+ expect ( task . run_action_user ) . to eq ( 'ContainerUser' )
273+ end
274+ end
275+
276+ context 'when the droplet execution metadata specifies a user' do
277+ it 'returns the specified user' do
278+ expect ( task . run_action_user ) . to eq ( 'cnb' )
279+ end
280+ end
281+
282+ context 'when the droplet execution metadata DOES NOT specify a user' do
283+ let ( :droplet_execution_metadata ) { '{"entrypoint":["/image-entrypoint.sh"]}' }
284+
285+ it 'defaults the user to vcap' do
286+ expect ( task . run_action_user ) . to eq ( 'vcap' )
287+ end
288+ end
289+
290+ context 'when the droplet execution metadata is an empty string' do
291+ let ( :droplet_execution_metadata ) { '' }
292+
293+ it 'defaults the user to vcap' do
294+ expect ( task . run_action_user ) . to eq ( 'vcap' )
295+ end
296+ end
297+
298+ context 'when the droplet execution metadata is nil' do
299+ let ( :droplet_execution_metadata ) { nil }
300+
301+ it 'defaults the user to vcap' do
302+ expect ( task . run_action_user ) . to eq ( 'vcap' )
303+ end
304+ end
305+
306+ context 'when the droplet execution metadata has invalid json' do
307+ let ( :droplet_execution_metadata ) { '{' }
308+
309+ it 'defaults the user to vcap' do
310+ expect ( task . run_action_user ) . to eq ( 'vcap' )
311+ end
252312 end
253313 end
254314 end
0 commit comments