Package org.constretto.internal.store.ldap

Source Code of org.constretto.internal.store.ldap.LdapConfigurationStoreTest

package org.constretto.internal.store.ldap;

import org.constretto.ConstrettoBuilder;
import org.constretto.ConstrettoConfiguration;
import org.constretto.exception.ConstrettoException;
import org.constretto.model.ConfigurationValue;
import org.constretto.model.TaggedPropertySet;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;

import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.*;

/**
* @author zapodot
*/
@RunWith(MockitoJUnitRunner.class)
public class LdapConfigurationStoreTest {

    @Mock
    private Attributes attributes;
    @Mock
    private Attribute attribute;
    @Mock
    private NamingEnumeration attributesNamingEnumeration;
    private LdapConfigurationStore parentLdapConfigurationStore = new LdapConfigurationStore();

    @Test(expected = ConstrettoException.class)
    public void testParseConfigurationAttributesReadFailed() throws Exception {

        when(attributes.getAll()).thenReturn(attributesNamingEnumeration);
        when(attributesNamingEnumeration.hasMore()).thenThrow(new NamingException());
        try {
            final LdapConfigurationStore ldapConfigurationStore = new LdapConfigurationStore(
                    parentLdapConfigurationStore,
                    attributes);
            ldapConfigurationStore.parseConfiguration();

        } finally {
            verify(attributes).getAll();
            verify(attributesNamingEnumeration).hasMore();
        }
    }

    @Test
    public void testParseConfigurationDefaultConstructor() throws Exception {
        final Collection<TaggedPropertySet> taggedPropertySets = new LdapConfigurationStore().parseConfiguration();
        assertEquals(1, taggedPropertySets.size());
        assertEquals(ConfigurationValue.DEFAULT_TAG, taggedPropertySets.iterator().next().tag());

    }

    @Test
    public void testParseConfigurationTagsNoValues() throws Exception {
        when(attributes.getAll()).thenReturn(attributesNamingEnumeration);
        when(attributesNamingEnumeration.hasMore()).thenReturn(false);

        final Collection<TaggedPropertySet> taggedPropertySets = new LdapConfigurationStore(new LdapConfigurationStore(),
                attributes).parseConfiguration();

        assertEquals(1, taggedPropertySets.size());
        assertEquals(ConfigurationValue.DEFAULT_TAG, taggedPropertySets.iterator().next().tag());

        verify(attributes).getAll();
        verify(attributesNamingEnumeration).hasMore();
    }

    @Test
    public void testParseConfigurationDefaultTagPassword() throws Exception {
        when(attributes.getAll()).thenReturn(attributesNamingEnumeration);
        when(attributesNamingEnumeration.hasMore()).thenReturn(true, false);
        when(attributesNamingEnumeration.next()).thenReturn(attribute);
        when(attribute.getID()).thenReturn("password");

        final Collection<TaggedPropertySet> taggedPropertySets = new LdapConfigurationStore(new LdapConfigurationStore(),
                attributes).parseConfiguration();
        assertEquals(1, taggedPropertySets.size());
        assertEquals(ConfigurationValue.DEFAULT_TAG, taggedPropertySets.iterator().next().tag());

        verify(attributes).getAll();
        verify(attributesNamingEnumeration, times(2)).hasMore();
        verify(attributesNamingEnumeration).next();
        verify(attribute).getID();
    }

    @Test
    public void testParseConfigurationTagsPassword() throws Exception {
        when(attributes.getAll()).thenReturn(attributesNamingEnumeration);
        when(attributesNamingEnumeration.hasMore()).thenReturn(true, false);
        when(attributesNamingEnumeration.next()).thenReturn(attribute);
        when(attribute.getID()).thenReturn("password");

        final String tag = "tag";
        final Collection<TaggedPropertySet> taggedPropertySets = new LdapConfigurationStore(new LdapConfigurationStore(),
                attributes, tag).parseConfiguration();
        assertEquals(1, taggedPropertySets.size());
        final TaggedPropertySet taggedPropertySet = taggedPropertySets.iterator().next();
        assertEquals(tag, taggedPropertySet.tag());
        assertEquals(0, taggedPropertySet.getProperties().size());

        verify(attributes).getAll();
        verify(attributesNamingEnumeration, times(2)).hasMore();
        verify(attributesNamingEnumeration).next();
        verify(attribute).getID();
    }

