/* Copyright (c) 2003 eInnovation Inc. All rights reserved This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. */ package com.openedit.page; import java.io.File; import org.openedit.repository.filesystem.FileItem; import com.openedit.BaseTestCase; import com.openedit.util.strainer.AndFilter; import com.openedit.util.strainer.Filter; import com.openedit.util.strainer.FilterReader; import com.openedit.util.strainer.GroupFilter; import com.openedit.util.strainer.NotFilter; import com.openedit.util.strainer.OrFilter; import com.openedit.util.strainer.PermissionFilter; import com.openedit.util.strainer.UserFilter; /** * Test for {@link DynamicPage} * * @author Eric Galluzzo */ public class PageTest extends BaseTestCase { public static final String PATH_WITH_FILTERS = "withfilters.html"; public PageTest(String inName) { super(inName); } public void testMixedFallBackAlternativeContent() throws Exception { Page pagenormal = getPage( "/realfiles/inbase.html" ); assertTrue("inbase does not exist",pagenormal.exists()); String id = pagenormal.getId(); System.out.println(id); } public void testSimpleXconf() throws Exception { //The rules //1. PageSettings may be blank and have only one Path //2. We should use the PageSettings.setAlternativePath to show the real path Page page = getPage( "/simple/test.html" ); assertEquals("/simple/test.xconf",page.getPageSettings().getPath()); assertEquals("true",page.getPageSettings().getProperty("simple").getValue()); // PageSettings settings = getFixture().getPageManager().getPageSettingsManager().getPageSettings("/simple/test.html"); // // assertEquals("/WEB-INF/base/simple/test.html",settings.getXConf().getActualPath()); } /* public void testFallBackRedirected() throws Exception { //a falls back to a_fallback //b falls back to b_fallback Page page = getFixture().getPageManager().getPage("/fallbackredirect_modules/asset/editor/test.html"); String path = page.getPageSettings().getFallback().getPath(); //assertEquals("/fallbackredirect_modules/default/editor/test.xconf", path); assertEquals("/WEB-INF/base/fallbackredirect_modules/asset/editor/test.xconf", path); assertEquals("Correct!", page.getProperty("title")); } */ public void testFallBackChain() throws Exception { Page pagemissing = getPage( "/missingfile/sub/index.html" ); assertEquals("/WEB-INF/base/missingfile/sub/index.xconf",pagemissing.getPageSettings().getFallback().getPath()); Page page = getPage( "/fallbackchain1/sub/index.html" ); assertEquals("/fallbackchain1/sub/index.xconf",page.getPageSettings().getPath()); assertEquals("/fallbackchain2/sub/index.xconf",page.getPageSettings().getFallback().getPath()); assertEquals("/fallbackchain1/sub/_site.xconf",page.getPageSettings().getParent().getPath()); assertEquals("/fallbackchain2/sub/_site.xconf",page.getPageSettings().getParent().getFallback().getPath()); assertEquals("/fallbackchain3/sub/_site.xconf",page.getPageSettings().getParent().getFallback().getFallback().getPath()); assertEquals("/WEB-INF/base/fallbackchain3/sub/_site.xconf",page.getPageSettings().getParent().getFallback().getFallback().getFallback().getPath()); assertEquals("/WEB-INF/base/fallbackchain4/sub/_site.xconf",page.getPageSettings().getParent().getFallback().getFallback().getFallback().getFallback().getPath()); assertNull(page.getPageSettings().getParent().getFallback().getFallback().getFallback().getFallback().getFallback()); assertEquals("level1", page.get("level1")); assertEquals("level2", page.get("level2")); assertEquals("level3", page.get("level3")); page = getPage( "/fallbackchain1/sub/inlevel2.html" ); assertTrue( page.exists()); page = getPage( "/fallbackchain1/sub/inlevel3.html" ); assertTrue( page.exists()); page = getPage( "/fallbackchain1/sub/inbasefallbackchain3.html" ); assertTrue( page.exists()); page = getPage( "/fallbackchain1/sub/inbasefallbackchain4.html" ); assertTrue( page.exists()); assertTrue( page.isCurrent() ); assertTrue( page.isCurrent() ); assertTrue( page.isCurrent() ); assertTrue( page.isCurrent() ); } /** * DOCUMENT ME! * * @throws Exception */ public void testLoadConfiguration_Filters() throws Exception { Page pageWithFilters = getPage(PATH_WITH_FILTERS); checkFilter(pageWithFilters.getPermission("view").getRootFilter()); checkFilter(pageWithFilters.getPermission("edit").getRootFilter()); } public void testIsBinary() throws Exception { Page indexPage = getPage( "index.html" ); Page jpgPage = getPage( "picture.jpg" ); assertFalse( indexPage.isBinary() ); System.out.println( jpgPage.getMimeType() ); assertTrue( jpgPage.isBinary() ); } protected void checkFilter(Filter inFilter) { assertTrue("Outer filter should be an AndFilter", inFilter instanceof AndFilter); AndFilter andFilter = (AndFilter) inFilter; assertEquals("Number of AndFilter children", 3, andFilter.getFilters().length); assertTrue( "First AndFilter child should be a UserFilter", andFilter.getFilters()[0] instanceof UserFilter); UserFilter userFilter1 = (UserFilter) andFilter.getFilters()[0]; assertNull("AndFilter's UserFilter's username should be null", userFilter1.getUsername()); assertTrue( "Second AndFilter child should be an OrFilter", andFilter.getFilters()[1] instanceof OrFilter); OrFilter orFilter = (OrFilter) andFilter.getFilters()[1]; assertEquals("Number of OrFilter children", 2, orFilter.getFilters().length); assertTrue( "First OrFilter child should be a GroupFilter", orFilter.getFilters()[0] instanceof GroupFilter); GroupFilter groupFilter = (GroupFilter) orFilter.getFilters()[0]; assertEquals("foo", groupFilter.getGroupId()); assertTrue( "Second OrFilter child should be a PermissionFilter", orFilter.getFilters()[1] instanceof PermissionFilter); PermissionFilter permissionFilter = (PermissionFilter) orFilter.getFilters()[1]; assertEquals("bar", permissionFilter.getPermission()); assertTrue( "Third AndFilter child should be a NotFilter", andFilter.getFilters()[2] instanceof NotFilter); NotFilter notFilter = (NotFilter) andFilter.getFilters()[2]; assertTrue( "NotFilter's child should be a UserFilter", notFilter.getFilter() instanceof UserFilter); UserFilter userFilter2 = (UserFilter) notFilter.getFilter(); assertEquals("NotFilter's UserFilter's username", "baz", userFilter2.getUsername()); Filter copy =userFilter2.copy((FilterReader)getFixture().getModuleManager().getBean("filterReader"),"somename"); assertNotNull(copy); assertTrue( copy instanceof UserFilter); assertEquals("NotFilter's UserFilter's username", "baz", ((UserFilter)copy).getUsername()); } public void testNoLayout() throws Exception { Page page = getPage( "layout_tests/no_layout.html" ); assertTrue( page.exists() ); assertFalse( page.hasLayout() ); } public void testRelativeLayout() throws Exception { Page page = getPage( "layout_tests/relative_layout.html" ); assertTrue( page.exists() ); Page layoutPage = getPage(page.getLayout()); assertTrue( layoutPage.exists() ); assertEquals( "/layout_tests/layout2.html", layoutPage.getPath() ); } public void testNullLayout() throws Exception { Page page = getPage( "/layout_tests/null_layout.html" ); assertTrue( page.exists() ); Page altpage = getPage( "/WEB-INF/base/layout_tests/nonexistent.html" ); assertEquals( null,altpage.getAlternateContentPath()); assertFalse( altpage.exists() ); Page laypage = getPage( "/layout_tests/nonexistent.html" ); assertFalse( laypage.exists() ); Page layoutPage = getPage(page.getLayout()); FileItem item = (FileItem)layoutPage.getContentItem(); String path = item.getFile().getPath(); assertTrue(item.getFile().getPath(),path.endsWith( File.separator + "layout_tests" + File.separator + "nonexistent.html") ); assertTrue( !layoutPage.exists() ); } public void testNestedLayout() throws Exception { Page page = getPage( "layout_tests/nested_layout.html" ); assertTrue( page.exists() ); Page layoutPage = getPage(page.getLayout()); assertTrue( layoutPage.exists() ); assertEquals( "/layout_tests/layout3.html", layoutPage.getPath() ); } public void testConfigList() throws Exception { Page page = getPage( "/fallbackme/index.html" ); PageSettings back = page.getPageSettings().getParent(); assertNotNull(back); assertTrue(back.getPath().endsWith("/fallbackme/_site.xconf")); back = (PageSettings)back.getParent(); assertTrue(back.getPath().endsWith("/_site.xconf")); PageSettings fback = page.getPageSettings().getFallback(); assertNotNull(fback); assertTrue(fback.getPath().endsWith("/fallbackfiles/index.xconf")); fback = fback.getParent(); assertTrue(fback.getPath().endsWith("/fallbackfiles/_site.xconf")); fback = fback.getParent(); assertTrue(fback.getPath().endsWith("/_site.xconf")); } public void testBaseWebInfFallBack() throws Exception { Page page = getPage( "/autofallback/sub/index.html" ); assertTrue(page.getPageSettings().getPath().endsWith("/autofallback/sub/index.xconf")); PageSettings back = page.getPageSettings().getParent(); assertNotNull(back); assertTrue(back.getPath().endsWith("/autofallback/sub/_site.xconf")); back = (PageSettings)back.getParent(); assertTrue(back.getPath().endsWith("/autofallback/_site.xconf")); back = (PageSettings)back.getParent(); assertTrue(back.getPath().endsWith("/_site.xconf")); PageSettings fback = page.getPageSettings().getFallback(); assertNotNull(fback); assertTrue(fback.getPath().endsWith("/WEB-INF/base/autofallback/sub/index.xconf")); fback = fback.getParent(); assertTrue(fback.getPath().endsWith("/WEB-INF/base/autofallback/sub/_site.xconf")); fback = fback.getParent(); assertTrue(fback.getPath().endsWith("/WEB-INF/base/autofallback/_site.xconf")); fback = fback.getParent(); assertTrue(fback.getPath().endsWith("/WEB-INF/base/_site.xconf")); // String il = page.getPageSettings().getInnerLayout(); // assertEquals("/autofallback/sub/layout0.html", il); // Page ilpage = getPage(il); // String ol = ilpage.getPageSettings().getInnerLayout(); // //assertEquals("/layout1.html", ol); String il = page.getInnerLayout(); assertEquals("/autofallback/sub/layout0.html", il); Page ilpage = getPage(il); String ol = ilpage.getInnerLayout(); assertEquals("/layout1.html", ol); } public void testAlternativeContent() throws Exception { Page pagenormal = getPage( "/autofallback/sub/index.html" ); assertTrue(pagenormal.exists()); assertEquals( "/autofallback/sub/index.html",pagenormal.getPath()); assertEquals( "/WEB-INF/base/autofallback/sub/index.html",pagenormal.getAlternateContentPath()); assertTrue( pagenormal.exists()); Page page = getPage( "/autofallback/_site.xconf" ); assertEquals( "/autofallback/_site.xconf",page.getPath()); //assertEquals( "/WEB-INF/base/autofallback/_site.xconf",page.getAlternateContentPath()); assertTrue( page.getPageSettings().getFallback().exists()); } }