@Test public void shouldReturnFalseFromIsSameIfTheRepositoryInstanceIsDifferent() throws Exception { // Set up the store ... InMemoryRepositorySource source2 = new InMemoryRepositorySource(); source2.setName("store"); Graph store2 = Graph.create(source2, context); store2 .importXmlFrom(AbstractJcrTest.class.getClassLoader().getResourceAsStream("cars.xml")) .into("/"); JcrSession jcrSession2 = mock(JcrSession.class); when(jcrSession2.nodeTypeManager()).thenReturn(nodeTypes); when(jcrSession2.isLive()).thenReturn(true); SessionCache cache2 = new SessionCache(jcrSession2, store2.getCurrentWorkspaceName(), context, nodeTypes, store2); Workspace workspace2 = mock(Workspace.class); Repository repository2 = mock(JcrRepository.class); when(jcrSession2.getWorkspace()).thenReturn(workspace2); when(jcrSession2.getRepository()).thenReturn(repository2); when(workspace2.getName()).thenReturn("workspace1"); // Use the same id and location ... javax.jcr.Node prius2 = cache2.findJcrNode(null, path("/Cars/Hybrid/Toyota Prius")); assertThat(prius2.isSame(prius), is(false)); // Check the properties ... javax.jcr.Property model = prius.getProperty("vehix:model"); javax.jcr.Property model2 = prius2.getProperty("vehix:model"); assertThat(model.isSame(model2), is(false)); }
@Test public void shouldAllowSettingUpConfigurationRepositoryWithAuthenticationProviders() throws Exception { InMemoryRepositorySource configSource = new InMemoryRepositorySource(); configSource.setName("config2"); configSource.setRetryLimit(5); configuration.loadFrom(configSource, "workspaceXYZ"); configuration .repositorySource("Source2") .usingClass(InMemoryRepositorySource.class.getName()) .loadedFromClasspath() .setDescription("description") .and() .repository("JCR Repository") .setSource("Source2") .setOption(Option.JAAS_LOGIN_CONFIG_NAME, "test") .authenticator("customAuth") .usingClass("org.modeshape.jcr.security.SecurityContextProvider") .loadedFromClasspath() .setDescription("customAuth Desc"); configuration.save(); // Save the configuration and start the engine ... engine = configuration.build(); engine.start(); ConfigurationDefinition configDefn = configuration.getConfigurationDefinition(); assertThat(configDefn.getWorkspace(), is("workspaceXYZ")); assertThat(configDefn.getPath(), is(path("/"))); // Get a graph to the configuration source ... RepositorySource configReposSource = engine.getRepositoryService().getRepositoryLibrary().getSource("config2"); assertThat(configReposSource, is(notNullValue())); assertThat(configReposSource, is(instanceOf(InMemoryRepositorySource.class))); assertThat(configReposSource.getName(), is("config2")); InMemoryRepositorySource configSource2 = (InMemoryRepositorySource) configReposSource; assertThat(configSource2.getDefaultWorkspaceName(), is("")); // didn't change this Graph graph = engine.getGraph("config2"); assertThat(graph, is(notNullValue())); assertThat(graph.getNodeAt("/"), is(notNullValue())); assertThat(graph.getNodeAt("/mode:sources"), is(notNullValue())); assertThat( graph.getNodeAt("/mode:sources/Source2"), hasProperty(ModeShapeLexicon.DESCRIPTION, "description")); assertThat( graph.getNodeAt("/mode:repositories/JCR Repository"), hasProperty(ModeShapeLexicon.SOURCE_NAME, "Source2")); assertThat( graph.getNodeAt("/mode:repositories/JCR Repository/mode:authenticationProviders"), is(notNullValue())); // Get the repository ... JcrRepository repository = engine.getRepository("JCR Repository"); assertThat(repository, is(notNullValue())); }
@Test public void shouldAllowSettingUpConfigurationRepositoryWithDifferentConfigurationSourceName() throws Exception { configuration .repositorySource("Source2") .usingClass(InMemoryRepositorySource.class.getName()) .loadedFromClasspath() .setDescription("description") .and() .repository("JCR Repository") .setSource("Source2") .setOption(Option.JAAS_LOGIN_CONFIG_NAME, "test") .and() .save(); // Start the engine ... engine = configuration.build(); engine.start(); // Get a graph to the configuration source ... RepositorySource configReposSource = engine .getRepositoryService() .getRepositoryLibrary() .getSource(JcrConfiguration.DEFAULT_CONFIGURATION_SOURCE_NAME); assertThat(configReposSource, is(notNullValue())); assertThat(configReposSource, is(instanceOf(InMemoryRepositorySource.class))); assertThat(configReposSource.getName(), is(JcrConfiguration.DEFAULT_CONFIGURATION_SOURCE_NAME)); InMemoryRepositorySource configSource = (InMemoryRepositorySource) configReposSource; assertThat(configSource.getDefaultWorkspaceName(), is(JcrConfiguration.DEFAULT_WORKSPACE_NAME)); Graph graph = engine.getGraph(JcrConfiguration.DEFAULT_CONFIGURATION_SOURCE_NAME); assertThat(graph, is(notNullValue())); assertThat(graph.getNodeAt("/"), is(notNullValue())); assertThat(graph.getNodeAt("/mode:sources"), is(notNullValue())); assertThat( graph.getNodeAt("/mode:sources/Source2"), hasProperty(ModeShapeLexicon.DESCRIPTION, "description")); assertThat( graph.getNodeAt("/mode:repositories/JCR Repository"), hasProperty(ModeShapeLexicon.SOURCE_NAME, "Source2")); // Get the repository ... JcrRepository repository = engine.getRepository("JCR Repository"); assertThat(repository, is(notNullValue())); }
@Test public void shouldReturnTrueFromIsSameIfTheNodeUuidAndWorkspaceNameAndRepositoryInstanceAreSame() throws Exception { // Set up the store ... InMemoryRepositorySource source2 = new InMemoryRepositorySource(); source2.setName("store"); Graph store2 = Graph.create(source2, context); store2 .importXmlFrom(AbstractJcrTest.class.getClassLoader().getResourceAsStream("cars.xml")) .into("/"); JcrSession jcrSession2 = mock(JcrSession.class); when(jcrSession2.nodeTypeManager()).thenReturn(nodeTypes); when(jcrSession2.isLive()).thenReturn(true); SessionCache cache2 = new SessionCache(jcrSession2, store2.getCurrentWorkspaceName(), context, nodeTypes, store2); Workspace workspace2 = mock(Workspace.class); when(jcrSession2.getWorkspace()).thenReturn(workspace2); when(jcrSession2.getRepository()).thenReturn(repository); when(workspace2.getName()).thenReturn("workspace1"); WorkspaceLockManager lockManager = new WorkspaceLockManager(context, repoLockManager, "workspace2", null); JcrLockManager jcrLockManager = new JcrLockManager(jcrSession2, lockManager); when(jcrSession2.lockManager()).thenReturn(jcrLockManager); // Use the same id and location ... javax.jcr.Node prius2 = cache2.findJcrNode(null, path("/Cars/Hybrid/Toyota Prius")); prius2.addMixin("mix:referenceable"); prius.addMixin("mix:referenceable"); String priusUuid = prius.getIdentifier(); String priusUuid2 = prius2.getIdentifier(); assertThat(priusUuid, is(priusUuid2)); assertThat(prius2.isSame(prius), is(true)); // Check the properties ... javax.jcr.Property model = prius.getProperty("vehix:model"); javax.jcr.Property model2 = prius2.getProperty("vehix:model"); javax.jcr.Property year2 = prius2.getProperty("vehix:year"); assertThat(model.isSame(model2), is(true)); assertThat(model.isSame(year2), is(false)); }
@Test public void shouldReturnFalseFromIsSameIfTheNodeUuidIsDifferent() throws Exception { // Set up the store ... InMemoryRepositorySource source2 = new InMemoryRepositorySource(); source2.setName("store"); Graph store2 = Graph.create(source2, context); store2 .importXmlFrom(AbstractJcrTest.class.getClassLoader().getResourceAsStream("cars.xml")) .into("/"); JcrSession jcrSession2 = mock(JcrSession.class); when(jcrSession2.nodeTypeManager()).thenReturn(nodeTypes); when(jcrSession2.isLive()).thenReturn(true); SessionCache cache2 = new SessionCache(jcrSession2, store2.getCurrentWorkspaceName(), context, nodeTypes, store2); Workspace workspace2 = mock(Workspace.class); JcrRepository repository2 = mock(JcrRepository.class); RepositoryLockManager repoLockManager2 = mock(RepositoryLockManager.class); when(jcrSession2.getWorkspace()).thenReturn(workspace2); when(jcrSession2.getRepository()).thenReturn(repository2); when(workspace2.getName()).thenReturn("workspace1"); WorkspaceLockManager lockManager = new WorkspaceLockManager(context, repoLockManager2, "workspace2", null); JcrLockManager jcrLockManager = new JcrLockManager(jcrSession2, lockManager); when(jcrSession2.lockManager()).thenReturn(jcrLockManager); // Use the same id and location; use 'Nissan Altima' // since the UUIDs will be different (cars.xml doesn't define on this node) ... javax.jcr.Node altima2 = cache2.findJcrNode(null, path("/Cars/Hybrid/Nissan Altima")); altima2.addMixin("mix:referenceable"); altima.addMixin("mix:referenceable"); String altimaUuid = altima.getIdentifier(); String altimaUuid2 = altima2.getIdentifier(); assertThat(altimaUuid, is(not(altimaUuid2))); assertThat(altima2.isSame(altima), is(false)); // Check the properties ... javax.jcr.Property model = altima.getProperty("vehix:model"); javax.jcr.Property model2 = altima2.getProperty("vehix:model"); assertThat(model.isSame(model2), is(false)); }