    @Test
    public void testParseConfigurationTags() throws Exception {
        when(attributes.getAll()).thenReturn(attributesNamingEnumeration);
        when(attributesNamingEnumeration.hasMore()).thenReturn(true, false);
        when(attributesNamingEnumeration.next()).thenReturn(attribute);
        final String attributeId = "uid";
        when(attribute.getID()).thenReturn(attributeId);
        final String attributeValue = "some value";
        when(attribute.get()).thenReturn(attributeValue);
        when(attribute.size()).thenReturn(1);

        final String tag = "tag";
        final LdapConfigurationStore ldapConfigurationStore = new LdapConfigurationStore(new LdapConfigurationStore(),
                attributes, tag);
        final Collection<TaggedPropertySet> taggedPropertySets = ldapConfigurationStore.parseConfiguration();
        assertEquals(1, taggedPropertySets.size());

        final TaggedPropertySet taggedPropertySet = taggedPropertySets.iterator().next();
        assertEquals(tag, taggedPropertySet.tag());

        verify(attributes).getAll();
        verify(attributesNamingEnumeration, times(2)).hasMore();
        verify(attributesNamingEnumeration).next();
        verify(attribute, times(2)).getID();
        verify(attribute).get();
        verify(attribute).size();
    }

    @Test
    public void testParseConfigurationSimpleValue() throws Exception {
        when(attributes.getAll()).thenReturn(attributesNamingEnumeration);
        when(attributesNamingEnumeration.hasMore()).thenReturn(true, false);
        when(attributesNamingEnumeration.next()).thenReturn(attribute);
        final String attributeId = "uid";
        when(attribute.getID()).thenReturn(attributeId);
        final String attributeValue = "some value";
        when(attribute.get()).thenReturn(attributeValue);
        when(attribute.size()).thenReturn(1);

        final LdapConfigurationStore ldapConfigurationStore = new LdapConfigurationStore(new LdapConfigurationStore(),
                attributes);

        final ConstrettoConfiguration constrettoConfiguration = createConfigurationForLdapConfigurationStore(ldapConfigurationStore);
        assertTrue(constrettoConfiguration.hasValue(attributeId));
        assertEquals(attributeValue, constrettoConfiguration.evaluateToString(attributeId));

        verify(attributes).getAll();
        verify(attributesNamingEnumeration, times(2)).hasMore();
        verify(attributesNamingEnumeration).next();
        verify(attribute, times(2)).getID();
        verify(attribute).get();
        verify(attribute).size();
    }

    @Test
    public void testParseConfigurationMultiValue() throws Exception {
        when(attributes.getAll()).thenReturn(attributesNamingEnumeration);
        when(attributesNamingEnumeration.hasMore()).thenReturn(true, false);
        when(attributesNamingEnumeration.next()).thenReturn(attribute);
        final String attributeName = "uniqueMember";
        when(attribute.getID()).thenReturn(attributeName);
        final List<String> attributeValues = Arrays.asList("cn=Kaare Nilsen,dc=constretto,dc=org",
                "cn=Jon-Anders Teigen,dc=constretto,dc=org");
        when(attribute.get()).thenReturn(attributeValues);
        when(attribute.size()).thenReturn(attributeValues.size());
        when(attribute.get(anyInt())).thenReturn(attributeValues.get(0), attributeValues.get(1));

        final LdapConfigurationStore ldapConfigurationStore = new LdapConfigurationStore(new LdapConfigurationStore(),
                attributes);
        final ConstrettoConfiguration constrettoConfiguration = createConfigurationForLdapConfigurationStore(ldapConfigurationStore);
        assertTrue(constrettoConfiguration.hasValue(attributeName));
        assertEquals(2, constrettoConfiguration.evaluateToList(String.class, attributeName).size());

        verify(attributes).getAll();
        verify(attributesNamingEnumeration, times(2)).hasMore();
        verify(attributesNamingEnumeration).next();
        verify(attribute, times(2)).getID();
        verify(attribute).size();
        verify(attribute).get(eq(0));
        verify(attribute).get(eq(1));
    }

    private ConstrettoConfiguration createConfigurationForLdapConfigurationStore(LdapConfigurationStore ldapConfigurationStore) {
        return new ConstrettoBuilder(false)
                    .addConfigurationStore(ldapConfigurationStore)
                    .getConfiguration();
    }

    @After
    public void tearDown() throws Exception {
        verifyNoMoreInteractions(attributes, attributesNamingEnumeration, attribute);

    }
}
TOP

Related Classes of org.constretto.internal.store.ldap.LdapConfigurationStoreTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.