PrefixResourceNameTest.java revision 344a0d1046c7f52b7740e3f4a30b383b3215abda
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Copyright 2014 ForgeRock AS.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * The contents of this file are subject to the terms of the Common Development and
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Distribution License (the License). You may not use this file except in compliance with the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * specific language governing permission and limitations under the License.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * When distributing Covered Software, include this CDDL Header Notice in each file and include
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Header, with the fields enclosed by brackets [] replaced by your own identifying
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * information: "Portions copyright [year] [name of copyright owner]".
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport com.sun.identity.policy.interfaces.ResourceName;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Fosterimport static org.fest.assertions.Assertions.assertThat;
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster * Exercises the behaviour of {@link PrefixResourceName}.
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void setUp() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster resourceName.initialize(new HashMap<String, String>());
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void normaliseHandlesTrailingSlashes() throws PolicyException {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.canonicalize("http://a.b.c:80///ab///cd///")).isEqualTo("http://a.b.c:80/ab/cd/");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.canonicalize("http://a.b.c:80///ab///cd")).isEqualTo("http://a.b.c:80/ab/cd");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.canonicalize("//a.b.c///ab///cd///")).isEqualTo("/a.b.c/ab/cd/");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.canonicalize("//a.b.c///ab///cd")).isEqualTo("/a.b.c/ab/cd");
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare(null, null, true)).isEqualTo(ResourceMatch.EXACT_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare(null, "abc", true)).isEqualTo(ResourceMatch.NO_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("abc", null, true)).isEqualTo(ResourceMatch.NO_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void verifyTrailingSlashMatchBehaviour() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abc/def", "/abc/def", true)).isEqualTo(ResourceMatch.EXACT_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abc/def", "/abc/def/", true)).isEqualTo(ResourceMatch.SUB_RESOURCE_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abc/def/", "/abc/def", true)).isEqualTo(ResourceMatch.SUPER_RESOURCE_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster public void verifyMultiLevelWildcardMatchBehaviour() {
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abc/", "/abc/*", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abc/def", "/abc/*", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abc/def/", "/abc/*", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abc/def/hij", "/abc/*", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abc", "/abc*", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abcdef", "/abc*", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abc/def", "/abc*", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abc/def/", "/abc*", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abc/def/hij", "/abc*", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/ac", "/a*c", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/abc", "/a*c", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/a/c", "/a*c", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
a688bcbb4bcff5398fdd29b86f83450257dc0df4Allan Foster assertThat(resourceName.compare("/ab/dc", "/a*c", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
public void verifySingleLevelWildcardMatchBehaviour() {
assertThat(resourceName.compare("/abc/", "/abc/-*-", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
assertThat(resourceName.compare("/abc/def", "/abc/-*-", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
assertThat(resourceName.compare("/abc/def/", "/abc/-*-", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
assertThat(resourceName.compare("/abc/def/hij", "/abc/-*-", true)).isEqualTo(ResourceMatch.SUPER_RESOURCE_MATCH);
assertThat(resourceName.compare("/abcdef", "/abc-*-", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
assertThat(resourceName.compare("/abc/def", "/abc-*-", true)).isEqualTo(ResourceMatch.SUPER_RESOURCE_MATCH);
assertThat(resourceName.compare("/abc/def/", "/abc-*-", true)).isEqualTo(ResourceMatch.SUPER_RESOURCE_MATCH);
assertThat(resourceName.compare("/abc/def/hij", "/abc-*-", true)).isEqualTo(ResourceMatch.SUPER_RESOURCE_MATCH);
assertThat(resourceName.compare("/abc/d", "/a-*-c", true)).isEqualTo(ResourceMatch.SUPER_RESOURCE_MATCH);
@Test
public void ignoreWildcardMatchBehaviour() {
@Test
public void verifyQueryStringMatchBehaviour() {
assertThat(resourceName.compare("/abc?def", "/abc?*", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);
assertThat(resourceName.compare("/abcdef?a=b", "/abc*?*", true)).isEqualTo(ResourceMatch.WILDCARD_MATCH);