@@ -234,4 +234,62 @@ def create_safeguarding_flag
234
234
described_class . create_safeguarding_flag ( token :, flag :)
235
235
end
236
236
end
237
+
238
+ describe '.delete_safeguarding_flag' do
239
+ let ( :flag ) { 'school:owner' }
240
+ let ( :delete_safeguarding_flag_url ) { "#{ api_url } /api/v1/safeguarding-flags/#{ flag } " }
241
+
242
+ before do
243
+ stub_request ( :delete , delete_safeguarding_flag_url ) . to_return ( status : 204 , body : '' )
244
+ end
245
+
246
+ it 'makes a request to the profile api host' do
247
+ delete_safeguarding_flag
248
+ expect ( WebMock ) . to have_requested ( :delete , delete_safeguarding_flag_url )
249
+ end
250
+
251
+ it 'includes token in the authorization request header' do
252
+ delete_safeguarding_flag
253
+ expect ( WebMock ) . to have_requested ( :delete , delete_safeguarding_flag_url ) . with ( headers : { authorization : "Bearer #{ token } " } )
254
+ end
255
+
256
+ it 'includes the profile api key in the x-api-key request header' do
257
+ delete_safeguarding_flag
258
+ expect ( WebMock ) . to have_requested ( :delete , delete_safeguarding_flag_url ) . with ( headers : { 'x-api-key' => api_key } )
259
+ end
260
+
261
+ it 'sets content-type of request to json' do
262
+ delete_safeguarding_flag
263
+ expect ( WebMock ) . to have_requested ( :delete , delete_safeguarding_flag_url ) . with ( headers : { 'content-type' => 'application/json' } )
264
+ end
265
+
266
+ it 'sets accept header to json' do
267
+ delete_safeguarding_flag
268
+ expect ( WebMock ) . to have_requested ( :delete , delete_safeguarding_flag_url ) . with ( headers : { 'accept' => 'application/json' } )
269
+ end
270
+
271
+ it 'returns empty body if successful' do
272
+ stub_request ( :delete , delete_safeguarding_flag_url )
273
+ . to_return ( status : 204 , body : '' )
274
+ expect ( delete_safeguarding_flag ) . to be_nil
275
+ end
276
+
277
+ it 'raises exception if anything other than a 201 status code is returned' do
278
+ stub_request ( :delete , delete_safeguarding_flag_url )
279
+ . to_return ( status : 200 )
280
+
281
+ expect { delete_safeguarding_flag } . to raise_error ( RuntimeError )
282
+ end
283
+
284
+ it 'includes details of underlying response when exception is raised' do
285
+ stub_request ( :delete , delete_safeguarding_flag_url )
286
+ . to_return ( status : 401 )
287
+
288
+ expect { delete_safeguarding_flag } . to raise_error ( 'Safeguarding flag not deleted from Profile API. HTTP response code: 401' )
289
+ end
290
+
291
+ def delete_safeguarding_flag
292
+ described_class . delete_safeguarding_flag ( token :, flag :)
293
+ end
294
+ end
237
295
end
0 commit comments