@Test(dataProvider = "dataWithoutVersionHeader")
  @SuppressWarnings("unchecked")
  public void shouldRouteDeleteRequestsUsingDefaultVersionBehaviour(
      String resource,
      DefaultVersionBehaviour versionBehaviour,
      boolean expectException,
      RequestHandler provider) {

    // Given
    AcceptAPIVersionContext apiVersionContext =
        new AcceptAPIVersionContext(
            new RootContext(),
            "PROTOCOL_NAME",
            AcceptAPIVersion.newBuilder().withDefaultProtocolVersion("1.0").build());
    ServerContext context = new ServerContext(apiVersionContext);
    DeleteRequest request = Requests.newDeleteRequest(resource);
    ResultHandler<Resource> handler = mock(ResultHandler.class);
    setDefaultVersionBehaviour(router, versionBehaviour);

    // When
    router.handleDelete(context, request, handler);

    // Then
    if (expectException) {
      ArgumentCaptor<ResourceException> exceptionCaptor =
          ArgumentCaptor.forClass(ResourceException.class);
      verify(handler).handleError(exceptionCaptor.capture());
      assertThat(exceptionCaptor.getValue()).isInstanceOf(BadRequestException.class);
      verifyZeroInteractions(
          usersHandlerOne,
          usersHandlerTwo,
          usersHandlerThree,
          groupsHandlerOne,
          groupsHandlerTwo,
          groupsHandlerThree);
    } else {
      verify(provider)
          .handleDelete(
              Matchers.<ServerContext>anyObject(),
              Matchers.<DeleteRequest>anyObject(),
              eq(handler));
    }
  }