From acead8670ab7c00222cc21b21c569438dc2f94c2 Mon Sep 17 00:00:00 2001 From: Aaron Coburn Date: Thu, 20 Sep 2018 10:05:39 -0400 Subject: [PATCH] Catch JSON-LD parsing errors --- .../main/java/org/trellisldp/io/JenaIOService.java | 2 +- .../org/trellisldp/http/AbstractLdpResourceTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/components/io-jena/src/main/java/org/trellisldp/io/JenaIOService.java b/components/io-jena/src/main/java/org/trellisldp/io/JenaIOService.java index df0589870..687211faf 100644 --- a/components/io-jena/src/main/java/org/trellisldp/io/JenaIOService.java +++ b/components/io-jena/src/main/java/org/trellisldp/io/JenaIOService.java @@ -340,7 +340,7 @@ public Stream read(final InputStream input, final RDFSyntax sy }); } return rdf.asGraph(graph).stream(); - } catch (final RiotException | AtlasException ex) { + } catch (final RiotException | AtlasException | IllegalArgumentException ex) { throw new RuntimeTrellisException(ex); } } diff --git a/core/http/src/test/java/org/trellisldp/http/AbstractLdpResourceTest.java b/core/http/src/test/java/org/trellisldp/http/AbstractLdpResourceTest.java index e9898141d..d65fd4c2b 100644 --- a/core/http/src/test/java/org/trellisldp/http/AbstractLdpResourceTest.java +++ b/core/http/src/test/java/org/trellisldp/http/AbstractLdpResourceTest.java @@ -1235,6 +1235,18 @@ public void testPostDirectContainerResource() { verify(myEventService, times(3)).emit(any()); } + @Test + public void testPostBadJsonLd() { + when(mockResource.getInteractionModel()).thenReturn(LDP.Container); + when(mockResourceService.get(eq(rdf.createIRI(TRELLIS_DATA_PREFIX + RESOURCE_PATH + "/" + RANDOM_VALUE)))) + .thenAnswer(inv -> completedFuture(MISSING_RESOURCE)); + + final Response res = target(RESOURCE_PATH).request() + .post(entity("{\"@id\": \"\", \"@type\": \"some type\"}", APPLICATION_LD_JSON_TYPE)); + + assertEquals(SC_BAD_REQUEST, res.getStatus(), "Unexpected response code!"); + } + @Test public void testPostConstraint() { when(mockResource.getInteractionModel()).thenReturn(LDP.Container);