/** * Tests the {@code decodeControl} method when the control value is a sequence with zero elements. * * @throws Exception If an unexpected problem occurs. */ @Test(expectedExceptions = {DirectoryException.class}) public void testDecodeControlValueEmptySequence() throws Exception { ByteStringBuilder bsb = new ByteStringBuilder(); ASN1Writer writer = ASN1.getWriter(bsb); writer.writeStartSequence(); writer.writeEndSequence(); LDAPControl c = new LDAPControl(OID_PROXIED_AUTH_V1, true, bsb.toByteString()); ProxiedAuthV1Control.DECODER.decode(c.isCritical(), c.getValue()); }
/** * Tests the {@code decodeControl} method when the control value is a valid octet string that * contains an valid non-empty DN. * * @throws Exception If an unexpected problem occurs. */ @Test() public void testDecodeControlValueNonEmptyDN() throws Exception { ByteStringBuilder bsb = new ByteStringBuilder(); ASN1Writer writer = ASN1.getWriter(bsb); writer.writeStartSequence(); writer.writeOctetString("uid=test,o=test"); writer.writeEndSequence(); LDAPControl c = new LDAPControl(OID_PROXIED_AUTH_V1, true, bsb.toByteString()); ProxiedAuthV1Control proxyControl = ProxiedAuthV1Control.DECODER.decode(c.isCritical(), c.getValue()); assertEquals(proxyControl.getAuthorizationDN(), DN.decode("uid=test,o=test")); }
/** * Tests the {@code decodeControl} method when the control value is a sequence with multiple * elements. * * @throws Exception If an unexpected problem occurs. */ @Test public void testDecodeControlValueMultiElementSequence() throws Exception { ByteStringBuilder bsb = new ByteStringBuilder(); ASN1Writer writer = ASN1.getWriter(bsb); writer.writeStartSequence(); writer.writeOctetString("uid=element1,o=test"); writer.writeOctetString("uid=element2,o=test"); writer.writeEndSequence(); LDAPControl c = new LDAPControl(OID_PROXIED_AUTH_V1, true, bsb.toByteString()); assertEquals( ByteString.valueOf("uid=element1,o=test"), ProxiedAuthV1Control.DECODER.decode(c.isCritical(), c.getValue()).getRawAuthorizationDN()); }