/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.control; import org.ldaptive.LdapUtils; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * Unit test for {@link PagedResultsControl}. * * @author Middleware Services */ public class PagedResultsControlTest { /** * Paged results control test data. * * @return response test data */ @DataProvider(name = "request-response") public Object[][] createData() { return new Object[][] { // request size 0, no cookie // BER: 30:05:02:01:00:04:00 new Object[] { LdapUtils.base64Decode("MAUCAQAEAA=="), new PagedResultsControl(0, null, true), }, // request size 0, cookie // BER: 30:0D:02:01:00:04:08:FF:FF:FF:FF:FF:FF:FF:FF new Object[] { LdapUtils.base64Decode("MA0CAQAECP//////////"), new PagedResultsControl( 0, new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, }, true), }, // request size 1, no cookie // BER: 30:05:02:01:01:04:00 new Object[] { LdapUtils.base64Decode("MAUCAQEEAA=="), new PagedResultsControl(1, null, true), }, // request size 1, cookie // BER: 30:0D:02:01:01:04:08:EF:5C:15:00:00:00:00:00 new Object[] { LdapUtils.base64Decode("MA0CAQEECO9cFQAAAAAA"), new PagedResultsControl( 1, new byte[] { (byte) 0xef, (byte) 0x5c, (byte) 0x15, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, }, true), }, // request size 20, no cookie // BER: 30:05:02:01:14:04:00 new Object[] { LdapUtils.base64Decode("MAUCARQEAA=="), new PagedResultsControl(20, null, true), }, // request size 20, cookie // BER: 30:0D:02:01:14:04:08:A7:C7:18:00:00:00:00:00 new Object[] { LdapUtils.base64Decode("MA0CARQECKfHGAAAAAAA"), new PagedResultsControl( 20, new byte[] { (byte) 0xa7, (byte) 0xc7, (byte) 0x18, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, }, true), }, // request size 0, 388 byte length cookie // both the sequence and octet string use long form length new Object[] { LdapUtils.base64Decode( "MIQAAAGNAgEABIQAAAGEAQAAAIQBAAD/////7E9EoNm4ztLWBSblnuyp1iZhZ/XM" + "5IJk6DcibuopiDZU4AofIdRQT4hfyECUBna7AAAAAAEAAAAAAAAAfQ8AABwAAAAF" + "AAAAAgAAAAAAAAAAAAAABAAAAAUAAQCpDgAA/QYAAP0GAAAAAAAAtBxsfUgmpECD" + "Z+XSv7zT1gAAAAAEAAAAAQAAAAAAAAAAAAAAAQAAAAQAAAABAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD/////AeNCb8/LArdUnvG/1PsdLkQipKip" + "SVvzz/kAtrc1mcsAAAAAfwIAAAD7BgAACfwGAAD9BgAACakOAAB9DwAACH+AAA99" + "AAAAAAAAAAAAAAD/////AAAAAAAAAAD/////DwAAABwAAAAdAAAAQW5jZXN0b3Jz" + "X2luZGV4fwIAAAD7BgAACfwGAAD9BgAACakOAAAAAAAABH8CAAAA+wYAAAn8BgAA" + "/QYAAAmpDgAA////////AAAAAA=="), new PagedResultsControl( 0, new byte[] { (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x84, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xec, (byte) 0x4f, (byte) 0x44, (byte) 0xa0, (byte) 0xd9, (byte) 0xb8, (byte) 0xce, (byte) 0xd2, (byte) 0xd6, (byte) 0x05, (byte) 0x26, (byte) 0xe5, (byte) 0x9e, (byte) 0xec, (byte) 0xa9, (byte) 0xd6, (byte) 0x26, (byte) 0x61, (byte) 0x67, (byte) 0xf5, (byte) 0xcc, (byte) 0xe4, (byte) 0x82, (byte) 0x64, (byte) 0xe8, (byte) 0x37, (byte) 0x22, (byte) 0x6e, (byte) 0xea, (byte) 0x29, (byte) 0x88, (byte) 0x36, (byte) 0x54, (byte) 0xe0, (byte) 0x0a, (byte) 0x1f, (byte) 0x21, (byte) 0xd4, (byte) 0x50, (byte) 0x4f, (byte) 0x88, (byte) 0x5f, (byte) 0xc8, (byte) 0x40, (byte) 0x94, (byte) 0x06, (byte) 0x76, (byte) 0xbb, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x7d, (byte) 0x0f, (byte) 0x00, (byte) 0x00, (byte) 0x1c, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x05, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x04, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x05, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0xa9, (byte) 0x0e, (byte) 0x00, (byte) 0x00, (byte) 0xfd, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0xfd, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xb4, (byte) 0x1c, (byte) 0x6c, (byte) 0x7d, (byte) 0x48, (byte) 0x26, (byte) 0xa4, (byte) 0x40, (byte) 0x83, (byte) 0x67, (byte) 0xe5, (byte) 0xd2, (byte) 0xbf, (byte) 0xbc, (byte) 0xd3, (byte) 0xd6, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x04, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x04, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x01, (byte) 0xe3, (byte) 0x42, (byte) 0x6f, (byte) 0xcf, (byte) 0xcb, (byte) 0x02, (byte) 0xb7, (byte) 0x54, (byte) 0x9e, (byte) 0xf1, (byte) 0xbf, (byte) 0xd4, (byte) 0xfb, (byte) 0x1d, (byte) 0x2e, (byte) 0x44, (byte) 0x22, (byte) 0xa4, (byte) 0xa8, (byte) 0xa9, (byte) 0x49, (byte) 0x5b, (byte) 0xf3, (byte) 0xcf, (byte) 0xf9, (byte) 0x00, (byte) 0xb6, (byte) 0xb7, (byte) 0x35, (byte) 0x99, (byte) 0xcb, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x7f, (byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xfb, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x09, (byte) 0xfc, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0xfd, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x09, (byte) 0xa9, (byte) 0x0e, (byte) 0x00, (byte) 0x00, (byte) 0x7d, (byte) 0x0f, (byte) 0x00, (byte) 0x00, (byte) 0x08, (byte) 0x7f, (byte) 0x80, (byte) 0x00, (byte) 0x0f, (byte) 0x7d, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x0f, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x1c, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x1d, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x41, (byte) 0x6e, (byte) 0x63, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x6f, (byte) 0x72, (byte) 0x73, (byte) 0x5f, (byte) 0x69, (byte) 0x6e, (byte) 0x64, (byte) 0x65, (byte) 0x78, (byte) 0x7f, (byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xfb, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x09, (byte) 0xfc, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0xfd, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x09, (byte) 0xa9, (byte) 0x0e, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x04, (byte) 0x7f, (byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xfb, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x09, (byte) 0xfc, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0xfd, (byte) 0x06, (byte) 0x00, (byte) 0x00, (byte) 0x09, (byte) 0xa9, (byte) 0x0e, (byte) 0x00, (byte) 0x00, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, }, true), }, }; } /** * @param berValue to encode. * @param expected paged results control to test. * * @throws Exception On test failure. */ @Test(groups = {"control"}, dataProvider = "request-response") public void encode(final byte[] berValue, final PagedResultsControl expected) throws Exception { Assert.assertEquals(expected.encode(), berValue); } /** * @param berValue to decode. * @param expected paged results control to test. * * @throws Exception On test failure. */ @Test(groups = {"control"}, dataProvider = "request-response") public void decode(final byte[] berValue, final PagedResultsControl expected) throws Exception { final PagedResultsControl actual = new PagedResultsControl(expected.getCriticality()); actual.decode(berValue); Assert.assertEquals(actual, expected); } }