@Test public void testCreateAuthorizationHeader() { Date now = DateUtil.now(); String method = "POST"; String hostname = "api.tuppari.com"; String path = "/test"; String query = "a=v1&b=v2"; Map<String, String> headers = new HashMap<String, String>(); headers.put("Host", "api.tuppari.com"); headers.put("Content-type", "application/json"); headers.put("X-Tuppari-Operation", "CreateApplication"); Map<String, Object> body = new LinkedHashMap<String, Object>(); body.put("applicationName", "example1"); String accessKeyId = "accessKeyId"; String accessSecretKey = "accessSecretKey"; String authorization = SignUtil.createAuthorizationHeader( method, hostname, path, query, headers, body, now, accessKeyId, accessSecretKey); assertThat( authorization, is( "HMAC-SHA256 Credential=accessKeyId,SignedHeaders=content-type;host;x-tuppari-operation,Signature=050f8711271747d4f63a3caa3ffb420e4cd5a0e9d9dda8ba7e4faad6794c40d0")); }
@Test public void testCreateSignedRequestConfig() throws ParseException { Date now = DateUtil.now(); String method = "POST"; URI uri = URI.create("http://api.tuppari.com/test?a=v1&b=v2"); String operation = "CreateApplication"; Map<String, Object> body = new LinkedHashMap<String, Object>(); body.put("applicationName", "example1"); String accessKeyId = "accessKeyId"; String accessSecretKey = "accessSecretKey"; Map<String, Object> config = SignUtil.createSignedRequestConfig( method, uri, operation, body, accessKeyId, accessSecretKey); assertThat((URI) config.get("uri"), is(uri)); assertThat((String) config.get("body"), is(JSON.encode(body))); Map<String, String> headers = (Map<String, String>) config.get("headers"); assertThat(headers.get("Host"), is("api.tuppari.com")); assertThat(headers.get("Content-Type"), is("application/json")); assertThat(headers.get("X-Tuppari-Date"), is("Thu, 01 Jan 1970 00:00:00 GMT")); assertThat(headers.get("X-Tuppari-Operation"), is("CreateApplication")); assertThat( headers.get("Authorization"), is( "HMAC-SHA256 Credential=accessKeyId,SignedHeaders=content-type;host;x-tuppari-date;x-tuppari-operation,Signature=f35767c9fdba4ba5d5bbbf1c622fceed0dbaeb210303bb56b419c6a51bcf1e5d")); }
@Test public void testCreateSignature_1() throws ParseException { String secretKey = "secretKey1"; String stringToSign = "SHA256\n" + "19700101T000000Z\n" + "152176000cc08c7d9d0558bc3a50368aa38619a695ad20f50bec1344429cb315"; Date now = DateUtil.now(); String host = "api.tuppari.com"; String expectedSignature = "4815ff1681a278e7c852902ea3604f17831a80a78dc0ff82f5142598a034509b"; // Check with the same secret key, siganature returns same signature for (int i = 0; i < 1000; ++i) { String result = SignUtil.createSignature(secretKey, stringToSign, now, host); assertThat(result, is(expectedSignature)); } }
@Test public void testCreateSignature_2() throws ParseException { String secretKey1 = "secretKey1"; String secretKey2 = "secretKey2"; String stringToSign = "SHA256\n" + "19700101T000000Z\n" + "152176000cc08c7d9d0558bc3a50368aa38619a695ad20f50bec1344429cb315"; Date now = DateUtil.now(); String host = "api.tuppari.com"; String expectedSignature = "4815ff1681a278e7c852902ea3604f17831a80a78dc0ff82f5142598a034509b"; String result1 = SignUtil.createSignature(secretKey1, stringToSign, now, host); String result2 = SignUtil.createSignature(secretKey2, stringToSign, now, host); assertThat(result1, not(equalTo(result2))); }
@Test public void testCreateStringToSign() throws ParseException { String canonicalRequest = "POST\n" + "/test\n" + "a=v1&b=v2\n" + "content-type:application/json\n" + "host:api.tuppari.com\n" + "x-tuppari-operation:CreateApplication\n" + "content-type;host;x-tuppari-operation\n" + "8f2d5fe4a93000d3546e578d265fc936806f6ef6dc6f7ee87715e1a5c514c168"; Date now = DateUtil.now(); String result = SignUtil.createStringToSign(canonicalRequest, now); assertThat( result, is( "" + "SHA256\n" + "19700101T000000Z\n" + "152176000cc08c7d9d0558bc3a50368aa38619a695ad20f50bec1344429cb315")); }