1
+ package nl .martijndwars .webpush ;
2
+
3
+ import org .junit .jupiter .api .Test ;
4
+
5
+ import static com .google .common .io .BaseEncoding .base64 ;
6
+ import static com .google .common .io .BaseEncoding .base64Url ;
7
+ import static java .nio .charset .StandardCharsets .UTF_8 ;
8
+ import static nl .martijndwars .webpush .Base64Encoder .*;
9
+ import static org .junit .jupiter .api .Assertions .assertEquals ;
10
+
11
+ class Base64EncoderTest {
12
+
13
+ @ Test
14
+ void decodeTest () {
15
+ // first compare with previous guava implementation, make sure non-breaking changes
16
+ assertEquals (new String (base64 ().decode ("" )), new String (decode ("" )));
17
+ assertEquals (new String (base64 ().decode ("dw" )), new String (decode ("dw" )));
18
+ assertEquals (new String (base64 ().decode ("dw==" )), new String (decode ("dw==" )));
19
+ assertEquals (new String (base64 ().decode ("d2U" )), new String (decode ("d2U" )));
20
+ assertEquals (new String (base64 ().decode ("d2Vi" )), new String (decode ("d2Vi" )));
21
+ assertEquals (new String (base64 ().decode ("d2ViLQ" )), new String (decode ("d2ViLQ" )));
22
+ assertEquals (new String (base64 ().decode ("d2ViLQ==" )), new String (decode ("d2ViLQ==" )));
23
+ assertEquals (new String (base64 ().decode ("d2ViLXA" )), new String (decode ("d2ViLXA" )));
24
+ assertEquals (new String (base64 ().decode ("d2ViLXA=" )), new String (decode ("d2ViLXA=" )));
25
+ assertEquals (new String (base64 ().decode ("d2ViLXB1" )), new String (decode ("d2ViLXB1" )));
26
+ assertEquals (new String (base64 ().decode ("d2ViLXB1cw" )), new String (decode ("d2ViLXB1cw" )));
27
+ assertEquals (new String (base64 ().decode ("d2ViLXB1cw==" )), new String (decode ("d2ViLXB1cw==" )));
28
+ assertEquals (new String (base64 ().decode ("d2ViLXB1c2g" )), new String (decode ("d2ViLXB1c2g" )));
29
+ assertEquals (new String (base64 ().decode ("d2ViLXB1c2g=" )), new String (decode ("d2ViLXB1c2g=" )));
30
+ assertEquals (new String (base64 ().decode ("d2ViLXB1c2g/" )), new String (decode ("d2ViLXB1c2g/" )));
31
+ assertEquals (new String (base64Url ().decode ("d2ViLXB1c2g_" )), new String (decode ("d2ViLXB1c2g_" )));
32
+
33
+ assertEquals ("" , new String (decode ("" )));
34
+ assertEquals ("w" , new String (decode ("dw" )));
35
+ assertEquals ("w" , new String (decode ("dw==" )));
36
+ assertEquals ("we" , new String (decode ("d2U" )));
37
+ assertEquals ("web" , new String (decode ("d2Vi" )));
38
+ assertEquals ("web-" , new String (decode ("d2ViLQ" )));
39
+ assertEquals ("web-" , new String (decode ("d2ViLQ==" )));
40
+ assertEquals ("web-p" , new String (decode ("d2ViLXA" )));
41
+ assertEquals ("web-p" , new String (decode ("d2ViLXA=" )));
42
+ assertEquals ("web-pu" , new String (decode ("d2ViLXB1" )));
43
+ assertEquals ("web-pus" , new String (decode ("d2ViLXB1cw" )));
44
+ assertEquals ("web-pus" , new String (decode ("d2ViLXB1cw==" )));
45
+ assertEquals ("web-push" , new String (decode ("d2ViLXB1c2g" )));
46
+ assertEquals ("web-push" , new String (decode ("d2ViLXB1c2g=" )));
47
+ assertEquals ("web-push?" , new String (decode ("d2ViLXB1c2g/" )));
48
+ assertEquals ("web-push?" , new String (decode ("d2ViLXB1c2g_" )));
49
+ }
50
+
51
+ @ Test
52
+ void encodeWithoutPaddingTest () {
53
+ // first verify non breaking changes after removing guava as compile dependency
54
+ assertEquals (base64 ().omitPadding ().encode ("" .getBytes ()), encodeWithoutPadding ("" .getBytes (UTF_8 )));
55
+ assertEquals (base64 ().omitPadding ().encode ("w" .getBytes ()), encodeWithoutPadding ("w" .getBytes (UTF_8 )));
56
+ assertEquals (base64 ().omitPadding ().encode ("we" .getBytes ()), encodeWithoutPadding ("we" .getBytes (UTF_8 )));
57
+ assertEquals (base64 ().omitPadding ().encode ("web" .getBytes ()), encodeWithoutPadding ("web" .getBytes (UTF_8 )));
58
+ assertEquals (base64 ().omitPadding ().encode ("web-" .getBytes ()), encodeWithoutPadding ("web-" .getBytes (UTF_8 )));
59
+ assertEquals (base64 ().omitPadding ().encode ("web-p" .getBytes ()), encodeWithoutPadding ("web-p" .getBytes (UTF_8 )));
60
+ assertEquals (base64 ().omitPadding ().encode ("web-pu" .getBytes ()), encodeWithoutPadding ("web-pu" .getBytes (UTF_8 )));
61
+ assertEquals (base64 ().omitPadding ().encode ("web-pus" .getBytes ()), encodeWithoutPadding ("web-pus" .getBytes (UTF_8 )));
62
+ assertEquals (base64 ().omitPadding ().encode ("web-push" .getBytes ()), encodeWithoutPadding ("web-push" .getBytes (UTF_8 )));
63
+ assertEquals (base64 ().omitPadding ().encode ("web-push?" .getBytes ()), encodeWithoutPadding ("web-push?" .getBytes (UTF_8 )));
64
+
65
+ assertEquals ("" , encodeWithoutPadding ("" .getBytes (UTF_8 )));
66
+ assertEquals ("dw" , encodeWithoutPadding ("w" .getBytes (UTF_8 )));
67
+ assertEquals ("d2U" , encodeWithoutPadding ("we" .getBytes (UTF_8 )));
68
+ assertEquals ("d2Vi" , encodeWithoutPadding ("web" .getBytes (UTF_8 )));
69
+ assertEquals ("d2ViLQ" , encodeWithoutPadding ("web-" .getBytes (UTF_8 )));
70
+ assertEquals ("d2ViLXA" , encodeWithoutPadding ("web-p" .getBytes (UTF_8 )));
71
+ assertEquals ("d2ViLXB1" , encodeWithoutPadding ("web-pu" .getBytes (UTF_8 )));
72
+ assertEquals ("d2ViLXB1cw" , encodeWithoutPadding ("web-pus" .getBytes (UTF_8 )));
73
+ assertEquals ("d2ViLXB1c2g" , encodeWithoutPadding ("web-push" .getBytes (UTF_8 )));
74
+ assertEquals ("d2ViLXB1c2g/" , encodeWithoutPadding ("web-push?" .getBytes (UTF_8 )));
75
+ }
76
+
77
+ @ Test
78
+ void encodeUrlTest () {
79
+ // first verify non breaking changes after removing guava as compile dependency
80
+ assertEquals (base64Url ().encode ("" .getBytes ()), encodeUrl ("" .getBytes (UTF_8 )));
81
+ assertEquals (base64Url ().encode ("w" .getBytes ()), encodeUrl ("w" .getBytes (UTF_8 )));
82
+ assertEquals (base64Url ().encode ("we" .getBytes ()), encodeUrl ("we" .getBytes (UTF_8 )));
83
+ assertEquals (base64Url ().encode ("web" .getBytes ()), encodeUrl ("web" .getBytes (UTF_8 )));
84
+ assertEquals (base64Url ().encode ("web-" .getBytes ()), encodeUrl ("web-" .getBytes (UTF_8 )));
85
+ assertEquals (base64Url ().encode ("web-p" .getBytes ()), encodeUrl ("web-p" .getBytes (UTF_8 )));
86
+ assertEquals (base64Url ().encode ("web-pu" .getBytes ()), encodeUrl ("web-pu" .getBytes (UTF_8 )));
87
+ assertEquals (base64Url ().encode ("web-pus" .getBytes ()), encodeUrl ("web-pus" .getBytes (UTF_8 )));
88
+ assertEquals (base64Url ().encode ("web-push" .getBytes ()), encodeUrl ("web-push" .getBytes (UTF_8 )));
89
+ assertEquals (base64Url ().encode ("web-push?" .getBytes ()), encodeUrl ("web-push?" .getBytes (UTF_8 )));
90
+
91
+ assertEquals ("" , encodeUrl ("" .getBytes (UTF_8 )));
92
+ assertEquals ("dw==" , encodeUrl ("w" .getBytes (UTF_8 )));
93
+ assertEquals ("d2U=" , encodeUrl ("we" .getBytes (UTF_8 )));
94
+ assertEquals ("d2Vi" , encodeUrl ("web" .getBytes (UTF_8 )));
95
+ assertEquals ("d2ViLQ==" , encodeUrl ("web-" .getBytes (UTF_8 )));
96
+ assertEquals ("d2ViLXA=" , encodeUrl ("web-p" .getBytes (UTF_8 )));
97
+ assertEquals ("d2ViLXB1" , encodeUrl ("web-pu" .getBytes (UTF_8 )));
98
+ assertEquals ("d2ViLXB1cw==" , encodeUrl ("web-pus" .getBytes (UTF_8 )));
99
+ assertEquals ("d2ViLXB1c2g=" , encodeUrl ("web-push" .getBytes (UTF_8 )));
100
+ assertEquals ("d2ViLXB1c2g_" , encodeUrl ("web-push?" .getBytes (UTF_8 )));
101
+ }
102
+
103
+ @ Test
104
+ void encodeUrlWithoutPaddingTest () {
105
+ // first verify non breaking changes after removing guava as compile dependency
106
+ assertEquals (base64Url ().omitPadding ().encode ("" .getBytes ()), encodeUrlWithoutPadding ("" .getBytes (UTF_8 )));
107
+ assertEquals (base64Url ().omitPadding ().encode ("w" .getBytes ()), encodeUrlWithoutPadding ("w" .getBytes (UTF_8 )));
108
+ assertEquals (base64Url ().omitPadding ().encode ("we" .getBytes ()), encodeUrlWithoutPadding ("we" .getBytes (UTF_8 )));
109
+ assertEquals (base64Url ().omitPadding ().encode ("web" .getBytes ()), encodeUrlWithoutPadding ("web" .getBytes (UTF_8 )));
110
+ assertEquals (base64Url ().omitPadding ().encode ("web-" .getBytes ()), encodeUrlWithoutPadding ("web-" .getBytes (UTF_8 )));
111
+ assertEquals (base64Url ().omitPadding ().encode ("web-p" .getBytes ()), encodeUrlWithoutPadding ("web-p" .getBytes (UTF_8 )));
112
+ assertEquals (base64Url ().omitPadding ().encode ("web-pu" .getBytes ()), encodeUrlWithoutPadding ("web-pu" .getBytes (UTF_8 )));
113
+ assertEquals (base64Url ().omitPadding ().encode ("web-pus" .getBytes ()), encodeUrlWithoutPadding ("web-pus" .getBytes (UTF_8 )));
114
+ assertEquals (base64Url ().omitPadding ().encode ("web-push" .getBytes ()), encodeUrlWithoutPadding ("web-push" .getBytes (UTF_8 )));
115
+ assertEquals (base64Url ().omitPadding ().encode ("web-push?" .getBytes ()), encodeUrlWithoutPadding ("web-push?" .getBytes (UTF_8 )));
116
+
117
+ assertEquals ("" , encodeUrlWithoutPadding ("" .getBytes (UTF_8 )));
118
+ assertEquals ("dw" , encodeUrlWithoutPadding ("w" .getBytes (UTF_8 )));
119
+ assertEquals ("d2U" , encodeUrlWithoutPadding ("we" .getBytes (UTF_8 )));
120
+ assertEquals ("d2Vi" , encodeUrlWithoutPadding ("web" .getBytes (UTF_8 )));
121
+ assertEquals ("d2ViLQ" , encodeUrlWithoutPadding ("web-" .getBytes (UTF_8 )));
122
+ assertEquals ("d2ViLXA" , encodeUrlWithoutPadding ("web-p" .getBytes (UTF_8 )));
123
+ assertEquals ("d2ViLXB1" , encodeUrlWithoutPadding ("web-pu" .getBytes (UTF_8 )));
124
+ assertEquals ("d2ViLXB1cw" , encodeUrlWithoutPadding ("web-pus" .getBytes (UTF_8 )));
125
+ assertEquals ("d2ViLXB1c2g" , encodeUrlWithoutPadding ("web-push" .getBytes (UTF_8 )));
126
+ assertEquals ("d2ViLXB1c2g_" , encodeUrlWithoutPadding ("web-push?" .getBytes (UTF_8 )));
127
+ }
128
+ }
0 commit comments