package tests; import java.text.ParseException; import java.util.Date; import java.util.HashSet; import java.util.Set; import models.helpers.Mapper; import models.helpers.SetOperations; import models.helpers.Tools; import org.junit.Test; public class ToolsTest extends MockedUnitTest { @Test public void shouldConvertMarkdown() { assertEquals(Tools.markdownToHtml("*italic*"), "<p><em>italic</em></p>"); assertEquals(Tools.markdownToHtml("**bold**"), "<p><strong>bold</strong></p>"); assertEquals(Tools.markdownToHtml("<code>code</code>"), "<p><code>code</code></p>"); assertEquals(Tools.markdownToHtml("<script>alert('XSS')</script>"), ""); assertEquals(Tools.markdownToHtml("<"), "<p><</p>"); assertEquals(Tools.markdownToHtml("<"), "<p><</p>"); } @Test public void shouldStripHtml() { assertEquals(Tools.htmlToText("<p><em>italic</em></p>"), "italic"); assertEquals(Tools.htmlToText("<p><code>code</code></p>"), "code"); assertEquals(Tools.htmlToText("<script>alert('XSS')</script>"), ""); assertEquals(Tools.htmlToText("<p><</p>"), "<"); } @Test public void shouldConvertDateToString() throws ParseException { long dec6 = 1291590000000L; assertEquals(Tools.stringToDate("06.12.2010").getTime(), dec6); assertEquals(Tools.stringToDate("12/06/2010").getTime(), dec6); assertEquals(Tools.stringToDate("2010-12-06").getTime(), dec6); assertNull(Tools.stringToDate("Dec 6 2010")); assertEquals(Tools.dateToString(new Date(dec6)), "06.12.2010"); assertNull(Tools.dateToString(null)); } @Test public void shouldKnowSetOperations() { Set<String> set1 = new HashSet(); Set<String> set2 = new HashSet(); Set<String> set3 = new HashSet(); for (int i = 0; i < 3; i++) set1.add("item " + i); for (int i = 0; i < 5; i++) set2.add("item " + i); assertTrue(SetOperations.isSubset(set1, set2)); assertFalse(SetOperations.isSubset(set2, set1)); assertFalse(SetOperations.isSuperset(set1, set2)); assertTrue(SetOperations.isSuperset(set2, set1)); assertTrue(SetOperations.containsAny(set1, set2)); assertTrue(SetOperations.containsAny(set2, set1)); assertFalse(SetOperations.containsAny(set1, set3)); assertFalse(SetOperations.containsAny(set3, set1)); set3 = SetOperations.union(set1, set2); assertEquals(SetOperations.difference(set3, set2).size(), 0); set3 = SetOperations.symDifference(set1, set2); assertEquals(SetOperations.intersection(set3, set1).size(), 0); assertEquals(SetOperations.intersection(set3, set2).size(), 2); Integer a1[] = { 1, 2 }; Integer a2[] = { 1, 2, 3 }; Integer a3[] = { 1, 2, 4 }; assertTrue(SetOperations.arrayEquals(a1, a1)); assertFalse(SetOperations.arrayEquals(a1, a2)); assertFalse(SetOperations.arrayEquals(a2, a3)); } @Test public void shouldDigestPasswords() { // Source: http://en.wikipedia.org/wiki/Examples_of_SHA_digests assertEquals(Tools.encrypt(""), "da39a3ee5e6b4b0d3255bfef95601890afd80709"); assertNotSame(Tools.encrypt("password"), Tools.encrypt("Password")); // Source: http://en.wikipedia.org/wiki/MD5#MD5_hashes assertEquals(Tools.digest("", "MD5"), "d41d8cd98f00b204e9800998ecf8427e"); assertNull(Tools.digest("a", "Cobertura-Dummy-Algo")); } @Test public void shouldMakeCoberturaHappy() { new Mapper(); new Tools(); new SetOperations(); } }