ONOS-887 - Return a 404 status when a URL specifies a bad resource
Change-Id: I145ae65076d54ec50f7627a50307c975df8f2c0a
Showing
5 changed files
with
77 additions
and
2 deletions
| 1 | +/* | ||
| 2 | + * Copyright 2015 Open Networking Laboratory | ||
| 3 | + * | ||
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + * you may not use this file except in compliance with the License. | ||
| 6 | + * You may obtain a copy of the License at | ||
| 7 | + * | ||
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + * | ||
| 10 | + * Unless required by applicable law or agreed to in writing, software | ||
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + * See the License for the specific language governing permissions and | ||
| 14 | + * limitations under the License. | ||
| 15 | + */ | ||
| 16 | +package org.onosproject.rest.exceptions; | ||
| 17 | + | ||
| 18 | +import javax.ws.rs.core.Response; | ||
| 19 | + | ||
| 20 | +import com.sun.jersey.api.NotFoundException; | ||
| 21 | + | ||
| 22 | +/** | ||
| 23 | + * Mapper for api not found exceptions to the NOT_FOUND response code. | ||
| 24 | + */ | ||
| 25 | +public class NotFoundMapper extends AbstractMapper<NotFoundException> { | ||
| 26 | + | ||
| 27 | + @Override | ||
| 28 | + protected Response.Status responseStatus() { | ||
| 29 | + return Response.Status.NOT_FOUND; | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | +} |
| ... | @@ -18,7 +18,7 @@ package org.onosproject.rest.exceptions; | ... | @@ -18,7 +18,7 @@ package org.onosproject.rest.exceptions; |
| 18 | import javax.ws.rs.core.Response; | 18 | import javax.ws.rs.core.Response; |
| 19 | 19 | ||
| 20 | /** | 20 | /** |
| 21 | - * Mapper for service not found exceptions to the NOT_FOUND response code. | 21 | + * Mapper for service not found exceptions to the INTERNAL_SERVER_ERROR response code. |
| 22 | */ | 22 | */ |
| 23 | public class ServerErrorMapper extends AbstractMapper<RuntimeException> { | 23 | public class ServerErrorMapper extends AbstractMapper<RuntimeException> { |
| 24 | @Override | 24 | @Override | ... | ... |
| ... | @@ -32,6 +32,7 @@ | ... | @@ -32,6 +32,7 @@ |
| 32 | <param-value> | 32 | <param-value> |
| 33 | org.onosproject.rest.exceptions.EntityNotFoundMapper, | 33 | org.onosproject.rest.exceptions.EntityNotFoundMapper, |
| 34 | org.onosproject.rest.exceptions.ServiceNotFoundMapper, | 34 | org.onosproject.rest.exceptions.ServiceNotFoundMapper, |
| 35 | + org.onosproject.rest.exceptions.NotFoundMapper, | ||
| 35 | org.onosproject.rest.exceptions.ServerErrorMapper, | 36 | org.onosproject.rest.exceptions.ServerErrorMapper, |
| 36 | org.onosproject.rest.JsonBodyWriter, | 37 | org.onosproject.rest.JsonBodyWriter, |
| 37 | 38 | ... | ... |
| 1 | +/* | ||
| 2 | + * Copyright 2015 Open Networking Laboratory | ||
| 3 | + * | ||
| 4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 5 | + * you may not use this file except in compliance with the License. | ||
| 6 | + * You may obtain a copy of the License at | ||
| 7 | + * | ||
| 8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
| 9 | + * | ||
| 10 | + * Unless required by applicable law or agreed to in writing, software | ||
| 11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
| 12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 13 | + * See the License for the specific language governing permissions and | ||
| 14 | + * limitations under the License. | ||
| 15 | + */ | ||
| 16 | +package org.onosproject.rest; | ||
| 17 | + | ||
| 18 | +import org.junit.Test; | ||
| 19 | + | ||
| 20 | +import com.sun.jersey.api.client.UniformInterfaceException; | ||
| 21 | +import com.sun.jersey.api.client.WebResource; | ||
| 22 | + | ||
| 23 | +import static org.hamcrest.Matchers.containsString; | ||
| 24 | +import static org.junit.Assert.assertThat; | ||
| 25 | +import static org.junit.Assert.fail; | ||
| 26 | + | ||
| 27 | +/** | ||
| 28 | + * Unit tests for bad REST requests. | ||
| 29 | + */ | ||
| 30 | +public class BadRequestTest extends ResourceTest { | ||
| 31 | + @Test | ||
| 32 | + public void badUrl() { | ||
| 33 | + WebResource rs = resource(); | ||
| 34 | + try { | ||
| 35 | + rs.path("ThisIsABadURL").get(String.class); | ||
| 36 | + fail("Fetch of non-existent URL did not throw an exception"); | ||
| 37 | + } catch (UniformInterfaceException ex) { | ||
| 38 | + assertThat(ex.getMessage(), | ||
| 39 | + containsString("returned a response status of 404 Not Found")); | ||
| 40 | + } | ||
| 41 | + } | ||
| 42 | +} |
| ... | @@ -122,7 +122,7 @@ | ... | @@ -122,7 +122,7 @@ |
| 122 | org.slf4j, | 122 | org.slf4j, |
| 123 | org.osgi.framework, | 123 | org.osgi.framework, |
| 124 | javax.ws.rs,javax.ws.rs.core,javax.ws.rs.ext, | 124 | javax.ws.rs,javax.ws.rs.core,javax.ws.rs.ext, |
| 125 | - com.sun.jersey.api.core, | 125 | + com.sun.jersey.api, |
| 126 | com.sun.jersey.spi.container.servlet, | 126 | com.sun.jersey.spi.container.servlet, |
| 127 | com.sun.jersey.server.impl.container.servlet, | 127 | com.sun.jersey.server.impl.container.servlet, |
| 128 | com.fasterxml.jackson.databind, | 128 | com.fasterxml.jackson.databind, | ... | ... |
-
Please register or login to post a comment