blob: 05256bcdae9d109bfea3adf3d2e424999f319e07 [file] [log] [blame]
/*
* 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.testing.mock.jcr;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
import org.junit.Test;
public class ResourceUtilTest {
@Test
public void testResolveRelativeSegments() {
assertEquals("/", ResourceUtil.normalize("/"));
assertEquals("/", ResourceUtil.normalize("///"));
assertEquals("/a/b/c", ResourceUtil.normalize("/a//b/c"));
assertEquals("/a/b/c", ResourceUtil.normalize("/a/b//c"));
assertEquals("/a/b/c", ResourceUtil.normalize("/a///b///c"));
assertEquals("/a/b/c", ResourceUtil.normalize("/a/b/c/"));
assertEquals("/a/b/c", ResourceUtil.normalize("/a/b/c//"));
assertEquals("/a/b/c", ResourceUtil.normalize("/a/b/c///"));
assertEquals("/az/bz/cz", ResourceUtil.normalize("/az//bz/cz"));
assertEquals("/az/bz/cz", ResourceUtil.normalize("/az/bz//cz"));
assertEquals("/az/bz/cz", ResourceUtil.normalize("/az///bz///cz"));
assertEquals("/az/bz/cz", ResourceUtil.normalize("/az/bz/cz/"));
assertEquals("/az/bz/cz", ResourceUtil.normalize("/az/bz/cz//"));
assertEquals("/az/bz/cz", ResourceUtil.normalize("/az/bz/cz///"));
assertEquals("/a", ResourceUtil.normalize("/a"));
assertEquals("/a", ResourceUtil.normalize("//a"));
assertEquals("/a", ResourceUtil.normalize("///a"));
assertEquals("/az", ResourceUtil.normalize("/az"));
assertEquals("/az", ResourceUtil.normalize("//az"));
assertEquals("/az", ResourceUtil.normalize("///az"));
assertEquals("/", ResourceUtil.normalize("/."));
assertEquals("/a", ResourceUtil.normalize("/a/."));
assertEquals("/a", ResourceUtil.normalize("/./a"));
assertEquals("/a/b", ResourceUtil.normalize("/a/./b"));
assertEquals("/a/b", ResourceUtil.normalize("/a/b/."));
assertEquals("/a/b", ResourceUtil.normalize("/a/./b/."));
assertEquals("/", ResourceUtil.normalize("/."));
assertEquals("/az", ResourceUtil.normalize("/az/."));
assertEquals("/az", ResourceUtil.normalize("/./az"));
assertEquals("/az/bz", ResourceUtil.normalize("/az/./bz"));
assertEquals("/az/bz", ResourceUtil.normalize("/az/bz/."));
assertEquals("/az/bz", ResourceUtil.normalize("/az/./bz/."));
assertNull(ResourceUtil.normalize("/.."));
assertNull(ResourceUtil.normalize("/.."));
assertEquals("/", ResourceUtil.normalize("/a/.."));
assertEquals("/a", ResourceUtil.normalize("/a/b/.."));
assertEquals("/", ResourceUtil.normalize("/a/b/../.."));
assertNull(ResourceUtil.normalize("/a/b/../../.."));
assertNull(ResourceUtil.normalize("/.."));
assertNull(ResourceUtil.normalize("/.."));
assertEquals("/", ResourceUtil.normalize("/az/.."));
assertEquals("/az", ResourceUtil.normalize("/az/bz/.."));
assertEquals("/", ResourceUtil.normalize("/az/bz/../.."));
assertNull(ResourceUtil.normalize("/az/bz/../../.."));
assertEquals("/b", ResourceUtil.normalize("/a/../b"));
assertEquals("/a/c", ResourceUtil.normalize("/a/b/../c"));
assertEquals("/c", ResourceUtil.normalize("/a/b/../../c"));
assertNull(ResourceUtil.normalize("/a/b/../../../c"));
assertEquals("/bz", ResourceUtil.normalize("/az/../bz"));
assertEquals("/az/cz", ResourceUtil.normalize("/az/bz/../cz"));
assertEquals("/cz", ResourceUtil.normalize("/az/bz/../../cz"));
assertNull(ResourceUtil.normalize("/az/bz/../../../cz"));
assertEquals("/...", ResourceUtil.normalize("/..."));
assertEquals("/a/...", ResourceUtil.normalize("/a/..."));
assertEquals("/a/b/...", ResourceUtil.normalize("/a/b/..."));
assertEquals("/az/...", ResourceUtil.normalize("/az/..."));
assertEquals("/az/bz/...", ResourceUtil.normalize("/az/bz/..."));
try {
ResourceUtil.normalize(null);
fail("Resolving null expects NullPointerException");
} catch (NullPointerException npe) {
// expected
}
}
@Test
public void testResolveRelativeSegmentsRelative() {
assertEquals("a/b", ResourceUtil.normalize("a/b"));
assertEquals("a", ResourceUtil.normalize("a/b/.."));
assertEquals("b", ResourceUtil.normalize("a/../b"));
assertEquals("a/c", ResourceUtil.normalize("a/b/../c"));
assertEquals("c", ResourceUtil.normalize("a/b/../../c"));
assertEquals("", ResourceUtil.normalize("a/b/../.."));
assertEquals("a/c/d", ResourceUtil.normalize("a/b/../c/d"));
assertNull(ResourceUtil.normalize("a/b/../../../c"));
assertEquals("a/b/c", ResourceUtil.normalize("a/b/c"));
assertEquals("az/bz/cz", ResourceUtil.normalize("az/bz/cz"));
assertEquals("", ResourceUtil.normalize(""));
}
@Test
public void testGetParent() {
assertNull(ResourceUtil.getParent("/"));
assertNull(ResourceUtil.getParent("/.."));
assertEquals("/", ResourceUtil.getParent("/b"));
assertEquals("b/c", ResourceUtil.getParent("b/c/d"));
assertEquals("/b/c", ResourceUtil.getParent("/b/c/d"));
assertNull(ResourceUtil.getParent("b"));
assertNull(ResourceUtil.getParent("/b/.."));
assertEquals("security:/", ResourceUtil.getParent("security:/b"));
assertEquals("security:/b", ResourceUtil.getParent("security:/b/c"));
assertEquals("security:/b/c", ResourceUtil.getParent("security:/b/c/d"));
}
@Test
public void testGetName() {
assertEquals("", ResourceUtil.getName("/"));
assertEquals("", ResourceUtil.getName("/a/.."));
assertEquals("c", ResourceUtil.getName("c"));
assertEquals("c", ResourceUtil.getName("/c"));
assertEquals("c", ResourceUtil.getName("b/c"));
assertEquals("c", ResourceUtil.getName("/b/c"));
assertEquals("c", ResourceUtil.getName("b/c/"));
assertEquals("c", ResourceUtil.getName("/b/c/"));
assertEquals("b", ResourceUtil.getName("b/c/.."));
assertEquals("b", ResourceUtil.getName("/b/c/.."));
assertEquals("", ResourceUtil.getName("/b/c/../.."));
}
@Test
public void testGetParentLevel() throws Exception {
boolean caughtNullPointerException = false;
try {
ResourceUtil.getParent(null, 4);
} catch (NullPointerException e) {
// Expected exception
caughtNullPointerException = true;
} catch (Exception e) {
fail("Expected NullPointerException, but caught " + e.getClass().getName() + " instead.");
}
if (!caughtNullPointerException) {
fail("Expected NullPointerException, but no exception was thrown.");
}
boolean caughtIllegalArgumentException = false;
try {
ResourceUtil.getParent("/a/b", -2);
} catch (IllegalArgumentException e) {
// Expected exception
caughtIllegalArgumentException = true;
} catch (Exception e) {
fail("Expected IllegalArgumentException, but caught " + e.getClass().getName() + " instead.");
}
if (!caughtIllegalArgumentException) {
fail("Expected IllegalArgumentException, but no exception was thrown.");
}
assertNull(ResourceUtil.getParent("/a", 4));
assertNull(ResourceUtil.getParent("/", 1));
assertNull(ResourceUtil.getParent("b/c", 2));
assertNull(ResourceUtil.getParent("/b/..", 1));
assertNull(ResourceUtil.getParent("b", 1));
assertNull(ResourceUtil.getParent("", 3));
assertNull(ResourceUtil.getParent("/..", 1));
assertNull(ResourceUtil.getParent("security:/b", 2));
assertNull(ResourceUtil.getParent("/b///", 2));
assertEquals("", ResourceUtil.getParent("", 0));
assertEquals("b", ResourceUtil.getParent("b", 0));
assertEquals("/", ResourceUtil.getParent("/", 0));
assertEquals("/a/b", ResourceUtil.getParent("/a/b", 0));
assertEquals("security:/b", ResourceUtil.getParent("security:/b", 0));
assertEquals("/", ResourceUtil.getParent("/b", 1));
assertEquals("b", ResourceUtil.getParent("b/c", 1));
assertEquals("b/c", ResourceUtil.getParent("b/c/d", 1));
assertEquals("/b/c", ResourceUtil.getParent("/b/c/d", 1));
assertEquals("security:/", ResourceUtil.getParent("security:/b", 1));
assertEquals("security:/b", ResourceUtil.getParent("security:/b/c", 1));
assertEquals("security:/b/c", ResourceUtil.getParent("security:/b/c/d", 1));
assertEquals("b", ResourceUtil.getParent("b/c/d", 2));
assertEquals("b/c", ResourceUtil.getParent("b/c/d/e", 2));
assertEquals("/", ResourceUtil.getParent("/b/c/d", 3));
assertEquals("/", ResourceUtil.getParent("/b///", 1));
}
}