From 2fcac466db4764242366822988570b02c41e8c8c Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Wed, 11 May 2011 09:13:48 +0200 Subject: [PATCH] added integration test for JerseyClientProvider --- scm-clients/scm-client-impl/pom.xml | 4 + .../client/it/JerseyClientProviderITCase.java | 162 ++++++++++++++++++ 2 files changed, 166 insertions(+) create mode 100644 scm-clients/scm-client-impl/src/test/java/sonia/scm/client/it/JerseyClientProviderITCase.java diff --git a/scm-clients/scm-client-impl/pom.xml b/scm-clients/scm-client-impl/pom.xml index 752b3c615a..8bc6e18d4d 100644 --- a/scm-clients/scm-client-impl/pom.xml +++ b/scm-clients/scm-client-impl/pom.xml @@ -113,6 +113,10 @@ scm.home target/scm-it + + file.encoding + UTF-8 + diff --git a/scm-clients/scm-client-impl/src/test/java/sonia/scm/client/it/JerseyClientProviderITCase.java b/scm-clients/scm-client-impl/src/test/java/sonia/scm/client/it/JerseyClientProviderITCase.java new file mode 100644 index 0000000000..ed520e11ee --- /dev/null +++ b/scm-clients/scm-client-impl/src/test/java/sonia/scm/client/it/JerseyClientProviderITCase.java @@ -0,0 +1,162 @@ +/** + * Copyright (c) 2010, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + + + +package sonia.scm.client.it; + +//~--- non-JDK imports -------------------------------------------------------- + +import org.junit.Ignore; +import org.junit.Test; + +import sonia.scm.client.JerseyClientProvider; +import sonia.scm.client.JerseyClientSession; +import sonia.scm.client.ScmClientException; +import sonia.scm.client.ScmUrlProvider; +import sonia.scm.config.ScmConfiguration; + +import static org.junit.Assert.*; + +//~--- JDK imports ------------------------------------------------------------ + +import com.sun.jersey.api.client.Client; +import com.sun.jersey.api.client.WebResource; + +/** + * + * @author Sebastian Sdorra + */ +public class JerseyClientProviderITCase +{ + + /** + * Method description + * + * + * @throws ScmClientException + */ + @Test(expected = ScmClientException.class) + public void createSessionAnonymousFailedTest() throws ScmClientException + { + createSession(null, null); + } + + /** + * Method description + * + * + * @throws ScmClientException + */ + @Test + @Ignore + public void createSessionAnonymousTest() throws ScmClientException + { + JerseyClientSession adminSession = createSession("scmadmin", "scmadmin"); + + // enable anonymous access + ScmUrlProvider up = adminSession.getUrlProvider(); + Client client = adminSession.getClient(); + WebResource resource = client.resource(up.getResourceUrl("config")); + ScmConfiguration config = resource.get(ScmConfiguration.class); + + config.setAnonymousAccessEnabled(true); + resource.post(config); + + // test anonymous access + createSession(null, null); + + // disable anonymous access + config.setAnonymousAccessEnabled(false); + resource.post(config); + } + + /** + * Method description + * + * + * @throws ScmClientException + */ + @Test + public void createSessionTest() throws ScmClientException + { + JerseyClientSession session = createSession("scmadmin", "scmadmin"); + + assertNotNull(session); + assertNotNull(session.getState()); + assertNotNull(session.getState().getUser()); + assertEquals(session.getState().getUser().getName(), "scmadmin"); + } + + /** + * Method description + * + * + * @throws ScmClientException + */ + @Test(expected = ScmClientException.class) + public void createSessionWithUnkownUserTest() throws ScmClientException + { + createSession("dent", "dent123"); + } + + /** + * Method description + * + * + * @throws ScmClientException + */ + @Test(expected = ScmClientException.class) + public void createSessionWithWrongPasswordTest() throws ScmClientException + { + createSession("scmadmin", "ka123"); + } + + /** + * Method description + * + * + * @param username + * @param password + * + * @return + * + * @throws ScmClientException + */ + private JerseyClientSession createSession(String username, String password) + throws ScmClientException + { + JerseyClientProvider provider = new JerseyClientProvider(); + + return provider.createSession("http://localhost:8081/scm", username, + password); + } +}