You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2010/11/19 18:22:25 UTC
svn commit: r1036952 -
/directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/KrbErrorDecoderTest.java
Author: kayyagari
Date: Fri Nov 19 17:22:24 2010
New Revision: 1036952
URL: http://svn.apache.org/viewvc?rev=1036952&view=rev
Log:
o added some more test cases
Modified:
directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/KrbErrorDecoderTest.java
Modified: directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/KrbErrorDecoderTest.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/KrbErrorDecoderTest.java?rev=1036952&r1=1036951&r2=1036952&view=diff
==============================================================================
--- directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/KrbErrorDecoderTest.java (original)
+++ directory/apacheds/trunk/kerberos-codec/src/test/java/org/apache/directory/shared/kerberos/codec/KrbErrorDecoderTest.java Fri Nov 19 17:22:24 2010
@@ -20,7 +20,8 @@
package org.apache.directory.shared.kerberos.codec;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -403,4 +404,578 @@ public class KrbErrorDecoderTest
}
}
+
+ @Test
+ public void testDecodeKrbErrorWithoutCrealm()
+ {
+ Asn1Decoder decoder = new Asn1Decoder();
+
+ int streamLen = 0x84;
+ ByteBuffer stream = ByteBuffer.allocate( streamLen );
+ stream.put( new byte[]
+ {
+ 0x7E, (byte)0x81, (byte)0x81,
+ 0x30, (byte)0x7F,
+ (byte)0xA0, 0x03, // pvno
+ 0x02, 0x01, 0x05,
+ (byte)0xA1, 0x03, // msg-type
+ 0x02, 0x01, 0x1E,
+ (byte)0xA2, 0x11, // ctime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA3, 0x03, // cusec
+ 0x02, 0x01, 0x01,
+ (byte)0xA4, 0x11, // stime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA5, 0x03, // susec
+ 0x02, 0x01, 0x02,
+ (byte)0xA6, 0x03, // error-code
+ 0x02, 0x01, 0x00,
+ // NO crealm
+ (byte)0xA8, 0x12, // cname
+ 0x30, 0x10,
+ (byte)0xA0, 0x03,
+ 0x02, 0x01, 0x00,
+ (byte)0xA1, 0x09,
+ 0x30, 0x07,
+ 0x1B, 0x05, 'c', 'n', 'a', 'm', 'e',
+ (byte)0xA9, 0x07, // realm
+ 0x1B, 0x05, 'r', 'e', 'a', 'l', 'm',
+ (byte)0xAA, 0x12, // sname
+ 0x30, 0x10,
+ (byte)0xA0, 0x03,
+ 0x02, 0x01, 0x00,
+ (byte)0xA1, 0x09,
+ 0x30, 0x07,
+ 0x1B, 0x05, 's', 'n', 'a', 'm', 'e',
+ (byte)0xAB, 0x07, // e-text
+ 0x1B, 0x5, 'e', 't', 'e', 'x', 't',
+ (byte)0xAC, 0x04, // e-data
+ 0x04, 0x02,
+ 0x00, 0x01
+ } );
+
+ String decoded = StringTools.dumpBytes( stream.array() );
+ stream.flip();
+
+ KrbErrorContainer container = new KrbErrorContainer();
+ container.setStream( stream );
+
+ try
+ {
+ decoder.decode( stream, container );
+ }
+ catch( DecoderException e )
+ {
+ fail();
+ }
+
+ KrbError krbError = container.getKrbError();
+
+ assertNull( krbError.getcRealm() );
+
+ int encodedLen = krbError.computeLength();
+
+ assertEquals( streamLen, encodedLen );
+
+ ByteBuffer buffer = ByteBuffer.allocate( streamLen );
+ try
+ {
+ buffer = krbError.encode( buffer );
+
+ assertEquals( decoded, StringTools.dumpBytes( buffer.array() ) );
+ }
+ catch( EncoderException e )
+ {
+ fail();
+ }
+ }
+
+
+ @Test
+ public void testDecodeKrbErrorWithoutCname()
+ {
+ Asn1Decoder decoder = new Asn1Decoder();
+
+ int streamLen = 0x79;
+ ByteBuffer stream = ByteBuffer.allocate( streamLen );
+ stream.put( new byte[]
+ {
+ 0x7E, (byte)0x77,
+ 0x30, (byte)0x75,
+ (byte)0xA0, 0x03, // pvno
+ 0x02, 0x01, 0x05,
+ (byte)0xA1, 0x03, // msg-type
+ 0x02, 0x01, 0x1E,
+ (byte)0xA2, 0x11, // ctime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA3, 0x03, // cusec
+ 0x02, 0x01, 0x01,
+ (byte)0xA4, 0x11, // stime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA5, 0x03, // susec
+ 0x02, 0x01, 0x02,
+ (byte)0xA6, 0x03, // error-code
+ 0x02, 0x01, 0x00,
+ (byte)0xA7, 0x08, // crealm
+ 0x1B, 0x06, 'c', 'r', 'e', 'a', 'l', 'm',
+ // NO cname
+ (byte)0xA9, 0x07, // realm
+ 0x1B, 0x05, 'r', 'e', 'a', 'l', 'm',
+ (byte)0xAA, 0x12, // sname
+ 0x30, 0x10,
+ (byte)0xA0, 0x03,
+ 0x02, 0x01, 0x00,
+ (byte)0xA1, 0x09,
+ 0x30, 0x07,
+ 0x1B, 0x05, 's', 'n', 'a', 'm', 'e',
+ (byte)0xAB, 0x07, // e-text
+ 0x1B, 0x5, 'e', 't', 'e', 'x', 't',
+ (byte)0xAC, 0x04, // e-data
+ 0x04, 0x02,
+ 0x00, 0x01
+ } );
+
+ String decoded = StringTools.dumpBytes( stream.array() );
+ stream.flip();
+
+ KrbErrorContainer container = new KrbErrorContainer();
+ container.setStream( stream );
+
+ try
+ {
+ decoder.decode( stream, container );
+ }
+ catch( DecoderException e )
+ {
+ fail();
+ }
+
+ KrbError krbError = container.getKrbError();
+
+ assertNull( krbError.getcName() );
+
+ int encodedLen = krbError.computeLength();
+
+ assertEquals( streamLen, encodedLen );
+
+ ByteBuffer buffer = ByteBuffer.allocate( streamLen );
+ try
+ {
+ buffer = krbError.encode( buffer );
+
+ assertEquals( decoded, StringTools.dumpBytes( buffer.array() ) );
+ }
+ catch( EncoderException e )
+ {
+ fail();
+ }
+ }
+
+
+ @Test
+ public void testDecodeKrbErrorWithoutCrealmAndCname()
+ {
+ Asn1Decoder decoder = new Asn1Decoder();
+
+ int streamLen = 0x6F;
+ ByteBuffer stream = ByteBuffer.allocate( streamLen );
+ stream.put( new byte[]
+ {
+ 0x7E, (byte)0x6D,
+ 0x30, (byte)0x6B,
+ (byte)0xA0, 0x03, // pvno
+ 0x02, 0x01, 0x05,
+ (byte)0xA1, 0x03, // msg-type
+ 0x02, 0x01, 0x1E,
+ (byte)0xA2, 0x11, // ctime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA3, 0x03, // cusec
+ 0x02, 0x01, 0x01,
+ (byte)0xA4, 0x11, // stime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA5, 0x03, // susec
+ 0x02, 0x01, 0x02,
+ (byte)0xA6, 0x03, // error-code
+ 0x02, 0x01, 0x00,
+ // NO crealm and cname
+ (byte)0xA9, 0x07, // realm
+ 0x1B, 0x05, 'r', 'e', 'a', 'l', 'm',
+ (byte)0xAA, 0x12, // sname
+ 0x30, 0x10,
+ (byte)0xA0, 0x03,
+ 0x02, 0x01, 0x00,
+ (byte)0xA1, 0x09,
+ 0x30, 0x07,
+ 0x1B, 0x05, 's', 'n', 'a', 'm', 'e',
+ (byte)0xAB, 0x07, // e-text
+ 0x1B, 0x5, 'e', 't', 'e', 'x', 't',
+ (byte)0xAC, 0x04, // e-data
+ 0x04, 0x02,
+ 0x00, 0x01
+ } );
+
+ String decoded = StringTools.dumpBytes( stream.array() );
+ stream.flip();
+
+ KrbErrorContainer container = new KrbErrorContainer();
+ container.setStream( stream );
+
+ try
+ {
+ decoder.decode( stream, container );
+ }
+ catch( DecoderException e )
+ {
+ fail();
+ }
+
+ KrbError krbError = container.getKrbError();
+
+ assertNull( krbError.getcRealm() );
+ assertNull( krbError.getcName() );
+
+ int encodedLen = krbError.computeLength();
+
+ assertEquals( streamLen, encodedLen );
+
+ ByteBuffer buffer = ByteBuffer.allocate( streamLen );
+ try
+ {
+ buffer = krbError.encode( buffer );
+
+ assertEquals( decoded, StringTools.dumpBytes( buffer.array() ) );
+ }
+ catch( EncoderException e )
+ {
+ fail();
+ }
+ }
+
+
+ @Test
+ public void testDecodeKrbErrorWithoutEtext()
+ {
+ Asn1Decoder decoder = new Asn1Decoder();
+
+ int streamLen = 0x86;
+ ByteBuffer stream = ByteBuffer.allocate( streamLen );
+ stream.put( new byte[]
+ {
+ 0x7E, (byte)0x81, (byte)0x83,
+ 0x30, (byte)0x81, (byte)0x80,
+ (byte)0xA0, 0x03, // pvno
+ 0x02, 0x01, 0x05,
+ (byte)0xA1, 0x03, // msg-type
+ 0x02, 0x01, 0x1E,
+ (byte)0xA2, 0x11, // ctime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA3, 0x03, // cusec
+ 0x02, 0x01, 0x01,
+ (byte)0xA4, 0x11, // stime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA5, 0x03, // susec
+ 0x02, 0x01, 0x02,
+ (byte)0xA6, 0x03, // error-code
+ 0x02, 0x01, 0x00,
+ (byte)0xA7, 0x08, // crealm
+ 0x1B, 0x06, 'c', 'r', 'e', 'a', 'l', 'm',
+ (byte)0xA8, 0x12, // cname
+ 0x30, 0x10,
+ (byte)0xA0, 0x03,
+ 0x02, 0x01, 0x00,
+ (byte)0xA1, 0x09,
+ 0x30, 0x07,
+ 0x1B, 0x05, 'c', 'n', 'a', 'm', 'e',
+ (byte)0xA9, 0x07, // realm
+ 0x1B, 0x05, 'r', 'e', 'a', 'l', 'm',
+ (byte)0xAA, 0x12, // sname
+ 0x30, 0x10,
+ (byte)0xA0, 0x03,
+ 0x02, 0x01, 0x00,
+ (byte)0xA1, 0x09,
+ 0x30, 0x07,
+ 0x1B, 0x05, 's', 'n', 'a', 'm', 'e',
+ // NO etext
+ (byte)0xAC, 0x04, // e-data
+ 0x04, 0x02,
+ 0x00, 0x01
+ } );
+
+ String decoded = StringTools.dumpBytes( stream.array() );
+ stream.flip();
+
+ KrbErrorContainer container = new KrbErrorContainer();
+ container.setStream( stream );
+
+ try
+ {
+ decoder.decode( stream, container );
+ }
+ catch( DecoderException e )
+ {
+ fail();
+ }
+
+ KrbError krbError = container.getKrbError();
+
+ assertNull( krbError.geteText() );
+
+ int encodedLen = krbError.computeLength();
+
+ assertEquals( streamLen, encodedLen );
+
+ ByteBuffer buffer = ByteBuffer.allocate( streamLen );
+ try
+ {
+ buffer = krbError.encode( buffer );
+
+ assertEquals( decoded, StringTools.dumpBytes( buffer.array() ) );
+ }
+ catch( EncoderException e )
+ {
+ fail();
+ }
+ }
+
+
+ @Test
+ public void testDecodeKrbErrorWithoutEdata()
+ {
+ Asn1Decoder decoder = new Asn1Decoder();
+
+ int streamLen = 0x89;
+ ByteBuffer stream = ByteBuffer.allocate( streamLen );
+ stream.put( new byte[]
+ {
+ 0x7E, (byte)0x81, (byte)0x86,
+ 0x30, (byte)0x81, (byte)0x83,
+ (byte)0xA0, 0x03, // pvno
+ 0x02, 0x01, 0x05,
+ (byte)0xA1, 0x03, // msg-type
+ 0x02, 0x01, 0x1E,
+ (byte)0xA2, 0x11, // ctime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA3, 0x03, // cusec
+ 0x02, 0x01, 0x01,
+ (byte)0xA4, 0x11, // stime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA5, 0x03, // susec
+ 0x02, 0x01, 0x02,
+ (byte)0xA6, 0x03, // error-code
+ 0x02, 0x01, 0x00,
+ (byte)0xA7, 0x08, // crealm
+ 0x1B, 0x06, 'c', 'r', 'e', 'a', 'l', 'm',
+ (byte)0xA8, 0x12, // cname
+ 0x30, 0x10,
+ (byte)0xA0, 0x03,
+ 0x02, 0x01, 0x00,
+ (byte)0xA1, 0x09,
+ 0x30, 0x07,
+ 0x1B, 0x05, 'c', 'n', 'a', 'm', 'e',
+ (byte)0xA9, 0x07, // realm
+ 0x1B, 0x05, 'r', 'e', 'a', 'l', 'm',
+ (byte)0xAA, 0x12, // sname
+ 0x30, 0x10,
+ (byte)0xA0, 0x03,
+ 0x02, 0x01, 0x00,
+ (byte)0xA1, 0x09,
+ 0x30, 0x07,
+ 0x1B, 0x05, 's', 'n', 'a', 'm', 'e',
+ (byte)0xAB, 0x07, // e-text
+ 0x1B, 0x5, 'e', 't', 'e', 'x', 't'
+ } );
+
+ String decoded = StringTools.dumpBytes( stream.array() );
+ stream.flip();
+
+ KrbErrorContainer container = new KrbErrorContainer();
+ container.setStream( stream );
+
+ try
+ {
+ decoder.decode( stream, container );
+ }
+ catch( DecoderException e )
+ {
+ fail();
+ }
+
+ KrbError krbError = container.getKrbError();
+
+ assertNull( krbError.geteData() );
+
+ int encodedLen = krbError.computeLength();
+
+ assertEquals( streamLen, encodedLen );
+
+ ByteBuffer buffer = ByteBuffer.allocate( streamLen );
+ try
+ {
+ buffer = krbError.encode( buffer );
+
+ assertEquals( decoded, StringTools.dumpBytes( buffer.array() ) );
+ }
+ catch( EncoderException e )
+ {
+ fail();
+ }
+ }
+
+
+ @Test
+ public void testDecodeKrbErrorWithoutEtextAndEdata()
+ {
+ Asn1Decoder decoder = new Asn1Decoder();
+
+ int streamLen = 0x7E;
+ ByteBuffer stream = ByteBuffer.allocate( streamLen );
+ stream.put( new byte[]
+ {
+ 0x7E, (byte)0x7C,
+ 0x30, (byte)0x7A,
+ (byte)0xA0, 0x03, // pvno
+ 0x02, 0x01, 0x05,
+ (byte)0xA1, 0x03, // msg-type
+ 0x02, 0x01, 0x1E,
+ (byte)0xA2, 0x11, // ctime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA3, 0x03, // cusec
+ 0x02, 0x01, 0x01,
+ (byte)0xA4, 0x11, // stime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA5, 0x03, // susec
+ 0x02, 0x01, 0x02,
+ (byte)0xA6, 0x03, // error-code
+ 0x02, 0x01, 0x00,
+ (byte)0xA7, 0x08, // crealm
+ 0x1B, 0x06, 'c', 'r', 'e', 'a', 'l', 'm',
+ (byte)0xA8, 0x12, // cname
+ 0x30, 0x10,
+ (byte)0xA0, 0x03,
+ 0x02, 0x01, 0x00,
+ (byte)0xA1, 0x09,
+ 0x30, 0x07,
+ 0x1B, 0x05, 'c', 'n', 'a', 'm', 'e',
+ (byte)0xA9, 0x07, // realm
+ 0x1B, 0x05, 'r', 'e', 'a', 'l', 'm',
+ (byte)0xAA, 0x12, // sname
+ 0x30, 0x10,
+ (byte)0xA0, 0x03,
+ 0x02, 0x01, 0x00,
+ (byte)0xA1, 0x09,
+ 0x30, 0x07,
+ 0x1B, 0x05, 's', 'n', 'a', 'm', 'e',
+ // NO etext and edata
+ } );
+
+ String decoded = StringTools.dumpBytes( stream.array() );
+ stream.flip();
+
+ KrbErrorContainer container = new KrbErrorContainer();
+ container.setStream( stream );
+
+ try
+ {
+ decoder.decode( stream, container );
+ }
+ catch( DecoderException e )
+ {
+ fail();
+ }
+
+ KrbError krbError = container.getKrbError();
+
+ assertNull( krbError.geteText() );
+ assertNull( krbError.geteData() );
+
+ int encodedLen = krbError.computeLength();
+
+ assertEquals( streamLen, encodedLen );
+
+ ByteBuffer buffer = ByteBuffer.allocate( streamLen );
+ try
+ {
+ buffer = krbError.encode( buffer );
+
+ assertEquals( decoded, StringTools.dumpBytes( buffer.array() ) );
+ }
+ catch( EncoderException e )
+ {
+ fail();
+ }
+ }
+
+
+ @Test
+ public void testDecodeKrbErrorWithoutOptionalFields()
+ {
+ Asn1Decoder decoder = new Asn1Decoder();
+
+ int streamLen = 0x48;
+ ByteBuffer stream = ByteBuffer.allocate( streamLen );
+ stream.put( new byte[]
+ {
+ 0x7E, (byte)0x46,
+ 0x30, (byte)0x44,
+ (byte)0xA0, 0x03, // pvno
+ 0x02, 0x01, 0x05,
+ (byte)0xA1, 0x03, // msg-type
+ 0x02, 0x01, 0x1E,
+ (byte)0xA4, 0x11, // stime
+ 0x18, 0xF, '2', '0', '1', '0', '1', '1', '1', '9', '0', '8', '0', '0', '4', '3', 'Z',
+ (byte)0xA5, 0x03, // susec
+ 0x02, 0x01, 0x02,
+ (byte)0xA6, 0x03, // error-code
+ 0x02, 0x01, 0x00,
+ (byte)0xA9, 0x07, // realm
+ 0x1B, 0x05, 'r', 'e', 'a', 'l', 'm',
+ (byte)0xAA, 0x12, // sname
+ 0x30, 0x10,
+ (byte)0xA0, 0x03,
+ 0x02, 0x01, 0x00,
+ (byte)0xA1, 0x09,
+ 0x30, 0x07,
+ 0x1B, 0x05, 's', 'n', 'a', 'm', 'e',
+ } );
+
+ String decoded = StringTools.dumpBytes( stream.array() );
+ stream.flip();
+
+ KrbErrorContainer container = new KrbErrorContainer();
+ container.setStream( stream );
+
+ try
+ {
+ decoder.decode( stream, container );
+ }
+ catch( DecoderException e )
+ {
+ fail();
+ }
+
+ KrbError krbError = container.getKrbError();
+
+ assertNull( krbError.getcTime() );
+ assertEquals( 0, krbError.getCusec() );
+ assertNull( krbError.getcRealm() );
+ assertNull( krbError.getcName() );
+ assertNull( krbError.geteText() );
+ assertNull( krbError.geteData() );
+
+ int encodedLen = krbError.computeLength();
+
+ assertEquals( streamLen, encodedLen );
+
+ ByteBuffer buffer = ByteBuffer.allocate( streamLen );
+ try
+ {
+ buffer = krbError.encode( buffer );
+
+ assertEquals( decoded, StringTools.dumpBytes( buffer.array() ) );
+ }
+ catch( EncoderException e )
+ {
+ fail();
+ }
+ }
}