Skip to content

Commit

Permalink
WW-5233 Copies Tiles Request related tests
Browse files Browse the repository at this point in the history
  • Loading branch information
lukaszlenart committed Oct 2, 2022
1 parent ffe5562 commit df5cf36
Show file tree
Hide file tree
Showing 34 changed files with 4,803 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,22 +98,28 @@ static Set<String> initRemoteProtocols() {
return Collections.unmodifiableSet(remoteProtocols);
}

private static boolean isLocal(URL url) {
private boolean isLocal(URL url) {
return !REMOTE_PROTOCOLS.contains(url.getProtocol());
}

/** the URL where the contents can be found. */
/**
* the URL where the contents can be found.
*/
private final URL url;
/** if the URL matches a file, this is the file. */
/**
* if the URL matches a file, this is the file.
*/
private File file;
/** if the URL points to a local resource */
/**
* if the URL points to a local resource
*/
private final boolean local;

/**
* Creates a URLApplicationResource for the specified path that can be accessed through the specified URL.
*
* @param localePath the path including localization.
* @param url the URL where the contents can be found.
* @param url the URL where the contents can be found.
*/
public URLApplicationResource(String localePath, URL url) {
super(localePath);
Expand All @@ -127,9 +133,9 @@ public URLApplicationResource(String localePath, URL url) {
/**
* Creates a URLApplicationResource for the specified path that can be accessed through the specified URL.
*
* @param path the path excluding localization.
* @param path the path excluding localization.
* @param locale the Locale.
* @param url the URL where the contents can be found.
* @param url the URL where the contents can be found.
*/
public URLApplicationResource(String path, Locale locale, URL url) {
super(path, locale);
Expand All @@ -156,7 +162,7 @@ private URLConnection openConnection() throws IOException {
}
}

private static File getFile(URL url) {
private File getFile(URL url) {
try {
return new File(new URI(url.toExternalForm()).getSchemeSpecificPart());
} catch (URISyntaxException e) {
Expand All @@ -165,17 +171,25 @@ private static File getFile(URL url) {
}
}

/** {@inheritDoc} */
/**
* {@inheritDoc}
*/
@Override
public InputStream getInputStream() throws IOException {
if (file != null) {
return Files.newInputStream(file.toPath());
if (file.exists()) {
return Files.newInputStream(file.toPath());
} else {
throw new FileNotFoundException("File does not exist: " + file);
}
} else {
return openConnection().getInputStream();
}
}

/** {@inheritDoc} */
/**
* {@inheritDoc}
*/
@Override
public long getLastModified() throws IOException {
if (file != null) {
Expand All @@ -190,7 +204,9 @@ public long getLastModified() throws IOException {
}
}

/** {@inheritDoc} */
/**
* {@inheritDoc}
*/
@Override
public String toString() {
return "Resource " + getLocalePath() + " at " + url.toString();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
/*
* 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.tiles.request;

import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.createMockBuilder;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

/**
* Tests {@link AbstractClientRequest}.
*/
public class AbstractClientRequestTest {

/**
* The request to test.
*/
private AbstractClientRequest request;

/**
* The application context.
*/
private ApplicationContext applicationContext;

/**
* The application scope.
*/
private Map<String, Object> applicationScope;

/**
* Sets up the test.
*/
@Before
public void setUp() {
applicationContext = createMock(ApplicationContext.class);
applicationScope = new HashMap<>();
request = createMockBuilder(AbstractClientRequest.class).withConstructor(applicationContext).createMock();

expect(applicationContext.getApplicationScope()).andReturn(applicationScope).anyTimes();
}

/**
* Test method for {@link AbstractClientRequest#dispatch(String)}.
*
* @throws IOException If something goes wrong.
*/
@Test
public void testDispatch() throws IOException {
Map<String, Object> requestScope = new HashMap<>();

expect(request.getContext(Request.REQUEST_SCOPE)).andReturn(requestScope).anyTimes();
request.doForward("/my/path.html");
request.doInclude("/my/path2.html");

replay(request, applicationContext);
request.dispatch("/my/path.html");
request.dispatch("/my/path2.html");
verify(request, applicationContext);
}

/**
* Test method for {@link AbstractClientRequest#include(String)}.
*
* @throws IOException If something goes wrong.
*/
@Test
public void testInclude() throws IOException {
Map<String, Object> requestScope = new HashMap<>();

expect(request.getContext(Request.REQUEST_SCOPE)).andReturn(requestScope).anyTimes();
request.doInclude("/my/path2.html");

replay(request, applicationContext);
request.include("/my/path2.html");
assertTrue((Boolean) request.getContext(Request.REQUEST_SCOPE).get(AbstractRequest.FORCE_INCLUDE_ATTRIBUTE_NAME));
verify(request, applicationContext);
}

/**
* Test method for {@link AbstractClientRequest#getApplicationContext()}.
*/
@Test
public void testGetApplicationContext() {
replay(request, applicationContext);
assertEquals(applicationContext, request.getApplicationContext());
verify(request, applicationContext);
}

/**
* Test method for {@link AbstractClientRequest#getContext(String)}.
*/
@Test
public void testGetContext() {
Map<String, Object> scope = createMock(Map.class);

expect(request.getContext("myScope")).andReturn(scope);

replay(request, applicationContext, scope);
assertEquals(scope, request.getContext("myScope"));
verify(request, applicationContext, scope);
}

/**
* Test method for {@link AbstractClientRequest#getAvailableScopes()}.
*/
@Test
public void testGetAvailableScopes() {
String[] scopes = new String[]{"one", "two", "three"};

expect(request.getAvailableScopes()).andReturn(Arrays.asList(scopes));

replay(request, applicationContext);
assertArrayEquals(scopes, request.getAvailableScopes().toArray());
verify(request, applicationContext);
}

/**
* Test method for {@link AbstractClientRequest#getApplicationScope()}.
*/
@Test
public void testGetApplicationScope() {
replay(request, applicationContext);
assertEquals(applicationScope, request.getApplicationScope());
verify(request, applicationContext);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* 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.tiles.request;

import org.junit.Test;

import java.util.HashMap;
import java.util.Map;

import static org.easymock.EasyMock.createMockBuilder;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

/**
* Tests {@link AbstractRequest}.
*/
public class AbstractRequestTest {

/**
* Test method for {@link AbstractRequest#setForceInclude(boolean)}.
*/
@Test
public void testSetForceInclude() {
AbstractRequest request = createMockBuilder(AbstractRequest.class).createMock();
Map<String, Object> scope = new HashMap<>();

expect(request.getContext(Request.REQUEST_SCOPE)).andReturn(scope).anyTimes();

replay(request);
assertFalse(request.isForceInclude());
request.setForceInclude(true);
assertTrue(request.isForceInclude());
verify(request);
}
}
Loading

0 comments on commit df5cf36

Please sign in to comment.