/*
* ModeShape (http://www.modeshape.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.modeshape.jdbc.rest;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.jcr.query.Query;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* Integration test which tests the behavior of {@link ModeShapeRestClient}
*
* @author Horia Chiorean (hchiorea@redhat.com)
*/
public class ModeShapeRestClientTest {
private static ModeShapeRestClient REST_CLIENT;
@BeforeClass
public static void beforeClass() {
// the values are coming from the modeshape-rest-war test webapp
REST_CLIENT = new ModeShapeRestClient("http://localhost:8090/modeshape/repo/default", "dnauser", "password");
}
@Test
public void shouldGetRepositories() throws Exception {
Repositories repositories = REST_CLIENT.getRepositories();
assertNotNull(repositories);
Collection<Repositories.Repository> repositoryList = repositories.getRepositories();
assertEquals(1, repositoryList.size());
Repositories.Repository repository = repositories.iterator().next();
assertEquals("repo", repository.getName());
Map<String, Object> metadata = repository.getMetadata();
assertNotNull(metadata);
assertFalse(metadata.isEmpty());
}
@Test
public void shouldGetRepositoryByName() throws Exception {
assertNull(REST_CLIENT.getRepository("foobar"));
Repositories.Repository repository = REST_CLIENT.getRepository("repo");
assertNotNull(repository);
}
@Test
public void shouldGetWorkspacesForRepository() throws Exception {
Workspaces workspaces = REST_CLIENT.getWorkspaces("repo");
assertNotNull(workspaces);
List<String> wsList = workspaces.getWorkspaces();
assertEquals(1, wsList.size());
assertEquals("default", wsList.get(0));
}
@Test
public void shouldGetNodeTypesForRepository() throws Exception {
NodeTypes nodeTypes = REST_CLIENT.getNodeTypes();
assertFalse(nodeTypes.isEmpty());
assertNotNull(nodeTypes.getNodeType("nt:base"));
assertNotNull(nodeTypes.getNodeType("nt:unstructured"));
assertNull(nodeTypes.getNodeType("foobar"));
}
@SuppressWarnings( "deprecation" )
@Test
public void shouldQueryRepository() throws Exception {
QueryResult queryResult = REST_CLIENT.query("SELECT node.[jcr:path] FROM [mode:root] AS node", Query.JCR_SQL2);
assertQueryResult(queryResult);
queryResult = REST_CLIENT.query("SELECT jcr:path FROM mode:root", Query.SQL);
assertQueryResult(queryResult);
queryResult = REST_CLIENT.query("//element(*, mode:root)", Query.XPATH);
assertQueryResult(queryResult);
}
private void assertQueryResult( QueryResult queryResult ) {
Map<String, String> columns = queryResult.getColumns();
String pathColumn = columns.get("jcr:path");
assertNotNull(pathColumn);
assertEquals("string", pathColumn.toLowerCase());
List<QueryResult.Row> rows = queryResult.getRows();
assertEquals(1, rows.size());
QueryResult.Row result = rows.get(0);
assertEquals("/", result.getValue("jcr:path"));
}
@Test
public void shouldGetQueryPlan() throws Exception {
assertNotNull(REST_CLIENT.queryPlan("SELECT node.[jcr:path] FROM [mode:root] AS node", Query.JCR_SQL2));
}
}