Package org.openengsb.core.services.internal.ldap

Source Code of org.openengsb.core.services.internal.ldap.TimebasedOrderFilterTest

/**
* Licensed to the Austrian Association for Software Tool Integration (AASTI)
* under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright
* ownership. The AASTI licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.openengsb.core.services.internal.ldap;

import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertThat;

import java.util.LinkedList;
import java.util.List;
import java.util.UUID;

import org.apache.directory.shared.ldap.model.entry.DefaultEntry;
import org.apache.directory.shared.ldap.model.entry.Entry;
import org.apache.directory.shared.ldap.model.name.Dn;
import org.apache.directory.shared.ldap.model.name.Rdn;
import org.junit.Test;
import org.openengsb.core.services.internal.security.ldap.SchemaConstants;
import org.openengsb.core.services.internal.security.ldap.TimebasedOrderFilter;
import org.openengsb.infrastructure.ldap.model.Node;

import com.fasterxml.uuid.EthernetAddress;
import com.fasterxml.uuid.Generators;
import com.fasterxml.uuid.impl.TimeBasedGenerator;

public class TimebasedOrderFilterTest {
    private String idAttribute = "org-openengsb-uuid";
    private String uniqueOc = "org-openengsb-uniqueObject";

    // TODO use this for injection
    public void setIdAttribute(String idAttribute) {
        this.idAttribute = idAttribute;
    }

    public void setUniqueOc(String uniqueOc) {
        this.uniqueOc = uniqueOc;
    }

    @Test
    public void testAddId_expectIdAttributeAndOC() throws Exception {
        Entry e = new DefaultEntry();
        TimebasedOrderFilter.addId(e, false);
        assertThat(e.hasObjectClass(uniqueOc), is(true));
        assertThat(e.containsAttribute(idAttribute), is(true));
        assertThat(e.get(idAttribute).get(), notNullValue());
        String id = e.get(idAttribute).getString();
        assertThat(UUID.fromString(id), is(UUID.class));
    }

    @Test
    public void testAddIdsOnList_expectIdAttributeAndOC() throws Exception {
        List<Entry> entries = new LinkedList<Entry>();
        for (int i = 0; i < 5; i++) {
            entries.add(new DefaultEntry());
        }
        TimebasedOrderFilter.addIds(entries, false);
        String id;
        for (Entry e : entries) {
            assertThat(e.hasObjectClass(uniqueOc), is(true));
            assertThat(e.containsAttribute(idAttribute), is(true));
            assertThat(e.get(idAttribute).get(), notNullValue());
            id = e.get(idAttribute).getString();
            assertThat(UUID.fromString(id), is(UUID.class));
        }
    }

    @Test
    public void testAddIdUpdateRdnOnEmptyDn_expectCreateRdn() throws Exception {
        Entry e = new DefaultEntry();
        TimebasedOrderFilter.addId(e, true);
        Rdn rdn = e.getDn().getRdn();
        assertThat(rdn.getType(), is(idAttribute));
        assertThat(rdn.getValue().getString(), is(e.get(idAttribute).getString()));
    }

    @Test
    public void testAddIdUpdateExistingRdn_expectReplaceRdn() throws Exception {
        Rdn rdnUnchanged = new Rdn("ou", "parent");
        // give a dn of depth 2 to the entry
        Entry e = new DefaultEntry(new Dn(new Rdn("ou", "child"), rdnUnchanged));
        // add id with update flag set
        TimebasedOrderFilter.addId(e, true);
        // make sure that the parent part of the dn remains unchanged
        assertThat(e.getDn().getRdn(1), is(rdnUnchanged));
        // make sure that the child part has been updated
        Rdn rdnUpdated = e.getDn().getRdn();
        assertThat(rdnUpdated.getType(), is(idAttribute));
        assertThat(rdnUpdated.getValue().getString(), is(e.get(idAttribute).getString()));
    }

    @Test
    public void testSortById_expectSorted() throws Exception {
        Entry first = newEntryWithId();
        Entry second = newEntryWithId();
        List<Entry> reversed = new LinkedList<Entry>();
        // add the entries in reversed order
        reversed.add(second);
        reversed.add(first);
        // sort them
        TimebasedOrderFilter.sortById(reversed);
        assertThat(reversed.get(0), is(first));
        assertThat(reversed.get(1), is(second));
    }

    @Test
    public void testSortByIdNode_expectSorted() throws Exception {
        Node first = new Node(newEntryWithId());
        Node second = new Node(newEntryWithId());
        List<Node> reversed = new LinkedList<Node>();
        // add the nodes in reversed order
        reversed.add(second);
        reversed.add(first);
        // sort them
        TimebasedOrderFilter.sortByIdNode(reversed);
        assertThat(reversed.get(0), is(first));
        assertThat(reversed.get(1), is(second));
    }

    @Test
    public void testSortByIdWhereNotSet_expectSorted() throws Exception {
        Entry first = newEntryWithId();
        Entry second = new DefaultEntry();
        List<Entry> list = new LinkedList<Entry>();
        list.add(first);
        list.add(second);
        TimebasedOrderFilter.sortById(list);
        assertThat(list.get(1), is(first));
        assertThat(list.get(0), is(second));
    }
   
    @Test
    public void testSortByIdWhereNotSet2_expectSorted() throws Exception {
        Entry a = newEntryWithId();
        Entry b = new DefaultEntry();
        List<Entry> list = new LinkedList<Entry>();
        list.add(b);
        list.add(a);
        TimebasedOrderFilter.sortById(list);
        assertThat(list.get(1), is(a));
        assertThat(list.get(0), is(b));
    }
   
    @Test
    public void testSortByIdWhereBothNotSet_expectSorted() throws Exception {
        Entry a = new DefaultEntry();
        Entry b = new DefaultEntry();
        List<Entry> list = new LinkedList<Entry>();
        list.add(a);
        list.add(b);
        TimebasedOrderFilter.sortById(list);
        assertThat(list.get(0), is(a));
        assertThat(list.get(1), is(b));
    }
   
    @Test
    public void testSortByIdNodeWhereNotSet_expectSorted() throws Exception {
        Node first = new Node(newEntryWithId());
        Node second = new Node(new DefaultEntry());
        List<Node> list = new LinkedList<Node>();
        list.add(first);
        list.add(second);
        TimebasedOrderFilter.sortByIdNode(list);
        assertThat(list.get(1), is(first));
        assertThat(list.get(0), is(second));
    }

    @Test
    public void testSortByIdNodeWhereNotSet2_expectSorted() throws Exception {
        Node a = new Node(newEntryWithId());
        Node b = new Node(new DefaultEntry());
        List<Node> list = new LinkedList<Node>();
        list.add(b);
        list.add(a);
        TimebasedOrderFilter.sortByIdNode(list);
        assertThat(list.get(1), is(a));
        assertThat(list.get(0), is(b));
    }
    @Test
    public void testSortByIdNodeWhereBothNotSet_expectSorted() throws Exception {
        Node a = new Node(new DefaultEntry());
        Node b = new Node(new DefaultEntry());
        List<Node> list = new LinkedList<Node>();
        list.add(a);
        list.add(b);
        TimebasedOrderFilter.sortByIdNode(list);
        assertThat(list.get(0), is(a));
        assertThat(list.get(1), is(b));
    }
    @Test
    public void testExtractId_expectId() throws Exception {
        String id = TimebasedOrderFilter.extractId(newEntryWithId());
        assertThat(id, notNullValue());
        assertThat(UUID.fromString(id), is(UUID.class));
    }

    @Test
    public void testExtractIdWhereNotSet_expectNullValue() throws Exception {
        String id = TimebasedOrderFilter.extractId(new DefaultEntry());
        assertThat(id, nullValue());
    }

    private Entry newEntryWithId() throws Exception {
        TimeBasedGenerator uuidGenerator = Generators.timeBasedGenerator(EthernetAddress.fromInterface());
        Entry e = new DefaultEntry();
        e.add(SchemaConstants.OBJECT_CLASS_ATTRIBUTE, uniqueOc);
        e.add(idAttribute, uuidGenerator.generate().toString());
        return e;
    }

}
TOP

Related Classes of org.openengsb.core.services.internal.ldap.TimebasedOrderFilterTest

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.