Beispiel #1
0
 @Test
 public void testValidRequest() throws Exception {
   final HawkClient testClient =
       new HawkClient.Builder().credentials(this.testcredentials1).build();
   final String authorizationHeader =
       testClient.generateAuthorizationHeader(this.validuri1, "get", null, null, null, null);
   final HttpURLConnection connection = connect(this.validuri1, authorizationHeader);
   assertEquals(connection.getResponseCode(), 200);
 }
Beispiel #2
0
 @Test
 public void testIncorrectMethod() throws Exception {
   // Mismatch of HTTP method
   final HawkClient testClient =
       new HawkClient.Builder().credentials(this.testcredentials1).build();
   final String authorizationHeader =
       testClient.generateAuthorizationHeader(this.validuri1, "post", null, null, null, null);
   final HttpURLConnection connection = connect(this.validuri1, authorizationHeader);
   assertEquals(connection.getResponseCode(), 401);
 }
Beispiel #3
0
  @Test
  public void testPrefix() throws Exception {
    // Check client path prefix
    final HawkClient testClient1 =
        new HawkClient.Builder().credentials(this.testcredentials1).build();
    assertTrue(testClient1.isValidFor("/test/test2"));
    assertTrue(testClient1.isValidFor(null));

    HawkClientConfiguration clientConfiguration =
        new HawkClientConfiguration.Builder().pathPrefix("/foo").build();
    final HawkClient testClient2 =
        new HawkClient.Builder()
            .credentials(this.testcredentials1)
            .configuration(clientConfiguration)
            .build();
    assertTrue(testClient2.isValidFor("/foo"));
    assertFalse(testClient2.isValidFor("/test/test2"));

    clientConfiguration =
        new HawkClientConfiguration.Builder(clientConfiguration).pathPrefix("/test/").build();
    final HawkClient testClient3 =
        new HawkClient.Builder()
            .credentials(this.testcredentials1)
            .configuration(clientConfiguration)
            .build();
    assertTrue(testClient3.isValidFor("/test/test2"));
    assertFalse(testClient3.isValidFor("/testtest2"));
  }
Beispiel #4
0
 @Test
 public void testDuplicateNonce() throws Exception {
   // Attempt repeat requests
   final HawkClient testClient =
       new HawkClient.Builder().credentials(this.testCredentials1).build();
   final String authorizationHeader =
       testClient.generateAuthorizationHeader(this.validUri1, "get", null, null, null, null);
   final HttpURLConnection connection = connect(this.validUri1, authorizationHeader);
   assertEquals(connection.getResponseCode(), 200);
   final HttpURLConnection connection2 = connect(this.validUri1, authorizationHeader);
   assertEquals(connection2.getResponseCode(), 401);
 }
Beispiel #5
0
  @Test
  public void testAuthorizationHeader() throws Exception {
    // Test correct implementation
    final SimpleHttpServer server = new SimpleHttpServer(this.testcredentials1, null);

    try {
      final String authorizationHeader =
          testclient.generateAuthorizationHeader(this.validuri1, "get", null, null, null, null);
      final HttpURLConnection connection = connect(this.validuri1, authorizationHeader, null);
      assertEquals(connection.getResponseCode(), 200);
    } finally {
      server.stop();
    }
  }
Beispiel #6
0
  @Test
  public void testInvalidAuthorizationHeader8() throws Exception {
    // Ensure that invalid timestamps are caught
    final SimpleHttpServer server = new SimpleHttpServer(this.testcredentials1, null);

    try {
      String authorizationHeader =
          testclient.generateAuthorizationHeader(this.validuri1, "get", null, null, null, null);
      authorizationHeader = authorizationHeader.replace("ts=\"", "ts=\"x");
      final HttpURLConnection connection = connect(this.validuri1, authorizationHeader, null);
      assertEquals(connection.getResponseCode(), 401);
    } finally {
      server.stop();
    }
  }
