Package org.geoserver.catalog.impl

Source Code of org.geoserver.catalog.impl.WorkspaceNamespaceConstencyTest

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.catalog.impl;

import static org.easymock.classextension.EasyMock.*;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import org.easymock.EasyMock;
import org.easymock.IArgumentMatcher;
import org.geoserver.catalog.Catalog;
import org.geoserver.catalog.DataStoreInfo;
import org.geoserver.catalog.NamespaceInfo;
import org.geoserver.catalog.NamespaceWorkspaceConsistencyListener;
import org.geoserver.catalog.StoreInfo;
import org.geoserver.catalog.WorkspaceInfo;
import org.geoserver.catalog.event.CatalogListener;
import org.geoserver.catalog.event.CatalogModifyEvent;
import org.geoserver.catalog.event.CatalogPostModifyEvent;
import org.junit.Test;

public class WorkspaceNamespaceConstencyTest {

    @Test
    public void testChangeWorkspace() {
        Catalog cat = createMock(Catalog.class);
        cat.addListener((CatalogListener) anyObject());
        expectLastCall();
       
        NamespaceInfo ns = createMock(NamespaceInfo.class);
        ns.setPrefix("abcd");
        expectLastCall();

        expect(cat.getNamespaceByPrefix("gs")).andReturn(ns);

        cat.save(ns);
        expectLastCall();

        WorkspaceInfo ws = createNiceMock(WorkspaceInfo.class);
       
        CatalogModifyEvent e = createNiceMock(CatalogModifyEvent.class);
        expect(e.getSource()).andReturn(ws).anyTimes();
        expect(e.getPropertyNames()).andReturn(Arrays.asList("name"));
        expect(e.getOldValues()).andReturn((List)Arrays.asList("gs"));
        expect(e.getNewValues()).andReturn((List)Arrays.asList("abcd"));

        replay(e, ws, ns, cat);

        new NamespaceWorkspaceConsistencyListener(cat).handleModifyEvent(e);
        verify(ns, cat);
    }

    @Test
    public void testChangeNamespace() {
        Catalog cat = createMock(Catalog.class);
        cat.addListener((CatalogListener) anyObject());
        expectLastCall();

        WorkspaceInfo ws = createMock(WorkspaceInfo.class);
        ws.setName("abcd");
        expectLastCall();

        expect(cat.getWorkspaceByName("gs")).andReturn(ws);

        cat.save(ws);
        expectLastCall();

        NamespaceInfo ns = createNiceMock(NamespaceInfo.class);

        CatalogModifyEvent e = createNiceMock(CatalogModifyEvent.class);
        expect(e.getSource()).andReturn(ns).anyTimes();
        expect(e.getPropertyNames()).andReturn(Arrays.asList("prefix"));
        expect(e.getOldValues()).andReturn((List)Arrays.asList("gs"));
        expect(e.getNewValues()).andReturn((List)Arrays.asList("abcd"));

        replay(e, ws, ns, cat);

        new NamespaceWorkspaceConsistencyListener(cat).handleModifyEvent(e);
        verify(ws, cat);
    }

    @Test
    public void testChangeDefaultWorkspace() {
        Catalog cat = createMock(Catalog.class);
        cat.addListener((CatalogListener) anyObject());
        expectLastCall();

        NamespaceInfo def = createNiceMock(NamespaceInfo.class);
        expect(cat.getDefaultNamespace()).andReturn(def);

        NamespaceInfo ns = createNiceMock(NamespaceInfo.class);
        expect(cat.getNamespaceByPrefix("abcd")).andReturn(ns);
       
        cat.setDefaultNamespace(ns);
        expectLastCall();

        WorkspaceInfo ws = createNiceMock(WorkspaceInfo.class);
        expect(ws.getName()).andReturn("abcd");

        CatalogModifyEvent e = createNiceMock(CatalogModifyEvent.class);
        expect(e.getSource()).andReturn(cat).anyTimes();
        expect(e.getPropertyNames()).andReturn(Arrays.asList("defaultWorkspace"));
        expect(e.getNewValues()).andReturn((List)Arrays.asList(ws));
       
        replay(ns, ws, e, cat);

        new NamespaceWorkspaceConsistencyListener(cat).handleModifyEvent(e);

        verify(ns, ws, cat);
    }

    @Test
    public void testChangeDefaultNamespace() {
        Catalog cat = createMock(Catalog.class);
        cat.addListener((CatalogListener) anyObject());
        expectLastCall();

        WorkspaceInfo def = createNiceMock(WorkspaceInfo.class);
        expect(cat.getDefaultWorkspace()).andReturn(def);

        WorkspaceInfo ws = createNiceMock(WorkspaceInfo.class);
        expect(cat.getWorkspaceByName("abcd")).andReturn(ws);

        cat.setDefaultWorkspace(ws);
        expectLastCall();

        NamespaceInfo ns = createNiceMock(NamespaceInfo.class);
        expect(ns.getPrefix()).andReturn("abcd");

        CatalogModifyEvent e = createNiceMock(CatalogModifyEvent.class);
        expect(e.getSource()).andReturn(cat).anyTimes();
        expect(e.getPropertyNames()).andReturn(Arrays.asList("defaultNamespace"));
        expect(e.getNewValues()).andReturn((List)Arrays.asList(ns));
       
        replay(ns, ws, e, cat);

        new NamespaceWorkspaceConsistencyListener(cat).handleModifyEvent(e);

        verify(ns, ws, cat);
    }

    @Test
    public void testChangeNamespaceURI() {
        Catalog cat = createMock(Catalog.class);
        cat.addListener((CatalogListener) anyObject());
        expectLastCall();

        NamespaceInfo ns = createNiceMock(NamespaceInfo.class);
        expect(ns.getPrefix()).andReturn("foo");
        expect(ns.getURI()).andReturn("http://foo.org");

        WorkspaceInfo ws = createNiceMock(WorkspaceInfo.class);
        expect(cat.getWorkspaceByName("foo")).andReturn(ws);

        DataStoreInfo ds = createNiceMock(DataStoreInfo.class);

        expect(cat.getDataStoresByWorkspace(ws)).andReturn(Arrays.asList(ds));

        HashMap params = new HashMap();
        params.put("namespace", "http://bar.org");
        expect(ds.getConnectionParameters()).andReturn(params).anyTimes();

        cat.save(hasNamespace("http://foo.org"));
        expectLastCall();

        CatalogPostModifyEvent e = createNiceMock(CatalogPostModifyEvent.class);
        expect(e.getSource()).andReturn(ns).anyTimes();

        replay(ds, ws, ns, e, cat);


        new NamespaceWorkspaceConsistencyListener(cat).handlePostModifyEvent(e);
        verify(cat);
    }

    protected StoreInfo hasNamespace(final String namespace) {
        EasyMock.reportMatcher(new IArgumentMatcher() {
            @Override
            public boolean matches(Object argument) {
                return namespace.equals(((StoreInfo)argument).getConnectionParameters().get("namespace"));
            }

            @Override
            public void appendTo(StringBuffer buffer) {
                buffer.append("hasNamespace '").append(namespace).append("'");
            }
           
        });
        return null;
    }
}
TOP

Related Classes of org.geoserver.catalog.impl.WorkspaceNamespaceConstencyTest

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.