1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package de.aikiit.spamprotector.converter;
19
20 import org.junit.Test;
21
22 import static org.assertj.core.api.Assertions.assertThat;
23
24
25
26
27 public class SpamProtectorTest {
28
29 @Test
30 public void conversionRoundtripNull() {
31 assertThat(SpamProtector.toEncoded(null)).isNull();
32 assertThat(SpamProtector.toPlain(null)).isNull();
33
34 assertThat(SpamProtector.toEncoded("")).isEmpty();
35 assertThat(SpamProtector.toPlain("")).isEmpty();
36 }
37
38 @Test
39 public void conversionExample() {
40 assertThat(SpamProtector.toEncoded(" ")).isEqualTo(CharacterConverter.SPACE.getReplacement());
41 assertThat(SpamProtector.toPlain(" ")).isEqualTo(CharacterConverter.SPACE.getPlain());
42 }
43
44 @Test
45 public void singleCharactersAreConverted() {
46 assertThat(SpamProtector.toEncoded(String.valueOf(' '))).isEqualTo(" ");
47 assertThat(SpamProtector.toEncoded(" ")).isEqualTo(" ");
48 }
49
50 @Test
51 public void asciiOnlyIsEncodedCompletelyWithSpacesAndAtSign() {
52 String input = "mailto:w oo@suck.er";
53 assertThat(SpamProtector.toEncoded(input)).isEqualTo("mailto:w o" +
54 "o@suck.er");
55 }
56
57 @Test
58 public void nonAsciCharactersAreNotEncodedButTheRest() {
59 String input = "mailto:wフィリップoo@suck.нетer";
60 assertThat(SpamProtector.toEncoded(input)).isEqualTo("mailto:wフィリップo" +
61 "o@suck.нетer");
62 }
63
64 @Test
65 public void asciiIsConvertedToPlainText() {
66 String input = "mailto:w oo@suck.er";
67 String encoded = "mailto:w oo@suck.er";
68
69 assertThat(SpamProtector.toPlain(encoded)).isEqualTo(input);
70 }
71
72 @Test
73 public void mixOfEncodedAndNonAsciiPlainCanBeDecoded() {
74 String plain = "mailto:wフィリップoo@suck.нетer";
75 String encoded = "mailto:wフィリップoo@suck.нетer";
76 assertThat(SpamProtector.toPlain(encoded)).isEqualTo(plain);
77 }
78
79 @Test
80 public void stupidInputDecode() {
81 assertThat(SpamProtector.toPlain("")).isEmpty();
82 assertThat(SpamProtector.toPlain(null)).isNull();
83 assertThat(SpamProtector.toPlain("²")).isEqualTo("²");
84 }
85
86 @Test
87 public void stupidInputEncode() {
88 assertThat(SpamProtector.toEncoded("")).isEmpty();
89 assertThat(SpamProtector.toEncoded(null)).isNull();
90 assertThat(SpamProtector.toEncoded("²")).isEqualTo("²");
91 }
92
93 @Test
94 public void issue24LowercasingIsDefaultBehaviour() {
95 assertThat(SpamProtector.toPlain(CharacterConverter.CAPITAL_A.getPlain())).isEqualTo("A");
96 assertThat(SpamProtector.toPlain(CharacterConverter.A.getPlain())).isEqualTo("a");
97 }
98
99 }