On Thu, May 13, 2010 at 22:51, sdumitriu <[email protected] > wrote:
> Author: sdumitriu > Date: 2010-05-13 22:51:35 +0200 (Thu, 13 May 2010) > New Revision: 28862 > > Added: > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/TemplateTest.java > > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/elements/WikiEditPage.java > Log: > XWIKI-2580: Improve file access sandboxing > Added some more tests. > Patch from Alex Busenius applied with minor changes. > > Added: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/TemplateTest.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/TemplateTest.java > (rev 0) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/TemplateTest.java > 2010-05-13 20:51:35 UTC (rev 28862) > @@ -0,0 +1,135 @@ > +/* > + * See the NOTICE file distributed with this work for additional > + * information regarding copyright ownership. > + * > + * This 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 software 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. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this software; if not, write to the Free > + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA > + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. > + */ > +package org.xwiki.it.ui; > + > +import junit.framework.Assert; > + > +import org.junit.Before; > +import org.junit.Test; > +import org.openqa.selenium.By; > +import org.xwiki.it.ui.elements.WikiEditPage; > +import org.xwiki.it.ui.framework.AbstractAdminAuthenticatedTest; > + > + > +/** > + * Test template handling > + * > + * @version $Id$ > + * @since 2.4M1 > + */ > +public class TemplateTest extends AbstractAdminAuthenticatedTest > +{ > + /** Page used for testing: Main.TemplateTest */ > + private WikiEditPage editPage; > + > + > + @Before > + @Override > + public void setUp() > + { > + super.setUp(); > + > + editPage = new WikiEditPage(getDriver()); > + } > + > + /** > + * Test that velocity is rendered > + */ > + @Test > + public void testHelloVelocity() > + { > + String hello = "Hello Velocity Test Test Test"; > + saveVelocity(hello); > + > > Assert.assertTrue(getDriver().findElement(By.id("xwikicontent")).getText().contains(hello)); > + } > + > + /** > + * Test that an included existing template is displayed correctly > + */ > + @Test > + public void testCorrectTemplate() > + { > + saveVelocity(includeTemplate("code.vm"), true); > + Assert.assertNotNull(getDriver().findElement( > + > By.xpath("//d...@id='xwikicontent']//textar...@class='wiki-code']"))); > + } > + > + /** > + * See XWIKI-2580 > + */ > + @Test > + public void testWrongTemplate() > + { > + saveVelocity(includeTemplate("../../")); > + Assert.assertTrue("root directory", > + > getDriver().findElement(By.id("xwikicontent")).getText().isEmpty()); > String#isEmpty is JAVA 6 API so that will fail to build with our maven configuration. > + > + saveVelocity(includeTemplate("asdfasdf")); > + Assert.assertTrue("not existing template", > + > getDriver().findElement(By.id("xwikicontent")).getText().isEmpty()); > + > + saveVelocity(includeTemplate("../redirect")); > + Assert.assertTrue("file in the parent directory", > + > getDriver().findElement(By.id("xwikicontent")).getText().isEmpty()); > + > + saveVelocity(includeTemplate("../WEB-INF/version.properties")); > + Assert.assertTrue("file in the wrong directory", > + > getDriver().findElement(By.id("xwikicontent")).getText().isEmpty()); > + > + > > saveVelocity(includeTemplate("/chw/../../WEB-INF/../WEB-INF/lib/../version.properties")); > + Assert.assertTrue("file in the wrong directory, not normalized > path", > + > getDriver().findElement(By.id("xwikicontent")).getText().isEmpty()); > + } > + > + /** > + * @see #saveVelocity(String, boolean) > + */ > + private void saveVelocity(String code) > + { > + saveVelocity(code, false); > + } > + > + /** > + * Save a page with given velocity code and switch to view. Encloses > <code>code</code> > + * into the {{velocity}} macro and optionally also {{html}} macro. > + * > + * @param code velocity code to save > + * @param html additionally enclose <code>code</code> in {{html}} if > true > + */ > + private void saveVelocity(String code, boolean html) > + { > + editPage.switchToEdit("Main", "TemplateTest"); > + if (html) { > + code = "{{html wiki=\"false\"}}\n" + code + "\n{{/html}}"; > + } > + editPage.setContent("{{velocity filter=\"none\"}}\n" + code + > "\n{{/velocity}}\n"); > + editPage.clickSaveAndView(); > + } > + > + /** > + * Return velocity code to include a velocity template > <code>name</code> > + * > + * @param name template to use > + */ > + private String includeTemplate(String name) > + { > + return "#template(\"" + name + "\")\n"; > + } > +} > > > Property changes on: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/TemplateTest.java > ___________________________________________________________________ > Name: svn:keywords > + Author Id Revision HeadURL > Name: svn:eol-style > + native > > Added: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/elements/WikiEditPage.java > =================================================================== > --- > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/elements/WikiEditPage.java > (rev 0) > +++ > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/elements/WikiEditPage.java > 2010-05-13 20:51:35 UTC (rev 28862) > @@ -0,0 +1,108 @@ > +/* > + * See the NOTICE file distributed with this work for additional > + * information regarding copyright ownership. > + * > + * This 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 software 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. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this software; if not, write to the Free > + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA > + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. > + */ > +package org.xwiki.it.ui.elements; > + > +import org.openqa.selenium.WebDriver; > +import org.openqa.selenium.WebElement; > +import org.openqa.selenium.support.FindBy; > +import org.xwiki.it.ui.framework.TestUtils; > + > +/** > + * Represents the common actions possible on all Pages when using the > "edit" action with "wiki" > + * editor > + * > + * @version $Id$ > + * @since 2.4M1 > + */ > +public class WikiEditPage extends EditPage > +{ > + @FindBy(id = "xwikidoctitleinput") > + private WebElement titleInput; > + > + @FindBy(id = "content") > + private WebElement contentText; > + > + @FindBy(name = "minorEdit") > + private WebElement minorEditCheckBox; > + > + @FindBy(name = "comment") > + private WebElement commentInput; > + > + > + public WikiEditPage(WebDriver driver) > + { > + super(driver); > + } > + > + /** > + * Set the <code>title</code> of the page > + * > + * @param title > + */ > + public void setTitle(String title) > + { > + titleInput.clear(); > + titleInput.sendKeys(title); > + } > + > + /** > + * Set the <code>content</code> of the page > + * > + * @param content > + */ > + public void setContent(String content) > + { > + contentText.clear(); > + contentText.sendKeys(content); > + } > + > + /** > + * Set the minor edit check box value > + * > + * @param value > + */ > + public void setMinorEdit(boolean value) > + { > + if (minorEditCheckBox.isSelected() != value) > + minorEditCheckBox.toggle(); > + } > + > + /** > + * Set <code>comment</code> for this change > + * > + * @param comment > + */ > + public void setEditComment(String comment) > + { > + commentInput.clear(); > + commentInput.sendKeys(comment); > + } > + > + /** > + * Start editing page, create first if needed > + * > + * @param space > + * @param page > + */ > + public void switchToEdit(String space, String page) > + { > + TestUtils.gotoPage(space, page, "edit", "editor=wiki", > getDriver()); > + } > +} > > > Property changes on: > enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/elements/WikiEditPage.java > ___________________________________________________________________ > Name: svn:keywords > + Author Id Revision HeadURL > Name: svn:eol-style > + native > > _______________________________________________ > notifications mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/notifications > -- Thomas Mortagne _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

