/*
* 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.jackrabbit.server.remoting.davex;
import junit.framework.TestCase;
import org.xml.sax.ContentHandler;
import javax.jcr.Credentials;
import javax.jcr.Item;
import javax.jcr.Node;
import javax.jcr.Property;
import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.ValueFactory;
import javax.jcr.Workspace;
import javax.jcr.retention.RetentionManager;
import javax.jcr.security.AccessControlManager;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.AccessControlException;
import java.util.HashMap;
import java.util.Map;
/**
* <code>JsonDiffHandlerTest</code>...
*/
public class JsonDiffHandlerTest extends TestCase {
public void testGetItemPath() throws Exception {
Map<String, String> m = new HashMap<String, String>();
m.put("abc", "/reqPath/abc");
m.put("abc/def/ghi", "/reqPath/abc/def/ghi");
m.put("/abc", "/abc");
m.put("/abc/def/ghi", "/abc/def/ghi");
m.put(".", "/reqPath");
m.put("./abc", "/reqPath/abc");
m.put("abc/./def", "/reqPath/abc/def");
m.put("/abc/./def", "/abc/def");
m.put("..", "/");
m.put("../abc/def", "/abc/def");
m.put("abc/../def/.", "/reqPath/def");
m.put("abc/../def/..", "/reqPath");
m.put("abc/../def/..", "/reqPath");
m.put("abc/../def/..", "/reqPath");
m.put("abc/../def/..", "/reqPath");
m.put("abc/../def/..", "/reqPath");
m.put("abc/../def/..", "/reqPath");
m.put("./././././", "/reqPath");
m.put("/./././././", "/");
m.put("/./abc/def/../ghi", "/abc/ghi");
JsonDiffHandler handler = new JsonDiffHandler(new DummySession(), "/reqPath", null);
for (String targetPath : m.keySet()) {
String expItemPath = m.get(targetPath);
assertEquals(expItemPath, handler.getItemPath(targetPath));
}
}
private final class DummySession implements Session {
@Override
public Repository getRepository() {
return null;
}
@Override
public String getUserID() {
return null;
}
@Override
public Object getAttribute(String name) {
return null;
}
@Override
public String[] getAttributeNames() {
return new String[0];
}
@Override
public Workspace getWorkspace() {
return null;
}
@Override
public Session impersonate(Credentials credentials) {
return null;
}
@Override
public Node getRootNode() {
return null;
}
@Override
public Node getNodeByUUID(String uuid) {
return null;
}
@Override
public Item getItem(String absPath) {
return null;
}
@Override
public boolean itemExists(String absPath) {
return false;
}
@Override
public void move(String srcAbsPath, String destAbsPath) {
}
@Override
public void save() {
}
@Override
public void refresh(boolean keepChanges) {
}
@Override
public boolean hasPendingChanges() {
return false;
}
@Override
public ValueFactory getValueFactory() {
return null;
}
@Override
public void checkPermission(String absPath, String actions) throws AccessControlException {
}
@Override
public ContentHandler getImportContentHandler(String parentAbsPath, int uuidBehavior) {
return null;
}
@Override
public void importXML(String parentAbsPath, InputStream in, int uuidBehavior) {
}
@Override
public void exportSystemView(String absPath, ContentHandler contentHandler, boolean skipBinary, boolean noRecurse) {
}
@Override
public void exportSystemView(String absPath, OutputStream out, boolean skipBinary, boolean noRecurse) {
}
@Override
public void exportDocumentView(String absPath, ContentHandler contentHandler, boolean skipBinary, boolean noRecurse) {
}
@Override
public void exportDocumentView(String absPath, OutputStream out, boolean skipBinary, boolean noRecurse) {
}
@Override
public void setNamespacePrefix(String prefix, String uri) {
}
@Override
public String[] getNamespacePrefixes() {
return new String[0];
}
@Override
public String getNamespaceURI(String prefix) {
return null;
}
@Override
public String getNamespacePrefix(String uri) {
return null;
}
@Override
public void logout() {
}
@Override
public boolean isLive() {
return false;
}
@Override
public void addLockToken(String lt) {
}
@Override
public String[] getLockTokens() {
return new String[0];
}
@Override
public void removeLockToken(String lt) {
}
@Override
public AccessControlManager getAccessControlManager() {
return null;
}
@Override
public Node getNode(String arg0) {
return null;
}
@Override
public Node getNodeByIdentifier(String arg0) {
return null;
}
@Override
public Property getProperty(String arg0) {
return null;
}
@Override
public RetentionManager getRetentionManager() {
return null;
}
@Override
public boolean hasCapability(String arg0, Object arg1, Object[] arg2) {
return false;
}
@Override
public boolean hasPermission(String arg0, String arg1) {
return false;
}
@Override
public boolean nodeExists(String arg0) {
return false;
}
@Override
public boolean propertyExists(String arg0) {
return false;
}
@Override
public void removeItem(String arg0) {
}
}
}