Skip to content

Commit

Permalink
Add test case for ClassPathResource
Browse files Browse the repository at this point in the history
  • Loading branch information
bchapuis committed Jun 18, 2023
1 parent 785fc2c commit d228294
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,15 @@
import javax.inject.Named;
import javax.inject.Singleton;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;

/**
* Serves static resources from the class path.
*/
@Singleton
@javax.ws.rs.Path("/")
@Path("/")
public class ClassPathResource {

private final String directory;
Expand Down Expand Up @@ -53,9 +54,9 @@ public ClassPathResource(
* @return the response
*/
@GET
@javax.ws.rs.Path("{path:.*}")
@Path("{path:.*}")
public Response get(@PathParam("path") String path) {
if (path.equals("") || path.endsWith("/")) {
if (path.isEmpty() || path.endsWith("/")) {
path += index;
}
path = String.format("%s/%s", directory, path);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
* Licensed 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.baremaps.server;

import static org.junit.Assert.assertTrue;

import org.glassfish.jersey.internal.inject.AbstractBinder;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.JerseyTest;
import org.glassfish.jersey.test.TestProperties;
import org.junit.Test;

public class ClassPathResourceIntegrationTest extends JerseyTest {

@Override
protected ResourceConfig configure() {
enable(TestProperties.LOG_TRAFFIC);
enable(TestProperties.DUMP_ENTITY);
return new ResourceConfig()
.register(ClassPathResource.class)
.register(new AbstractBinder() {
@Override
protected void configure() {
bind("assets").to(String.class).named("directory");
bind("viewer.html").to(String.class).named("index");
}
});
}

@Test
public void testAssetsDirectory() {
assertTrue(target().path("").request().get(String.class).contains("<title>Baremaps</title>"));
assertTrue(target().path("viewer.html").request().get(String.class)
.contains("<title>Baremaps</title>"));
assertTrue(target().path("server.html").request().get(String.class)
.contains("<title>Baremaps</title>"));
}
}

0 comments on commit d228294

Please sign in to comment.