This is an automated email from the ASF dual-hosted git repository. sseifert pushed a commit to branch feature/SLING-6994-vanitypath in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-sling-mock.git
commit 0f04f892b5a6ab8a92da61426d60ce6fc0a909b3 Author: sseifert <[email protected]> AuthorDate: Thu Jun 20 11:50:24 2019 +0200 SLING-6994 reproduce problem with vanity path in unit test --- .../sling/jcrmock/resource/VanityPathTest.java | 31 ++++++++++ .../sling/resource/AbstractVanityPathTest.java | 67 ++++++++++++++++++++++ .../mock/sling/rrmock/resource/VanityPathTest.java | 33 +++++++++++ 3 files changed, 131 insertions(+) diff --git a/core/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/VanityPathTest.java b/core/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/VanityPathTest.java new file mode 100644 index 0000000..544fa81 --- /dev/null +++ b/core/src/test/java/org/apache/sling/testing/mock/sling/jcrmock/resource/VanityPathTest.java @@ -0,0 +1,31 @@ +/* + * 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.sling.jcrmock.resource; + +import org.apache.sling.testing.mock.sling.ResourceResolverType; +import org.apache.sling.testing.mock.sling.resource.AbstractVanityPathTest; + +public class VanityPathTest extends AbstractVanityPathTest { + + @Override + protected ResourceResolverType getResourceResolverType() { + return ResourceResolverType.JCR_MOCK; + } + +} diff --git a/core/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractVanityPathTest.java b/core/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractVanityPathTest.java new file mode 100644 index 0000000..c375d5f --- /dev/null +++ b/core/src/test/java/org/apache/sling/testing/mock/sling/resource/AbstractVanityPathTest.java @@ -0,0 +1,67 @@ +/* + * 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.sling.resource; + +import static org.junit.Assert.assertEquals; + +import org.apache.sling.api.resource.Resource; +import org.apache.sling.testing.mock.sling.ResourceResolverType; +import org.apache.sling.testing.mock.sling.junit.SlingContext; +import org.apache.sling.testing.mock.sling.junit.SlingContextBuilder; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; + +import com.google.common.collect.ImmutableMap; + +/** + * Validates vanity path handling + */ +public abstract class AbstractVanityPathTest { + + @Rule + public SlingContext context = new SlingContextBuilder(getResourceResolverType()) + .resourceResolverFactoryActivatorProps(ImmutableMap.<String, Object>of( + "resource.resolver.mapping", new String[] { + "/:/", + "/content/test/</" + } + )) + .build(); + + protected abstract ResourceResolverType getResourceResolverType(); + + @Before + public void setUp() throws Exception { + context.build().resource("/content") + .resource("test") + .resource("vanity", + "sling:vanityPath", "/my-vanity"); + } + + @Test + public void testVanityPath() throws Exception { + String mappedPath = context.resourceResolver().map("/content/test/my-vanity"); + assertEquals("/my-vanity", mappedPath); + + Resource resolved = context.resourceResolver().resolve(mappedPath); + assertEquals("sling:redirect", resolved.getResourceType()); + } + +} diff --git a/core/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/VanityPathTest.java b/core/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/VanityPathTest.java new file mode 100644 index 0000000..18eff21 --- /dev/null +++ b/core/src/test/java/org/apache/sling/testing/mock/sling/rrmock/resource/VanityPathTest.java @@ -0,0 +1,33 @@ +/* + * 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.sling.rrmock.resource; + +import org.apache.sling.testing.mock.sling.ResourceResolverType; +import org.apache.sling.testing.mock.sling.resource.AbstractVanityPathTest; +import org.junit.Ignore; + +@Ignore // vanity paths will not work with resource resolver mock - not supported in the mock resource resolver +public class VanityPathTest extends AbstractVanityPathTest { + + @Override + protected ResourceResolverType getResourceResolverType() { + return ResourceResolverType.RESOURCERESOLVER_MOCK; + } + +}
