public void updateUser(UserDetails user) { DistinguishedName dn = usernameMapper.buildDn(user.getUsername()); logger.debug("Updating user '" + user.getUsername() + "' with DN '" + dn + "'"); List<GrantedAuthority> authorities = getUserAuthorities(dn, user.getUsername()); DirContextAdapter ctx = loadUserAsContext(dn, user.getUsername()); ctx.setUpdateMode(true); copyToContext(user, ctx); // Remove the objectclass attribute from the list of mods (if present). List<ModificationItem> mods = new LinkedList<>(Arrays.asList(ctx .getModificationItems())); ListIterator<ModificationItem> modIt = mods.listIterator(); while (modIt.hasNext()) { ModificationItem mod = (ModificationItem) modIt.next(); Attribute a = mod.getAttribute(); if ("objectclass".equalsIgnoreCase(a.getID())) { modIt.remove(); } } template.modifyAttributes(dn, mods.toArray(new ModificationItem[mods.size()])); // template.rebind(dn, ctx, null); // Remove the old authorities and replace them with the new one removeAuthorities(dn, authorities); addAuthorities(dn, user.getAuthorities()); }
@Test public void testAlwaysReplace() throws Exception { ModificationItem[] items = tested.getModificationItems(); assertThat(items.length).isEqualTo(0); tested.setUpdateMode(true); assertThat(items.length).isEqualTo(0); }
@Test public void testGetModificationItems() throws Exception { ModificationItem[] items = tested.getModificationItems(); assertThat(items.length).isEqualTo(0); tested.setUpdateMode(true); assertThat(items.length).isEqualTo(0); }
public void modifyAttributes(String dn, String lastName, String description) { DirContextAdapter ctx = (DirContextAdapter) ldapTemplate.lookup(dn); ctx.setAttributeValue("sn", lastName); ctx.setAttributeValue("description", description); ldapTemplate.modifyAttributes(dn, ctx.getModificationItems()); }
public void modifyAttributes(String dn, String lastName, String description) { DirContextAdapter ctx = (DirContextAdapter) ldapTemplate.lookup(dn); ctx.setAttributeValue("sn", lastName); ctx.setAttributeValue("description", description); ldapTemplate.modifyAttributes(dn, ctx.getModificationItems()); }
public void modifyAttributes(String dn, String lastName, String description) { DirContextAdapter ctx = (DirContextAdapter) ldapTemplate.lookup(dn); ctx.setAttributeValue("sn", lastName); ctx.setAttributeValue("description", description); ldapTemplate.modifyAttributes(dn, ctx.getModificationItems()); }
@Test public void testAddAttributeValueInUpdateMode() throws NamingException { tested.setUpdateMode(true); tested.addAttributeValue("abc", "123"); // Perform test Attributes attrs = tested.getAttributes(); assertThat(attrs.get("abc")).isNull(); ModificationItem[] modificationItems = tested.getModificationItems(); assertThat(modificationItems.length).isEqualTo(1); Attribute attribute = modificationItems[0].getAttribute(); assertThat(attribute.getID()).isEqualTo("abc"); assertThat(attribute.get()).isEqualTo("123"); }
@Test public void testRemoveAttributeValueInUpdateMode() { tested.setUpdateMode(true); // Perform test tested.removeAttributeValue("abc", "123"); assertThat(tested.getAttributes().get("abc")).isNull(); ModificationItem[] modificationItems = tested.getModificationItems(); assertThat(modificationItems.length).isEqualTo(0); }
@Test public void testGetModificationItemsOnAddAttributeValueInUpdateModeAttributeWhenSameValueExistsInOrigAttrs() throws NamingException { tested.setAttribute(new BasicAttribute("abc", "123")); tested.setUpdateMode(true); // Perform test tested.addAttributeValue("abc", "123"); Attributes attrs = tested.getAttributes(); assertThat(attrs.get("abc")).isNotNull(); ModificationItem[] modificationItems = tested.getModificationItems(); assertThat(modificationItems.length).isEqualTo(0); }
@Test public void testModifyNull() throws Exception { tested.setAttributeValue("memberDN", null); tested.setUpdateMode(true); assertThat(tested.isUpdateMode()).isTrue(); tested.setAttributeValue("memberDN", new LdapName("ou=test")); ModificationItem[] mods = tested.getModificationItems(); assertThat(mods.length).isEqualTo(1); }
@Test public void testRemoveAttributeValueInUpdateModeSameValueExistsInUpdatedAttrs() { tested.setUpdateMode(true); tested.setAttributeValue("abc", "123"); // Perform test tested.removeAttributeValue("abc", "123"); assertThat(tested.getAttributes().get("abc")).isNull(); ModificationItem[] modificationItems = tested.getModificationItems(); assertThat(modificationItems.length).isEqualTo(0); }
@Test public void testRemoveAttributeValueInUpdateModeOtherAndSameValueExistsInUpdatedAttrs() throws NamingException { tested.setUpdateMode(true); tested.setAttributeValues("abc", new String[] { "321", "123" }); // Perform test tested.removeAttributeValue("abc", "123"); assertThat(tested.getAttributes().get("abc")).isNull(); ModificationItem[] modificationItems = tested.getModificationItems(); assertThat(modificationItems.length).isEqualTo(1); Attribute modificationAttribute = modificationItems[0].getAttribute(); assertThat(modificationAttribute.getID()).isEqualTo("abc"); assertThat(modificationAttribute.size()).isEqualTo(1); }
@Test public void testRemoveAttributeValueInUpdateModeSameValueExistsInOrigAttrs() { tested.setAttribute(new BasicAttribute("abc", "123")); tested.setUpdateMode(true); // Perform test tested.removeAttributeValue("abc", "123"); ModificationItem[] modificationItems = tested.getModificationItems(); assertThat(modificationItems.length).isEqualTo(1); Attribute modificationAttribute = modificationItems[0].getAttribute(); assertThat(modificationAttribute.getID()).isEqualTo("abc"); assertThat(modificationAttribute.size()).isEqualTo(0); assertThat(modificationItems[0].getModificationOp()).isEqualTo(DirContext.REMOVE_ATTRIBUTE); }
/** * Test for LDAP-13. */ @Test public void testModifyAttributeByteArray() { tested.setAttribute(new BasicAttribute("abc", new byte[] { 1, 2, 3 })); tested.setUpdateMode(true); // Perform test tested.setAttributeValue("abc", new byte[] { 1, 2, 3 }); ModificationItem[] modificationItems = tested.getModificationItems(); assertThat(modificationItems.length).isEqualTo(0); }
@Test public void testRemoveDnAttributeSyntacticallyEqual() throws NamingException { BasicAttributes attributes = new BasicAttributes(); attributes.put("uniqueMember", "cn=john doe,OU=company"); DirContextAdapter tested = new DirContextAdapter(attributes, LdapUtils.newLdapName("cn=administrators, ou=groups")); tested.setUpdateMode(true); tested.removeAttributeValue("uniqueMember", LdapUtils.newLdapName("cn=john doe, ou=company")); ModificationItem[] modificationItems = tested.getModificationItems(); assertThat(modificationItems.length).isEqualTo(1); ModificationItem modificationItem = modificationItems[0]; assertThat(modificationItem.getModificationOp()).isEqualTo(DirContext.REMOVE_ATTRIBUTE); assertThat(modificationItem.getAttribute().getID()).isEqualTo("uniqueMember"); }
@Test public void testAddDnAttributeSyntacticallyEqual() { BasicAttributes attributes = new BasicAttributes(); attributes.put("uniqueMember", "cn=john doe,OU=company"); DirContextAdapter tested = new DirContextAdapter(attributes, LdapUtils.newLdapName("cn=administrators, ou=groups")); tested.setUpdateMode(true); tested.addAttributeValue("uniqueMember", LdapUtils.newLdapName("cn=john doe, ou=company")); ModificationItem[] modificationItems = tested.getModificationItems(); assertThat(modificationItems.length).isEqualTo(0); }
@Test public void testSetDnAttributeValueIdentical() { BasicAttributes attributes = new BasicAttributes(); attributes.put("uniqueMember", "cn=john doe, ou=company"); DirContextAdapter tested = new DirContextAdapter(attributes, LdapUtils.newLdapName("cn=administrators, ou=groups")); tested.setUpdateMode(true); tested.setAttributeValue("uniqueMember", LdapUtils.newLdapName("cn=john doe, ou=company")); ModificationItem[] modificationItems = tested.getModificationItems(); assertThat(modificationItems.length).isEqualTo(0); }
@Test public void testAddDnAttributeValueIdentical() { BasicAttributes attributes = new BasicAttributes(); attributes.put("uniqueMember", "cn=john doe, ou=company"); DirContextAdapter tested = new DirContextAdapter(attributes, LdapUtils.newLdapName("cn=administrators, ou=groups")); tested.setUpdateMode(true); tested.addAttributeValue("uniqueMember", LdapUtils.newLdapName("cn=john doe, ou=company")); ModificationItem[] modificationItems = tested.getModificationItems(); assertThat(modificationItems.length).isEqualTo(0); }
@Test public void testSetDnAttributesValueIdentical() { BasicAttributes attributes = new BasicAttributes(); attributes.put("uniqueMember", "cn=john doe, ou=company"); DirContextAdapter tested = new DirContextAdapter(attributes, LdapUtils.newLdapName("cn=administrators, ou=groups")); tested.setUpdateMode(true); tested.setAttributeValues("uniqueMember", new Object[]{LdapUtils.newLdapName("cn=john doe, ou=company")}); ModificationItem[] modificationItems = tested.getModificationItems(); assertThat(modificationItems.length).isEqualTo(0); }
/** * Demonstrates how the DirContextAdapter can be used to automatically keep * track of changes of the attributes and deliver ModificationItems to use * in moifyAttributes(). */ @Test public void testModifyAttributes_DirContextAdapter() throws Exception { DirContextAdapter adapter = (DirContextAdapter) tested.lookup(PERSON4_DN); adapter.setAttributeValue("description", "Some other description"); ModificationItem[] modificationItems = adapter.getModificationItems(); tested.modifyAttributes(PERSON4_DN, modificationItems); verifyBoundCorrectData(); }