/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.intermediate; import java.util.HashSet; import java.util.Set; import java.util.UUID; import org.ldaptive.LdapUtils; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * Unit test for {@link SyncInfoMessage}. * * @author Middleware Services */ public class SyncInfoMessageTest { /** * Sync state control test data. * * @return response test data */ @DataProvider(name = "response") public Object[][] createData() { final byte[] cookie = new byte[] { (byte) 0x72, (byte) 0x69, (byte) 0x64, (byte) 0x3D, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x2C, (byte) 0x63, (byte) 0x73, (byte) 0x6E, (byte) 0x3D, (byte) 0x32, (byte) 0x30, (byte) 0x31, (byte) 0x32, (byte) 0x30, (byte) 0x37, (byte) 0x30, (byte) 0x39, (byte) 0x32, (byte) 0x30, (byte) 0x31, (byte) 0x33, (byte) 0x31, (byte) 0x39, (byte) 0x2E, (byte) 0x37, (byte) 0x36, (byte) 0x34, (byte) 0x39, (byte) 0x31, (byte) 0x35, (byte) 0x5A, (byte) 0x23, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x23, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x23, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, }; final SyncInfoMessage m1 = new SyncInfoMessage(); m1.setMessageType(SyncInfoMessage.Type.REFRESH_DELETE); m1.setCookie(cookie); final SyncInfoMessage m2 = new SyncInfoMessage(); m2.setMessageType(SyncInfoMessage.Type.NEW_COOKIE); m2.setCookie(cookie); final SyncInfoMessage m3 = new SyncInfoMessage(); m3.setMessageType(SyncInfoMessage.Type.REFRESH_PRESENT); m3.setCookie(cookie); m3.setRefreshDone(false); final Set<UUID> uuids = new HashSet<>(); uuids.add(UUID.fromString("5d5da5d0-5be2-1031-8284-116ff56e4e59")); uuids.add(UUID.fromString("843177ec-5b0e-1031-827f-116ff56e4e59")); final SyncInfoMessage m4 = new SyncInfoMessage(); m4.setMessageType(SyncInfoMessage.Type.SYNC_ID_SET); m4.setCookie(cookie); m4.setEntryUuids(uuids); m4.setRefreshDeletes(true); return new Object[][] { // refresh delete with cookie // BER:A1:36:04:34:72:69:64:3D:30:30:30:2C:63:73:6E:3D:32:30:31:32:30: // 37:30:39:32:30:31:33:31:39:2E:37:36:34:39:31:35:5A:23:30:30:30: // 30:30:30:23:30:30:30:23:30:30:30:30:30:30 new Object[] { LdapUtils.base64Decode("oTYENHJpZD0wMDAsY3NuPTIwMTIwNzA5MjAxMzE5Ljc2NDkxNVojMDAwMDAwIzAw" + "MCMwMDAwMDA="), m1, }, // new cookie // BER:80:34:72:69:64:3D:30:30:30:2C:63:73:6E:3D:32:30:31:32:30:37:30: // 39:32:30:31:33:31:39:2E:37:36:34:39:31:35:5A:23:30:30:30:30:30: // 30:23:30:30:30:23:30:30:30:30:30:30: new Object[] { LdapUtils.base64Decode("gDRyaWQ9MDAwLGNzbj0yMDEyMDcwOTIwMTMxOS43NjQ5MTVaIzAwMDAwMCMwMDAj" + "MDAwMDAw"), m2, }, // refresh present with cookie, refresh done false // BER:A2:39:04:34:72:69:64:3D:30:30:30:2C:63:73:6E:3D:32:30:31:32:30: // 37:30:39:32:30:31:33:31:39:2E:37:36:34:39:31:35:5A:23:30:30:30: // 30:30:30:23:30:30:30:23:30:30:30:30:30:30:01:01:00: new Object[] { LdapUtils.base64Decode( "ojkENHJpZD0wMDAsY3NuPTIwMTIwNzA5MjAxMzE5Ljc2NDkxNVojMDAwMDAwIzAw" + "MCMwMDAwMDABAQA="), m3, }, // sync id set, refresh deletes true // BER:A3:5F:04:34:72:69:64:3D:30:30:30:2C:63:73:6E:3D:32:30:31:32:30: // 37:30:39:32:30:31:33:31:39:2E:37:36:34:39:31:35:5A:23:30:30:30: // 30:30:30:23:30:30:30:23:30:30:30:30:30:30:01:01:FF:31:24:04:10: // 5D:5D:A5:D0:5B:E2:10:31:82:84:11:6F:F5:6E:4E:59:04:10:84:31:77: // EC:5B:0E:10:31:82:7F:11:6F:F5:6E:4E:59: new Object[] { LdapUtils.base64Decode( "o18ENHJpZD0wMDAsY3NuPTIwMTIwNzA5MjAxMzE5Ljc2NDkxNVojMDAwMDAwIzAw" + "MCMwMDAwMDABAf8xJAQQXV2l0FviEDGChBFv9W5OWQQQhDF37FsOEDGCfxFv9W5O" + "WQ=="), m4, }, }; } /** * @param berValue to encode. * @param expected sync info message to test. * * @throws Exception On test failure. */ @Test(groups = {"intermediate"}, dataProvider = "response") public void decode(final byte[] berValue, final SyncInfoMessage expected) throws Exception { final SyncInfoMessage actual = new SyncInfoMessage(); actual.decode(berValue); Assert.assertEquals(actual, expected); } }