/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.portal; import org.junit.Test; import com.enonic.cms.core.InvalidKeyException; import com.enonic.cms.core.structure.SiteKey; import com.enonic.cms.core.structure.menuitem.MenuItemKey; import com.enonic.cms.core.structure.portlet.PortletKey; import static org.junit.Assert.*; public class PortalInstanceKeyResolverTest { private PortalInstanceKeyResolver resolver = new PortalInstanceKeyResolver(); private SiteKey contextSiteKey = new SiteKey( 11 ); @Test public void testPortalInstanceKeyResolver() { PortalInstanceKey key1 = resolver.resolvePortalInstanceKey( "WINDOW:43:191", contextSiteKey ); PortalInstanceKey key2 = resolver.resolvePortalInstanceKey( "PAGE:812", contextSiteKey ); PortalInstanceKey key4 = resolver.resolvePortalInstanceKey( "SITE:11", contextSiteKey ); assertEquals( new MenuItemKey( 43 ), key1.getMenuItemKey() ); assertEquals( new PortletKey( 191 ), key1.getPortletKey() ); assertNotNull( key1.getSiteKey() ); assertEquals( new MenuItemKey( 812 ), key2.getMenuItemKey() ); assertNull( key2.getPortletKey() ); assertNotNull( key2.getSiteKey() ); assertNull( key4.getMenuItemKey() ); assertNull( key4.getPortletKey() ); assertEquals( new SiteKey( 11 ), key4.getSiteKey() ); } @Test public void testPortalInstanceKeyResolverErrors() { try { resolver.resolvePortalInstanceKey( null, contextSiteKey ); fail( "null, is not a valid instance key." ); } catch ( IllegalArgumentException e ) { assertEquals( "No instanceKey provided, input is empty.", e.getMessage() ); } try { resolver.resolvePortalInstanceKey( "", contextSiteKey ); fail( "'', is not a valid instance key." ); } catch ( IllegalArgumentException e ) { assertEquals( "No instanceKey provided, input is empty.", e.getMessage() ); } try { resolver.resolvePortalInstanceKey( "WINDOWS:81:81", contextSiteKey ); fail( "'WINDOWS:81:81', is not a valid instance key." ); } catch ( IllegalArgumentException e ) { assertEquals( "No valid instance key context in key: WINDOWS:81:81", e.getMessage() ); } try { resolver.resolvePortalInstanceKey( "WINDO:81:81", contextSiteKey ); fail( "'WINDO:81:81', is not a valid instance key." ); } catch ( IllegalArgumentException e ) { assertEquals( "No valid instance key context in key: WINDO:81:81", e.getMessage() ); } try { resolver.resolvePortalInstanceKey( "WINDOW:81:81:81", contextSiteKey ); fail( "'WINDOW:81:81:81', is not a valid instance key." ); } catch ( IllegalArgumentException e ) { assertEquals( "WINDOW instance key has wrong number of keys: 3", e.getMessage() ); } try { resolver.resolvePortalInstanceKey( "PAGE:1:1", contextSiteKey ); fail( "'PAGE:1:1', is not a valid instance key." ); } catch ( IllegalArgumentException e ) { assertEquals( "PAGE instance key has wrong number of keys: 2", e.getMessage() ); } try { resolver.resolvePortalInstanceKey( "SITE:0:1:2:3:4", contextSiteKey ); fail( "'SITE:0:1:2:3:4', is not a valid instance key." ); } catch ( IllegalArgumentException e ) { assertEquals( "SITE instance key has wrong number of keys: 5", e.getMessage() ); } try { resolver.resolvePortalInstanceKey( "SITE:a", contextSiteKey ); fail( "'SITE:a' is not a valid instance key." ); } catch ( InvalidKeyException e ) { // Success! } try { resolver.resolvePortalInstanceKey( "WINDOW:-2:14", contextSiteKey ); fail( "'WINDOW:-2:14' is not a valid instance key." ); } catch ( InvalidKeyException e ) { // Success! } try { resolver.resolvePortalInstanceKey( "WINDOW:PAGE:1", contextSiteKey ); fail( "'WINDOW:PAGE' is not a valid instance key." ); } catch ( InvalidKeyException e ) { // Success! } } }