Re: [xwiki-devs] [xwiki-notifications] r30768 - enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui
Cool to have a test for this, thanks Alex. However I think that in the near future we need to find a way to write these type of tests as unit tests instead of functional tests since otherwise we're going to have too many functional tests, which will lead to the following problems: - take a lot of time to execute (and hence are not executed often + need more machines, etc) - are hard to debug when they fail (since they're not unit tests) - do not make us improve the design of the code WDYT? Thanks -Vincent PS: I haven't looked at this example in particular and my comment is general. Maybe this is testing old code which would need some heavy refactoring before we can write a unit test for it. On Aug 27, 2010, at 11:33 AM, abusenius (SVN) wrote:
Author: abusenius Date: 2010-08-27 11:33:57 +0200 (Fri, 27 Aug 2010) New Revision: 30768
Modified: enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/LoginTest.java Log: XWIKI-5434: Added a functional test
Modified: enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/LoginTest.java =================================================================== --- enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/LoginTest.java 2010-08-27 09:30:38 UTC (rev 30767) +++ enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/LoginTest.java 2010-08-27 09:33:57 UTC (rev 30768) @@ -26,6 +26,7 @@ import org.xwiki.it.ui.administration.elements.GlobalRightsPage; import org.xwiki.it.ui.framework.AbstractTest; import org.xwiki.it.ui.framework.elements.LoginPage; +import org.xwiki.it.ui.framework.elements.editor.WikiEditPage; import org.xwiki.it.ui.xe.elements.HomePage;
/** @@ -114,4 +115,31 @@ rights.unforceAuthenticatedView(); } } + + @Test + public void testRedirectPreservesPOSTParameters() throws InterruptedException + { + String test = "Test string " + System.currentTimeMillis(); + final String space = "Main"; + final String page = "POSTTest"; + LoginPage loginPage = this.homePage.clickLogin(); + loginPage.loginAsAdmin(); + // start editing a page + WikiEditPage editPage = new WikiEditPage(); + editPage.switchToEdit(space, page); + editPage.setTitle(test); + editPage.setContent(test); + // emulate expired session: delete the cookies + getDriver().manage().deleteAllCookies(); + // try to save + editPage.clickSaveAndView(); + // we should have been redirected to login + Assert.assertTrue(getDriver().getCurrentUrl().startsWith(getUtil().getURL("XWiki", "XWikiLogin", "login"))); + loginPage.loginAsAdmin(); + // we should have been redirected back to view, and the page should have been saved + Assert.assertTrue(getDriver().getCurrentUrl().startsWith(getUtil().getURL(space, page))); + editPage.switchToEdit(space, page); + Assert.assertEquals(test, editPage.getTitle()); + Assert.assertEquals(test, editPage.getContent()); + } }
_______________________________________________ notifications mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/notifications
I think we are going to need to look at adding functional API tests. I recently committed a number of ui-tests which prove that attachments are persisted in the database. They paste code into the edit window and expect a result which doesn't make me feel good about the tests but I don't see them as being meaningful without the database present. Caleb Vincent Massol wrote:
Cool to have a test for this, thanks Alex.
However I think that in the near future we need to find a way to write these type of tests as unit tests instead of functional tests since otherwise we're going to have too many functional tests, which will lead to the following problems: - take a lot of time to execute (and hence are not executed often + need more machines, etc) - are hard to debug when they fail (since they're not unit tests) - do not make us improve the design of the code
WDYT?
Thanks -Vincent
PS: I haven't looked at this example in particular and my comment is general. Maybe this is testing old code which would need some heavy refactoring before we can write a unit test for it.
On Aug 27, 2010, at 11:33 AM, abusenius (SVN) wrote:
Author: abusenius Date: 2010-08-27 11:33:57 +0200 (Fri, 27 Aug 2010) New Revision: 30768
Modified: enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/LoginTest.java Log: XWIKI-5434: Added a functional test
Modified: enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/LoginTest.java =================================================================== --- enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/LoginTest.java 2010-08-27 09:30:38 UTC (rev 30767) +++ enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/LoginTest.java 2010-08-27 09:33:57 UTC (rev 30768) @@ -26,6 +26,7 @@ import org.xwiki.it.ui.administration.elements.GlobalRightsPage; import org.xwiki.it.ui.framework.AbstractTest; import org.xwiki.it.ui.framework.elements.LoginPage; +import org.xwiki.it.ui.framework.elements.editor.WikiEditPage; import org.xwiki.it.ui.xe.elements.HomePage;
/** @@ -114,4 +115,31 @@ rights.unforceAuthenticatedView(); } } + + @Test + public void testRedirectPreservesPOSTParameters() throws InterruptedException + { + String test = "Test string " + System.currentTimeMillis(); + final String space = "Main"; + final String page = "POSTTest"; + LoginPage loginPage = this.homePage.clickLogin(); + loginPage.loginAsAdmin(); + // start editing a page + WikiEditPage editPage = new WikiEditPage(); + editPage.switchToEdit(space, page); + editPage.setTitle(test); + editPage.setContent(test); + // emulate expired session: delete the cookies + getDriver().manage().deleteAllCookies(); + // try to save + editPage.clickSaveAndView(); + // we should have been redirected to login + Assert.assertTrue(getDriver().getCurrentUrl().startsWith(getUtil().getURL("XWiki", "XWikiLogin", "login"))); + loginPage.loginAsAdmin(); + // we should have been redirected back to view, and the page should have been saved + Assert.assertTrue(getDriver().getCurrentUrl().startsWith(getUtil().getURL(space, page))); + editPage.switchToEdit(space, page); + Assert.assertEquals(test, editPage.getTitle()); + Assert.assertEquals(test, editPage.getContent()); + } }
_______________________________________________ notifications mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/notifications
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
I agree in general, but in this case it seemed to be complicated to unit-test parameter restoring, since there are many classes involved in the process. Thanks, Alex On 09/01/2010 05:51 PM, Vincent Massol wrote:
Cool to have a test for this, thanks Alex.
However I think that in the near future we need to find a way to write these type of tests as unit tests instead of functional tests since otherwise we're going to have too many functional tests, which will lead to the following problems: - take a lot of time to execute (and hence are not executed often + need more machines, etc) - are hard to debug when they fail (since they're not unit tests) - do not make us improve the design of the code
WDYT?
Thanks -Vincent
PS: I haven't looked at this example in particular and my comment is general. Maybe this is testing old code which would need some heavy refactoring before we can write a unit test for it.
On Aug 27, 2010, at 11:33 AM, abusenius (SVN) wrote:
Author: abusenius Date: 2010-08-27 11:33:57 +0200 (Fri, 27 Aug 2010) New Revision: 30768
Modified: enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/LoginTest.java Log: XWIKI-5434: Added a functional test
Modified: enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/LoginTest.java =================================================================== --- enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/LoginTest.java 2010-08-27 09:30:38 UTC (rev 30767) +++ enterprise/trunk/distribution-test/ui-tests/src/test/it/org/xwiki/it/ui/LoginTest.java 2010-08-27 09:33:57 UTC (rev 30768) @@ -26,6 +26,7 @@ import org.xwiki.it.ui.administration.elements.GlobalRightsPage; import org.xwiki.it.ui.framework.AbstractTest; import org.xwiki.it.ui.framework.elements.LoginPage; +import org.xwiki.it.ui.framework.elements.editor.WikiEditPage; import org.xwiki.it.ui.xe.elements.HomePage;
/** @@ -114,4 +115,31 @@ rights.unforceAuthenticatedView(); } } + + @Test + public void testRedirectPreservesPOSTParameters() throws InterruptedException + { + String test = "Test string " + System.currentTimeMillis(); + final String space = "Main"; + final String page = "POSTTest"; + LoginPage loginPage = this.homePage.clickLogin(); + loginPage.loginAsAdmin(); + // start editing a page + WikiEditPage editPage = new WikiEditPage(); + editPage.switchToEdit(space, page); + editPage.setTitle(test); + editPage.setContent(test); + // emulate expired session: delete the cookies + getDriver().manage().deleteAllCookies(); + // try to save + editPage.clickSaveAndView(); + // we should have been redirected to login + Assert.assertTrue(getDriver().getCurrentUrl().startsWith(getUtil().getURL("XWiki", "XWikiLogin", "login"))); + loginPage.loginAsAdmin(); + // we should have been redirected back to view, and the page should have been saved + Assert.assertTrue(getDriver().getCurrentUrl().startsWith(getUtil().getURL(space, page))); + editPage.switchToEdit(space, page); + Assert.assertEquals(test, editPage.getTitle()); + Assert.assertEquals(test, editPage.getContent()); + } }
_______________________________________________ notifications mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/notifications
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
participants (3)
-
Alex Busenius -
Caleb James DeLisle -
Vincent Massol