1 package com.atlassian.asap.core.keys;
2
3 import org.junit.Test;
4
5 import java.nio.charset.StandardCharsets;
6
7 import static org.hamcrest.Matchers.is;
8 import static org.junit.Assert.assertThat;
9
10 public class DataUriUtilTest {
11 @Test
12 public void shouldDecodeUrlEncodedKeyId() {
13 String keyId = DataUriUtil.getKeyId("data:mime/type;kid=a%2Fb%2Fc%2Bd%2Fapi.key;base64,encoded/key+data==");
14 assertThat(keyId, is("a/b/c+d/api.key"));
15 }
16
17 @Test
18 public void shouldDecodeBase64EncodedKeyData() {
19 byte[] keyData = DataUriUtil.getKeyData("data:mime/type;kid=a%2Fb%2Fc-key;base64,U2VjcmV0IEtleSE=");
20 assertThat(keyData, is("Secret Key!".getBytes(StandardCharsets.US_ASCII)));
21 }
22
23 @Test(expected = IllegalArgumentException.class)
24 public void shouldRejectOtherSchemes() {
25 byte[] keyData = DataUriUtil.getKeyData("keys:mime/type;kid=a%2Fb%2Fc-key;base64,U2VjcmV0IEtleSE=");
26 assertThat(keyData, is("Secret Key!".getBytes(StandardCharsets.US_ASCII)));
27 }
28
29 @Test(expected = IllegalArgumentException.class)
30 public void shouldHandleMissingKeyId() {
31 DataUriUtil.getKeyId("data:mime/type;base64,encoded/key+data==");
32 }
33
34 @Test(expected = IllegalArgumentException.class)
35 public void shouldHandleMissingKeyData() {
36 DataUriUtil.getKeyId("data:mime/type;kid=a%2Fb%2Fc+d-key;base64,");
37 }
38
39 @Test(expected = IllegalArgumentException.class)
40 public void shouldRejectKeyIdsWithoutUrlEncoding() {
41 DataUriUtil.getKeyId("data:mime/type;kid=a/b/c/key;base64,encoded/key+data==");
42 }
43
44 @Test(expected = IllegalArgumentException.class)
45 public void shouldRejectKeyDataWithoutBase64Encoding() {
46 DataUriUtil.getKeyData("data:mime/type;kid=a%2Fb%2Fc-key;none,secret");
47 }
48 }