/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with this
* work for additional information regarding copyright ownership. The ASF
* licenses this file to You 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.apache.sling.launchpad.webapp.integrationtest;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.jcr.Credentials;
import javax.jcr.GuestCredentials;
import javax.jcr.Node;
import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.jackrabbit.commons.JcrUtils;
import org.apache.sling.commons.testing.integration.HttpTestBase;
/**
* Test of Davex
*/
public class DavExIntegrationTest extends HttpTestBase {
private Repository repository;
public static final String DAVEX_SERVER_URL = HTTP_BASE_URL + "/server/";
@Override
protected void setUp() throws Exception {
super.setUp();
configureServerBeforeTest();
repository = JcrUtils.getRepository(DAVEX_SERVER_URL);
}
protected void configureServerBeforeTest() throws Exception {
}
public void testDescriptor() throws Exception {
assertEquals("2.0", repository.getDescriptor(Repository.SPEC_VERSION_DESC));
assertTrue(repository.getDescriptor(Repository.REP_NAME_DESC).contains("Jackrabbit"));
}
/** Create a node via Sling's http interface and verify that admin can
* read it via davex remote access.
*/
public void testReadNode() throws Exception {
final String path = "/DavExNodeTest_1_" + System.currentTimeMillis();
final String url = HTTP_BASE_URL + path;
// add some properties to the node
final Map<String, String> props = new HashMap<String, String>();
props.put("name1", "value1");
props.put("name2", "value2");
testClient.createNode(url, props);
// Oak does not support login without credentials, so to
// verify that davex access works we do need valid repository credentials.
final Credentials creds = new SimpleCredentials("admin", "admin".toCharArray());
Session session = repository.login(creds);
try {
final Node node = session.getNode(path);
assertNotNull(node);
assertEquals("value1", node.getProperty("name1").getString());
assertEquals("value2", node.getProperty("name2").getString());
} finally {
session.logout();
}
}
@Override
protected void tearDown() throws Exception {
repository = null;
configureServerAfterTest();
super.tearDown();
}
protected void configureServerAfterTest() throws Exception {
}
}