From f968d443b7f3800a63caadeb139a880f3ccc46cc Mon Sep 17 00:00:00 2001 From: chochos Date: Thu, 14 Jun 2012 18:21:04 +0000 Subject: [PATCH] Tests to make sure only the specified exceptions get thrown when parsing invalid messages git-svn-id: https://j8583.svn.sourceforge.net/svnroot/j8583/j8583@105 db60a039-f72e-0410-b1d2-baa000846441 --- src/test/java/j8583/TestParsing.java | 99 ++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 src/test/java/j8583/TestParsing.java diff --git a/src/test/java/j8583/TestParsing.java b/src/test/java/j8583/TestParsing.java new file mode 100644 index 0000000..15d9a95 --- /dev/null +++ b/src/test/java/j8583/TestParsing.java @@ -0,0 +1,99 @@ +package j8583; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.text.ParseException; + +import org.junit.Before; +import org.junit.Test; + +import com.solab.iso8583.MessageFactory; + +/** Test that parsing invalid messages is properly handled. + * + * @author Enrique Zamudio + */ +public class TestParsing { + + private MessageFactory mf; + + @Before + public void init() throws IOException { + mf = new MessageFactory(); + mf.setCharacterEncoding("UTF-8"); + mf.setCustomField(48, new CustomField48()); + mf.setConfigPath("config.xml"); + } + + @Test(expected=ParseException.class) + public void testEmpty() throws ParseException, UnsupportedEncodingException { + mf.parseMessage(new byte[0], 0); + } + + @Test(expected=ParseException.class) + public void testShort() throws ParseException, UnsupportedEncodingException { + mf.parseMessage(new byte[20], 8); + } + + @Test(expected=ParseException.class) + public void testShortBin() throws ParseException, UnsupportedEncodingException { + mf.setUseBinaryMessages(true); + mf.parseMessage(new byte[10], 1); + } + + @Test(expected=ParseException.class) + public void testShortSecondaryBitmap() throws ParseException, UnsupportedEncodingException { + mf.parseMessage("02008000000000000000".getBytes(), 0); + } + + @Test(expected=ParseException.class) + public void testShortSecondaryBitmapBin() throws ParseException, UnsupportedEncodingException { + mf.setUseBinaryMessages(true); + mf.parseMessage(new byte[]{ 2, 0, (byte)128, 0, 0, 0, 0, 0, 0, 0 }, 0); + } + + @Test(expected=ParseException.class) + public void testNoFields() throws ParseException, UnsupportedEncodingException { + mf.parseMessage("0210B23A80012EA080180000000014000004".getBytes(), 0); + } + + @Test(expected=ParseException.class) + public void testNoFieldsBin() throws ParseException, UnsupportedEncodingException { + mf.setUseBinaryMessages(true); + mf.parseMessage(new byte[]{2, 0x10, (byte)0xB2, 0x3A, (byte)0x80, 1, 0x2E, (byte)0xA0, (byte)0x80, 0x18, 0, 0, 0, 0, 0x14, 0, 0, 4}, 0); + } + + @Test(expected=ParseException.class) + public void testIncompleteFixedField() throws ParseException, UnsupportedEncodingException { + mf.parseMessage("0210B23A80012EA08018000000001400000465000".getBytes(), 0); + } + + @Test(expected=ParseException.class) + public void testIncompleteFixedFieldBin() throws ParseException, UnsupportedEncodingException { + mf.setUseBinaryMessages(true); + mf.parseMessage(new byte[]{2, 0x10, (byte)0xB2, 0x3A, (byte)0x80, 1, 0x2E, (byte)0xA0, (byte)0x80, 0x18, 0, 0, 0, 0, 0x14, 0, 0, 4, 0x65, 0}, 0); + } + + @Test(expected=ParseException.class) + public void testIncompleteVarFieldHeader() throws ParseException, UnsupportedEncodingException { + mf.parseMessage("0210B23A80012EA08018000000001400000465000000000000300004281305474687711259460428042808115".getBytes(), 0); + } + + @Test(expected=ParseException.class) + public void testIncompleteVarFieldHeaderBin() throws ParseException, UnsupportedEncodingException { + mf.setUseBinaryMessages(true); + mf.parseMessage(new byte[]{2, 0x10, (byte)0xB2, 0x3A, (byte)0x80, 1, 0x2E, (byte)0xA0, (byte)0x80, 0x18, 0, 0, 0, 0, 0x14, 0, 0, 4, 0x65, 0, 0, 0, 0, 0, 0, 0x30, 0, 0x04, 0x28, 0x13, 0x05, 0x47, 0x46, (byte)0x87, 0x71, 0x12, 0x59, 0x46, 0x04, 0x28, 0x04, 0x28, 0x08, 0x11}, 0); + } + + @Test(expected=ParseException.class) + public void testIncompleteVarFieldData() throws ParseException, UnsupportedEncodingException { + mf.parseMessage("0210B23A80012EA0801800000000140000046500000000000030000428130547468771125946042804280811051234".getBytes(), 0); + } + + @Test(expected=ParseException.class) + public void testIncompleteVarFieldDataBin() throws ParseException, UnsupportedEncodingException { + mf.setUseBinaryMessages(true); + mf.parseMessage(new byte[]{2, 0x10, (byte)0xB2, 0x3A, (byte)0x80, 1, 0x2E, (byte)0xA0, (byte)0x80, 0x18, 0, 0, 0, 0, 0x14, 0, 0, 4, 0x65, 0, 0, 0, 0, 0, 0, 0x30, 0, 0x04, 0x28, 0x13, 0x05, 0x47, 0x46, (byte)0x87, 0x71, 0x12, 0x59, 0x46, 0x04, 0x28, 0x04, 0x28, 0x08, 0x11, 0x05, 0x12, 0x34}, 0); + } + +}