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