@Test
  public void whenSignUpTwiceWithSameEmail_shouldFailOnSecondSignUp() throws Exception {
    HttpRequest signUpRequest = signUpRequest("*****@*****.**", "pass");
    assertThat(signUpRequest.code()).isEqualTo(CREATED.getStatusCode());

    HttpRequest signUpRequest2 = signUpRequest("*****@*****.**", "pass");
    assertThat(signUpRequest2.code()).isEqualTo(CONFLICT.getStatusCode());
  }
 @Test
 public void test409SetsIllegalStateException() {
   assertCodeMakes(
       PUT,
       URI.create("https://adriancole-blobstore011.s3.amazonaws.com/"),
       CONFLICT.getStatusCode(),
       "",
       "<Error><Code>OperationAborted</Code><Message>A conflicting conditional operation is currently in progress against this resource. Please try again.</Message><RequestId>F716E81C3D814E59</RequestId><HostId>SDprHxWzG/YXzanVnV7VTz/wP+6fRt1dS+q00kH1rz248YOOSddkFiTXF04XtqNO</HostId></Error>",
       IllegalStateException.class);
 }
 @Test
 public void test409WithBucketAlreadyExistsMakesResourceAlreadyExistsException() {
   assertCodeMakes(
       POST,
       URI.create("https://ec2.us-east-1.amazonaws.com/"),
       CONFLICT.getStatusCode(),
       "",
       "<Response><Errors><Error>"
           + "<Code>BucketAlreadyExists</Code>"
           + "<Message>The requested bucket name is not available."
           + " The bucket namespace is shared by all users of the system."
           + " Please select a different name and try again.</Message>"
           + "</Error></Errors><RequestID>c14f531a-cc35-4b48-8149-2655c7e6dc76</RequestID></Response>",
       ResourceAlreadyExistsException.class);
 }
  @ExceptionHandler({DataIntegrityViolationException.class})
  public void constraintViolation(HttpServletResponse response, DataIntegrityViolationException ex)
      throws IOException {
    String message;
    Throwable cause = ex.getCause();
    if (cause instanceof ConstraintViolationException) {
      ConstraintViolationException cEx = (ConstraintViolationException) cause;
      message =
          "Application already contain sent data (Constraint "
              + cEx.getConstraintName()
              + " violates).";
    } else {
      message = ex.getMessage();
    }

    response.sendError(CONFLICT.value(), message);
  }