From d89f36b67ea1d838a78523538a24e044518f3587 Mon Sep 17 00:00:00 2001 From: mcentner Date: Tue, 26 Jan 2010 16:22:56 +0000 Subject: MOCCA 1.2.11 with SHA-2 enabled. git-svn-id: https://joinup.ec.europa.eu/svn/mocca/branches/mocca-1.2.11-sha2@599 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../bku/binding/XWWWFormUrlInputIteratorTest.java | 299 +++++++++++++++++++++ 1 file changed, 299 insertions(+) create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIteratorTest.java (limited to 'mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIteratorTest.java') diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIteratorTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIteratorTest.java new file mode 100644 index 00000000..4d81f038 --- /dev/null +++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIteratorTest.java @@ -0,0 +1,299 @@ +package at.gv.egiz.bku.binding; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.CharBuffer; +import java.nio.channels.FileChannel; +import java.nio.charset.Charset; + +import org.junit.Ignore; +import org.junit.Test; + +import at.gv.egiz.bku.utils.URLEncodingWriter; +import static org.junit.Assert.*; + +public class XWWWFormUrlInputIteratorTest { + + @Test + public void testEmpty() throws IOException { + + ByteArrayInputStream emptyStream = new ByteArrayInputStream(new byte[] {}); + + XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(emptyStream); + + assertFalse(decoder.hasNext()); + + } + + @Test + public void testOneParam() throws IOException { + + final String name = "name"; + final String value = "value"; + + ByteArrayOutputStream os = new ByteArrayOutputStream(); + OutputStreamWriter w = new OutputStreamWriter(os, Charset.forName("UTF-8")); + w.write(name); + w.write("="); + w.write(value); + w.flush(); + w.close(); + + ByteArrayInputStream in = new ByteArrayInputStream(os.toByteArray()); + XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(in); + + assertTrue(decoder.hasNext()); + FormParameter param = decoder.next(); + assertNotNull(param); + assertEquals(name, param.getFormParameterName()); + InputStream vis = param.getFormParameterValue(); + assertNotNull(vis); + InputStreamReader r = new InputStreamReader(vis); + char[] buf = new char[value.length() + 1]; + int len = r.read(buf); + assertEquals(value.length(), len); + assertEquals(value, new String(buf, 0, len)); + assertFalse(decoder.hasNext()); + Exception ex = null; + try { + decoder.next(); + } catch (Exception e) { + ex = e; + } + assertNotNull(ex); + + } + + @Test + public void testTwoParam() throws IOException { + + final String name1 = "name"; + final String value1 = "value"; + final String name2 = "Name_2"; + final String value2 = "Value 2"; + + ByteArrayOutputStream os = new ByteArrayOutputStream(); + OutputStreamWriter w = new OutputStreamWriter(os, Charset.forName("UTF-8")); + w.write(name1); + w.write("="); + w.write(value1); + w.write("&"); + w.write(URLEncoder.encode(name2, "UTF-8")); + w.write("="); + w.write(URLEncoder.encode(value2, "UTF-8")); + w.flush(); + w.close(); + + ByteArrayInputStream in = new ByteArrayInputStream(os.toByteArray()); + XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(in); + + assertTrue(decoder.hasNext()); + FormParameter param = decoder.next(); + assertNotNull(param); + assertEquals(name1, param.getFormParameterName()); + InputStream vis = param.getFormParameterValue(); + assertNotNull(vis); + InputStreamReader r = new InputStreamReader(vis); + char[] buf = new char[value1.length() + 1]; + int len = r.read(buf); + assertEquals(value1.length(), len); + assertEquals(value1, new String(buf, 0, len)); + + assertTrue(decoder.hasNext()); + param = decoder.next(); + assertNotNull(param); + assertEquals(name2, param.getFormParameterName()); + vis = param.getFormParameterValue(); + assertNotNull(vis); + r = new InputStreamReader(vis); + buf = new char[value2.length() + 1]; + len = r.read(buf); + assertEquals(value2.length(), len); + assertEquals(value2, new String(buf, 0, len)); + + assertFalse(decoder.hasNext()); + } + + @Test + public void testURLEnc() throws IOException { + + String name = "name"; + byte[] value = new byte[128]; + for (int i = 0; i < value.length; i++) { + value[i] = (byte) i; + } + + String encValue = URLEncoder.encode(new String(value, "UTF-8"), "ASCII"); + System.out.println(encValue); + + ByteArrayOutputStream os = new ByteArrayOutputStream(); + OutputStreamWriter w = new OutputStreamWriter(os, Charset.forName("UTF-8")); + w.write(name); + w.write("="); + w.write(encValue); + w.flush(); + w.close(); + + ByteArrayInputStream in = new ByteArrayInputStream(os.toByteArray()); + XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(in); + + assertTrue(decoder.hasNext()); + FormParameter param = decoder.next(); + assertNotNull(param); + assertEquals(name, param.getFormParameterName()); + InputStream vis = param.getFormParameterValue(); + assertNotNull(vis); + byte[] buf = new byte[value.length]; + int len = vis.read(buf); + assertArrayEquals(value, buf); + assertEquals(value.length, len); + assertFalse(decoder.hasNext()); + Exception ex = null; + try { + decoder.next(); + } catch (Exception e) { + ex = e; + } + assertNotNull(ex); + + } + + @Test + public void testURLEnc1() throws IOException { + + InputStream urlEncStream = new BufferedInputStream(getClass() + .getResourceAsStream("XWWWFormUrlEncoded1.txt")); + + XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(urlEncStream); + + assertTrue(decoder.hasNext()); + FormParameter param = decoder.next(); + assertNotNull(param); + assertEquals("XMLRequest", param.getFormParameterName()); + InputStream vis = param.getFormParameterValue(); + assertNotNull(vis); + ByteArrayOutputStream os = new ByteArrayOutputStream(); + byte[] buf = new byte[1024]; + for (int l; (l = vis.read(buf)) != -1;) { + os.write(buf, 0, l); + } + assertEquals(-1, vis.read()); + assertFalse(decoder.hasNext()); + assertEquals(-1, urlEncStream.read()); + + } + + @Test + public void testURLEnc2() throws IOException { + + InputStream urlEncStream = new BufferedInputStream(getClass() + .getResourceAsStream("XWWWFormUrlEncoded2.txt")); + + XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(urlEncStream); + + assertTrue(decoder.hasNext()); + FormParameter param = decoder.next(); + assertNotNull(param); + assertEquals("XMLRequest", param.getFormParameterName()); + InputStream vis = param.getFormParameterValue(); + assertNotNull(vis); + ByteArrayOutputStream os = new ByteArrayOutputStream(); + byte[] buf = new byte[1024]; + for (int l; (l = vis.read(buf)) != -1;) { + os.write(buf, 0, l); + } + assertEquals(-1, vis.read()); + vis.close(); + + assertTrue(decoder.hasNext()); + param = decoder.next(); + assertNotNull(param); + assertEquals("EmptyParam", param.getFormParameterName()); + vis = param.getFormParameterValue(); + assertNotNull(vis); + assertEquals(-1, vis.read()); + vis.close(); + + assertTrue(decoder.hasNext()); + param = decoder.next(); + assertNotNull(param); + assertEquals("TransferParam__", param.getFormParameterName()); + vis = param.getFormParameterValue(); + assertNotNull(vis); + for (int l = 0; (l = vis.read(buf)) != -1;) { + os.write(buf, 0, l); + } + assertEquals(-1, vis.read()); + vis.close(); + + } + + @Ignore + @Test + public void testURLEncLoremIpsum() throws IOException { + + InputStream urlEncStream = new BufferedInputStream(getClass() + .getResourceAsStream("UrlEncodedLoremIpsum.txt")); + + XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(urlEncStream); + + assertTrue(decoder.hasNext()); + FormParameter param = decoder.next(); + assertNotNull(param); + assertEquals("LoremIpsum", param.getFormParameterName()); + InputStream vis = param.getFormParameterValue(); + assertNotNull(vis); + ByteArrayOutputStream os = new ByteArrayOutputStream(); + byte[] buf = new byte[1024]; + for (int l; (l = vis.read(buf)) != -1;) { + os.write(buf, 0, l); + } + assertEquals(-1, vis.read()); + vis.close(); + + assertFalse(decoder.hasNext()); + + } + + + public static void main(String[] args) throws IOException { + + URL resource = XWWWFormUrlInputIteratorTest.class + .getResource("LoremIpsum.txt"); + + BufferedInputStream is = new BufferedInputStream(resource.openStream()); + + InputStreamReader reader = new InputStreamReader(is, "UTF-8"); + + StringBuilder sb = new StringBuilder(); + char[] b = new char[1024]; + for (int l; (l = reader.read(b)) != -1;) { + sb.append(b, 0, l); + } + String li = sb.toString(); + + FileOutputStream os = new FileOutputStream("UrlEncodedLoremIpsum.txt"); + OutputStreamWriter writer = new OutputStreamWriter(new BufferedOutputStream(os), "ISO-8859-1"); + URLEncodingWriter encoder = new URLEncodingWriter(writer); + + for (int i = 0; i < 100; i++) { + encoder.write(li); + } + + encoder.flush(); + encoder.close(); + + } + +} -- cgit v1.2.3