Beispiel #7
0
  @Test
  public void testInvalidAuthorizationHeader2() throws Exception {
    // Ensure that an authorization header without a nonce is caught
    SimpleHttpServer server = new SimpleHttpServer(this.testcredentials1, null);

    try {
      String authorizationHeader =
          testclient.generateAuthorizationHeader(this.validuri1, "get", null, null, null, null);
      authorizationHeader = authorizationHeader.replace("nonce=", "invalid=");
      final HttpURLConnection connection = connect(this.validuri1, authorizationHeader, null);
      assertEquals(connection.getResponseCode(), 401);
    } finally {
      server.stop();
    }
  }
Beispiel #8
0
  @Test
  public void testInvalidAuthorizationHeader7() throws Exception {
    // Ensure that bad body hashes are caught
    final SimpleHttpServer server = new SimpleHttpServer(this.testcredentials1, null);

    final String body = "Body of request";
    final String hash = Hawk.calculateMac(this.testcredentials1, "Some other text");
    try {
      String authorizationHeader =
          testclient.generateAuthorizationHeader(this.validuri1, "post", hash, null, null, null);
      final HttpURLConnection connection = connect(this.validuri1, authorizationHeader, body);
      assertEquals(connection.getResponseCode(), 401);
    } finally {
      server.stop();
    }
  }
Beispiel #9
0
  @Test
  public void testAuthorizationHeader2() throws Exception {
    // Test correct implementation with body
    final SimpleHttpServer server = new SimpleHttpServer(this.testcredentials1, null);

    final String body = "Body of request";
    final String hash = Hawk.calculateMac(this.testcredentials1, body);
    try {
      String authorizationHeader =
          testclient.generateAuthorizationHeader(this.validuri1, "post", hash, null, null, null);
      final HttpURLConnection connection = connect(this.validuri1, authorizationHeader, body);
      assertEquals(connection.getResponseCode(), 200);
    } finally {
      server.stop();
    }
  }
Beispiel #10
0
  @Test
  public void testSkewConfiguration() throws Exception {
    // Ensure that timeout is working
    HawkServerConfiguration configuration =
        new HawkServerConfiguration.Builder().timestampSkew(1L).build();

    SimpleHttpServer server = new SimpleHttpServer(this.testcredentials1, configuration);

    final String authorizationHeader =
        testclient.generateAuthorizationHeader(this.validuri1, "get", null, null, null, null);
    Thread.sleep(2000L);
    try {
      final HttpURLConnection connection = connect(this.validuri1, authorizationHeader, null);
      assertEquals(connection.getResponseCode(), 401);
    } finally {
      server.stop();
    }
  }
Beispiel #11
0
  @Test
  public void testInvalidAuthorizationHeader11() throws Exception {
    // Ensure that if payload hash is required that this is enforced, but not if there is no body
    final SimpleHttpServer server =
        new SimpleHttpServer(
            this.testcredentials1,
            new HawkServerConfiguration.Builder()
                .payloadValidation(PayloadValidation.MANDATORY)
                .build());

    try {
      String authorizationHeader =
          testclient.generateAuthorizationHeader(this.validuri1, "get", null, null, null, null);
      final HttpURLConnection connection = connect(this.validuri1, authorizationHeader, null);
      assertEquals(connection.getResponseCode(), 200);
    } finally {
      server.stop();
    }
  }
Beispiel #12
0
  @Test
  public void testModel() throws Exception {
    final HawkClient testClient =
        new HawkClient.Builder().credentials(this.testcredentials1).build();
    testClient.toString();
    testClient.hashCode();
    assertEquals(testClient, testClient);
    assertNotEquals(testClient, null);
    assertNotEquals(null, testClient);

    final HawkClient testClient2 =
        new HawkClient.Builder(testClient).credentials(this.testcredentials2).build();
    testClient2.toString();
    testClient2.hashCode();
    assertEquals(testClient2, testClient2);
    assertNotEquals(testClient2, testClient);
  }