/* * Copyright (C) 2009 eXo Platform SAS. * * 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.exoplatform.services.jcr.api.accessing; import org.exoplatform.services.jcr.JcrAPIBaseTest; import org.exoplatform.services.jcr.core.CredentialsImpl; import javax.jcr.Credentials; import javax.jcr.LoginException; import javax.jcr.NoSuchWorkspaceException; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; /** * Created y the eXo platform team * * @author Benjamin Mestrallet * @author <a href="mailto:geaz@users.sourceforge.net">Gennady Azarenkov</a> * @version $Id: TestAccessRepository.java 12049 2008-03-18 12:22:03Z gazarenkov $ See 6.1.1 */ public class TestAccessRepository extends JcrAPIBaseTest { public void testLogin() throws NoSuchWorkspaceException, LoginException, RepositoryException { Credentials cred = new CredentialsImpl("exo", "exo".toCharArray()); Session session = repository.login(cred, WORKSPACE); assertNotNull(session); assertEquals("exo", session.getUserID()); assertEquals(WORKSPACE, session.getWorkspace().getName()); } /** * 6.1.2 If credentials is null, it is assumed that authentication is handled by a mechanism * external to the repository itself (for example, through the JAAS framework) and that the * repository implementation exists within a context (for example, an application server) that * allows it to handle authorization of the request for access to the specified workspace */ public void testExternalLogin() throws NoSuchWorkspaceException, LoginException, RepositoryException { // make sure for this thread the user is "exo" Credentials cred = new CredentialsImpl("exo", "exo".toCharArray()); Session session1 = repository.login(cred, WORKSPACE); // new session with the same credentials Session session = repository.login(WORKSPACE); assertNotNull(session); assertEquals("exo", session.getUserID()); assertEquals(WORKSPACE, session.getWorkspace().getName()); assertFalse(session1.equals(session)); } /** * 6.1.2 If workspaceName is null, a default workspace is automatically selected by the repository * implementation. This may, for example, be the �home workspace� of the user whose * credentials were passed, though this is entirely up to the configuration and implementation of * the repository. Alternatively it may be a null workspace that serves only to provide the method */ public void testLoginToDefaultWorkspace() throws NoSuchWorkspaceException, LoginException, RepositoryException { Credentials cred = new CredentialsImpl("exo", "exo".toCharArray()); Session session = repository.login(cred); assertNotNull(session); assertEquals(WORKSPACE, session.getWorkspace().getName()); } public void testExternalLoginToDefaultWorkspace() throws NoSuchWorkspaceException, LoginException, RepositoryException { // PortalContainer.getInstance(). // createSessionContainer("my-session", "gena"). // setClientInfo(new DummyClientInfo("gena")); // container.createSessionContainer("my-session", "gena"). // setClientInfo(new DummyClientInfo("gena")); Session session = repository.login(); assertNotNull(session); assertEquals(WORKSPACE, session.getWorkspace().getName()); } public void testWrongLogin() throws Exception { Credentials cred = new CredentialsImpl("benj", "".toCharArray()); try { repository.login(cred, WORKSPACE); fail("Exception should have been thrown"); } catch (LoginException e) { } } public void testWrongWorkspace() throws Exception { Credentials cred = this.credentials; // new CredentialsImpl("user", "psw".toCharArray()); try { repository.login(cred, "wrong_workspace"); fail("Exception should have been thrown"); } catch (NoSuchWorkspaceException e) { } } public void testDescriptors() throws Exception { assertTrue(repository.getDescriptorKeys().length >= 6); assertNotNull(repository.getDescriptor(Repository.REP_NAME_DESC)); } }