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