@@ -118,6 +118,34 @@ module Docker
118
118
end
119
119
end
120
120
end
121
+
122
+ context 'when root user not allowed' do
123
+ before do
124
+ TestConfig . override ( allow_docker_root_user : false )
125
+ end
126
+
127
+ context 'and the process does not set a user' do
128
+ let ( :app ) { AppModel . make ( :docker , { droplet : } ) }
129
+ let ( :process ) { ProcessModel . make ( :docker , { app : } ) }
130
+
131
+ context 'and the droplet docker execution metadata sets the root user' do
132
+ let ( :droplet_execution_metadata ) { '{"entrypoint":["/image-entrypoint.sh"],"user":"root"}' }
133
+ let ( :droplet ) do
134
+ DropletModel . make ( :docker , {
135
+ state : DropletModel ::STAGED_STATE ,
136
+ docker_receipt_image : 'the-image' ,
137
+ execution_metadata : droplet_execution_metadata
138
+ } )
139
+ end
140
+
141
+ it 'raises an error' do
142
+ expect do
143
+ lifecycle_protocol . desired_lrp_builder ( config , process )
144
+ end . to raise_error ( ::CloudController ::Errors ::ApiError , /'root' user not permitted/ )
145
+ end
146
+ end
147
+ end
148
+ end
121
149
end
122
150
123
151
describe '#task_action_builder' do
@@ -138,6 +166,34 @@ module Docker
138
166
)
139
167
lifecycle_protocol . task_action_builder ( config , task )
140
168
end
169
+
170
+ context 'when root user not allowed' do
171
+ before do
172
+ TestConfig . override ( allow_docker_root_user : false )
173
+ end
174
+
175
+ context 'and the task does not set a user' do
176
+ let ( :app ) { AppModel . make ( :docker , { droplet : } ) }
177
+ let ( :task ) { TaskModel . make ( :docker , { droplet :, app : } ) }
178
+
179
+ context 'and the droplet docker execution metadata sets the root user' do
180
+ let ( :droplet_execution_metadata ) { '{"entrypoint":["/image-entrypoint.sh"],"user":"root"}' }
181
+ let ( :droplet ) do
182
+ DropletModel . make ( :docker , {
183
+ state : DropletModel ::STAGED_STATE ,
184
+ docker_receipt_image : 'the-image' ,
185
+ execution_metadata : droplet_execution_metadata
186
+ } )
187
+ end
188
+
189
+ it 'raises an error' do
190
+ expect do
191
+ lifecycle_protocol . task_action_builder ( config , task )
192
+ end . to raise_error ( ::CloudController ::Errors ::ApiError , /'root' user not permitted/ )
193
+ end
194
+ end
195
+ end
196
+ end
141
197
end
142
198
end
143
199
end
0 commit comments