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();
+        }
+    }
 }