X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2Ftest%2FMediaTypesTest.java;h=a00b0d1fc6830aa9b5c2fba93af22c4867b0f57d;hp=319603dfc14b1f6a4965d6de46e99bf1a6199f8f;hb=874a18a9ce5dc09bc49922754bf8fb3e981fffb9;hpb=8ad0b28e56c6d0a1ce5cef45fae22d6fdea7f976 diff --git a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/MediaTypesTest.java b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/MediaTypesTest.java index 319603dfc1..a00b0d1fc6 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/MediaTypesTest.java +++ b/opendaylight/md-sal/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/MediaTypesTest.java @@ -15,27 +15,26 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.opendaylight.controller.sal.restconf.impl.test.RestOperationUtils.JSON; import static org.opendaylight.controller.sal.restconf.impl.test.RestOperationUtils.XML; - import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; - import javax.ws.rs.client.Entity; import javax.ws.rs.core.Application; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.UriInfo; - import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.test.JerseyTest; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; import org.opendaylight.controller.sal.rest.api.Draft02; import org.opendaylight.controller.sal.rest.api.RestconfService; -import org.opendaylight.controller.sal.rest.impl.JsonToCompositeNodeProvider; -import org.opendaylight.controller.sal.rest.impl.StructuredDataToJsonProvider; -import org.opendaylight.controller.sal.rest.impl.StructuredDataToXmlProvider; -import org.opendaylight.controller.sal.rest.impl.XmlToCompositeNodeProvider; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; +import org.opendaylight.controller.sal.rest.impl.JsonNormalizedNodeBodyReader; +import org.opendaylight.controller.sal.rest.impl.NormalizedNodeJsonBodyWriter; +import org.opendaylight.controller.sal.rest.impl.NormalizedNodeXmlBodyWriter; +import org.opendaylight.controller.sal.rest.impl.RestconfDocumentedExceptionMapper; +import org.opendaylight.controller.sal.rest.impl.XmlNormalizedNodeBodyReader; +import org.opendaylight.controller.sal.restconf.impl.NormalizedNodeContext; public class MediaTypesTest extends JerseyTest { @@ -46,61 +45,62 @@ public class MediaTypesTest extends JerseyTest { @BeforeClass public static void init() throws IOException { restconfService = mock(RestconfService.class); - String jsonPath = RestconfImplTest.class.getResource("/parts/ietf-interfaces_interfaces.json").getPath(); + final String jsonPath = RestconfImplTest.class.getResource("/parts/ietf-interfaces_interfaces.json").getPath(); jsonData = TestUtils.loadTextFile(jsonPath); - InputStream xmlStream = RestconfImplTest.class.getResourceAsStream("/parts/ietf-interfaces_interfaces.xml"); + final InputStream xmlStream = RestconfImplTest.class.getResourceAsStream("/parts/ietf-interfaces_interfaces.xml"); xmlData = TestUtils.getDocumentInPrintableForm(TestUtils.loadDocumentFrom(xmlStream)); } @Override protected Application configure() { /* enable/disable Jersey logs to console */ -// enable(TestProperties.LOG_TRAFFIC); -// enable(TestProperties.DUMP_ENTITY); -// enable(TestProperties.RECORD_LOG_LEVEL); -// set(TestProperties.RECORD_LOG_LEVEL, Level.ALL.intValue()); + // enable(TestProperties.LOG_TRAFFIC); + // enable(TestProperties.DUMP_ENTITY); + // enable(TestProperties.RECORD_LOG_LEVEL); + // set(TestProperties.RECORD_LOG_LEVEL, Level.ALL.intValue()); ResourceConfig resourceConfig = new ResourceConfig(); - resourceConfig = resourceConfig.registerInstances(restconfService, StructuredDataToXmlProvider.INSTANCE, - StructuredDataToJsonProvider.INSTANCE, XmlToCompositeNodeProvider.INSTANCE, - JsonToCompositeNodeProvider.INSTANCE); + resourceConfig = resourceConfig.registerInstances(restconfService, new NormalizedNodeJsonBodyWriter(), + new NormalizedNodeXmlBodyWriter(), new XmlNormalizedNodeBodyReader(), new JsonNormalizedNodeBodyReader()); + resourceConfig.registerClasses(RestconfDocumentedExceptionMapper.class); return resourceConfig; } - @Test - public void testPostOperationsWithInputDataMediaTypes() throws UnsupportedEncodingException { - String uriPrefix = "/operations/"; - String uriPath = "ietf-interfaces:interfaces"; - String uri = uriPrefix + uriPath; - when(restconfService.invokeRpc(eq(uriPath), any(CompositeNode.class))).thenReturn(null); - post(uri, Draft02.MediaTypes.OPERATION+JSON, Draft02.MediaTypes.OPERATION+JSON, jsonData); - verify(restconfService, times(1)).invokeRpc(eq(uriPath), any(CompositeNode.class)); - post(uri, Draft02.MediaTypes.OPERATION+XML, Draft02.MediaTypes.OPERATION+XML, xmlData); - verify(restconfService, times(2)).invokeRpc(eq(uriPath), any(CompositeNode.class)); - post(uri, MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON, jsonData); - verify(restconfService, times(3)).invokeRpc(eq(uriPath), any(CompositeNode.class)); - post(uri, MediaType.APPLICATION_XML, MediaType.APPLICATION_XML, xmlData); - verify(restconfService, times(4)).invokeRpc(eq(uriPath), any(CompositeNode.class)); - post(uri, MediaType.TEXT_XML, MediaType.TEXT_XML, xmlData); - verify(restconfService, times(5)).invokeRpc(eq(uriPath), any(CompositeNode.class)); - post(uri, null, MediaType.TEXT_XML, xmlData); - verify(restconfService, times(6)).invokeRpc(eq(uriPath), any(CompositeNode.class)); - - // negative tests - post(uri, MediaType.TEXT_PLAIN, MediaType.TEXT_XML, xmlData); - verify(restconfService, times(6)).invokeRpc(eq(uriPath), any(CompositeNode.class)); - post(uri, MediaType.TEXT_XML, MediaType.TEXT_PLAIN, xmlData); - verify(restconfService, times(6)).invokeRpc(eq(uriPath), any(CompositeNode.class)); - } + @Test + @Ignore + public void testPostOperationsWithInputDataMediaTypes() throws UnsupportedEncodingException { + final String uriPrefix = "/operations/"; + final String uriPath = "ietf-interfaces:interfaces"; + final String uri = uriPrefix + uriPath; + when(restconfService.invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class))).thenReturn(null); + post(uri, Draft02.MediaTypes.OPERATION + JSON, Draft02.MediaTypes.OPERATION + JSON, jsonData); + verify(restconfService, times(1)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class)); + post(uri, Draft02.MediaTypes.OPERATION + XML, Draft02.MediaTypes.OPERATION + XML, xmlData); + verify(restconfService, times(2)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class)); + post(uri, MediaType.APPLICATION_JSON, MediaType.APPLICATION_JSON, jsonData); + verify(restconfService, times(3)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class)); + post(uri, MediaType.APPLICATION_XML, MediaType.APPLICATION_XML, xmlData); + verify(restconfService, times(4)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class)); + post(uri, MediaType.TEXT_XML, MediaType.TEXT_XML, xmlData); + verify(restconfService, times(5)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class)); + post(uri, null, MediaType.TEXT_XML, xmlData); + verify(restconfService, times(6)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class)); + + // negative tests + post(uri, MediaType.TEXT_PLAIN, MediaType.TEXT_XML, xmlData); + verify(restconfService, times(6)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class)); + post(uri, MediaType.TEXT_XML, MediaType.TEXT_PLAIN, xmlData); + verify(restconfService, times(6)).invokeRpc(eq(uriPath), any(NormalizedNodeContext.class), any(UriInfo.class)); + } @Test public void testGetConfigMediaTypes() throws UnsupportedEncodingException { - String uriPrefix = "/config/"; - String uriPath = "ietf-interfaces:interfaces"; - String uri = uriPrefix + uriPath; + final String uriPrefix = "/config/"; + final String uriPath = "ietf-interfaces:interfaces"; + final String uri = uriPrefix + uriPath; when(restconfService.readConfigurationData(eq(uriPath), any(UriInfo.class))).thenReturn(null); - get(uri, Draft02.MediaTypes.DATA+JSON); + get(uri, Draft02.MediaTypes.DATA + JSON); verify(restconfService, times(1)).readConfigurationData(eq(uriPath), any(UriInfo.class)); - get(uri, Draft02.MediaTypes.DATA+XML); + get(uri, Draft02.MediaTypes.DATA + XML); verify(restconfService, times(2)).readConfigurationData(eq(uriPath), any(UriInfo.class)); get(uri, MediaType.APPLICATION_JSON); verify(restconfService, times(3)).readConfigurationData(eq(uriPath), any(UriInfo.class)); @@ -116,13 +116,13 @@ public class MediaTypesTest extends JerseyTest { @Test public void testGetOperationalMediaTypes() throws UnsupportedEncodingException { - String uriPrefix = "/operational/"; - String uriPath = "ietf-interfaces:interfaces"; - String uri = uriPrefix + uriPath; + final String uriPrefix = "/operational/"; + final String uriPath = "ietf-interfaces:interfaces"; + final String uri = uriPrefix + uriPath; when(restconfService.readOperationalData(eq(uriPath), any(UriInfo.class))).thenReturn(null); - get(uri, Draft02.MediaTypes.DATA+JSON); + get(uri, Draft02.MediaTypes.DATA + JSON); verify(restconfService, times(1)).readOperationalData(eq(uriPath), any(UriInfo.class)); - get(uri, Draft02.MediaTypes.DATA+XML); + get(uri, Draft02.MediaTypes.DATA + XML); verify(restconfService, times(2)).readOperationalData(eq(uriPath), any(UriInfo.class)); get(uri, MediaType.APPLICATION_JSON); verify(restconfService, times(3)).readOperationalData(eq(uriPath), any(UriInfo.class)); @@ -137,86 +137,103 @@ public class MediaTypesTest extends JerseyTest { } @Test + @Ignore public void testPutConfigMediaTypes() throws UnsupportedEncodingException { - String uriPrefix = "/config/"; - String uriPath = "ietf-interfaces:interfaces"; - String uri = uriPrefix + uriPath; - when(restconfService.updateConfigurationData(eq(uriPath), any(CompositeNode.class))).thenReturn(null); - put(uri, null, Draft02.MediaTypes.DATA+JSON, jsonData); - verify(restconfService, times(1)).updateConfigurationData(eq(uriPath), any(CompositeNode.class)); - put(uri, null, Draft02.MediaTypes.DATA+XML, xmlData); - verify(restconfService, times(2)).updateConfigurationData(eq(uriPath), any(CompositeNode.class)); + final String uriPrefix = "/config/"; + final String uriPath = "ietf-interfaces:interfaces"; + final String uri = uriPrefix + uriPath; + when(restconfService.updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class))).thenReturn(null); + put(uri, null, Draft02.MediaTypes.DATA + JSON, jsonData); + verify(restconfService, times(1)).updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class)); + put(uri, null, Draft02.MediaTypes.DATA + XML, xmlData); + verify(restconfService, times(2)).updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class)); put(uri, null, MediaType.APPLICATION_JSON, jsonData); - verify(restconfService, times(3)).updateConfigurationData(eq(uriPath), any(CompositeNode.class)); + verify(restconfService, times(3)).updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class)); put(uri, null, MediaType.APPLICATION_XML, xmlData); - verify(restconfService, times(4)).updateConfigurationData(eq(uriPath), any(CompositeNode.class)); + verify(restconfService, times(4)).updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class)); put(uri, null, MediaType.TEXT_XML, xmlData); - verify(restconfService, times(5)).updateConfigurationData(eq(uriPath), any(CompositeNode.class)); + verify(restconfService, times(5)).updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class)); put(uri, "fooMediaType", MediaType.TEXT_XML, xmlData); - verify(restconfService, times(6)).updateConfigurationData(eq(uriPath), any(CompositeNode.class)); + verify(restconfService, times(6)).updateConfigurationData(eq(uriPath), any(NormalizedNodeContext.class)); } @Test + @Ignore public void testPostConfigWithPathMediaTypes() throws UnsupportedEncodingException { - String uriPrefix = "/config/"; - String uriPath = "ietf-interfaces:interfaces"; - String uri = uriPrefix + uriPath; - when(restconfService.createConfigurationData(eq(uriPath), any(CompositeNode.class))).thenReturn(null); - post(uri, null, Draft02.MediaTypes.DATA+JSON, jsonData); - verify(restconfService, times(1)).createConfigurationData(eq(uriPath), any(CompositeNode.class)); - post(uri, null, Draft02.MediaTypes.DATA+XML, xmlData); - verify(restconfService, times(2)).createConfigurationData(eq(uriPath), any(CompositeNode.class)); + final String uriPrefix = "/config/"; + final String uriPath = "ietf-interfaces:interfaces"; + final String uri = uriPrefix + uriPath; + when(restconfService.createConfigurationData(eq(uriPath), any(NormalizedNodeContext.class), + any(UriInfo.class))).thenReturn(null); + post(uri, null, Draft02.MediaTypes.DATA + JSON, jsonData); + verify(restconfService, times(1)).createConfigurationData(eq(uriPath), + any(NormalizedNodeContext.class), any(UriInfo.class)); + post(uri, null, Draft02.MediaTypes.DATA + XML, xmlData); + verify(restconfService, times(2)).createConfigurationData(eq(uriPath), + any(NormalizedNodeContext.class), any(UriInfo.class)); post(uri, null, MediaType.APPLICATION_JSON, jsonData); - verify(restconfService, times(3)).createConfigurationData(eq(uriPath), any(CompositeNode.class)); + verify(restconfService, times(3)).createConfigurationData(eq(uriPath), + any(NormalizedNodeContext.class), any(UriInfo.class)); post(uri, null, MediaType.APPLICATION_XML, xmlData); - verify(restconfService, times(4)).createConfigurationData(eq(uriPath), any(CompositeNode.class)); + verify(restconfService, times(4)).createConfigurationData(eq(uriPath), + any(NormalizedNodeContext.class), any(UriInfo.class)); post(uri, null, MediaType.TEXT_XML, xmlData); - verify(restconfService, times(5)).createConfigurationData(eq(uriPath), any(CompositeNode.class)); + verify(restconfService, times(5)).createConfigurationData(eq(uriPath), + any(NormalizedNodeContext.class), any(UriInfo.class)); post(uri, "fooMediaType", MediaType.TEXT_XML, xmlData); - verify(restconfService, times(6)).createConfigurationData(eq(uriPath), any(CompositeNode.class)); + verify(restconfService, times(6)).createConfigurationData(eq(uriPath), + any(NormalizedNodeContext.class), any(UriInfo.class)); } @Test + @Ignore public void testPostConfigMediaTypes() throws UnsupportedEncodingException { - String uriPrefix = "/config/"; - String uri = uriPrefix; - when(restconfService.createConfigurationData(any(CompositeNode.class))).thenReturn(null); - post(uri, null, Draft02.MediaTypes.DATA+JSON, jsonData); - verify(restconfService, times(1)).createConfigurationData(any(CompositeNode.class)); - post(uri, null, Draft02.MediaTypes.DATA+XML, xmlData); - verify(restconfService, times(2)).createConfigurationData(any(CompositeNode.class)); + final String uriPrefix = "/config/"; + final String uri = uriPrefix; + when(restconfService.createConfigurationData(any(NormalizedNodeContext.class), + any(UriInfo.class))).thenReturn(null); + post(uri, null, Draft02.MediaTypes.DATA + JSON, jsonData); + verify(restconfService, times(1)).createConfigurationData( + any(NormalizedNodeContext.class), any(UriInfo.class)); + post(uri, null, Draft02.MediaTypes.DATA + XML, xmlData); + verify(restconfService, times(2)).createConfigurationData( + any(NormalizedNodeContext.class), any(UriInfo.class)); post(uri, null, MediaType.APPLICATION_JSON, jsonData); - verify(restconfService, times(3)).createConfigurationData(any(CompositeNode.class)); + verify(restconfService, times(3)).createConfigurationData( + any(NormalizedNodeContext.class), any(UriInfo.class)); post(uri, null, MediaType.APPLICATION_XML, xmlData); - verify(restconfService, times(4)).createConfigurationData(any(CompositeNode.class)); + verify(restconfService, times(4)).createConfigurationData( + any(NormalizedNodeContext.class), any(UriInfo.class)); post(uri, null, MediaType.TEXT_XML, xmlData); - verify(restconfService, times(5)).createConfigurationData(any(CompositeNode.class)); + verify(restconfService, times(5)).createConfigurationData( + any(NormalizedNodeContext.class), any(UriInfo.class)); post(uri, "fooMediaType", MediaType.TEXT_XML, xmlData); - verify(restconfService, times(6)).createConfigurationData(any(CompositeNode.class)); + verify(restconfService, times(6)).createConfigurationData( + any(NormalizedNodeContext.class), any(UriInfo.class)); } @Test public void testDeleteConfigMediaTypes() throws UnsupportedEncodingException { - String uriPrefix = "/config/"; - String uriPath = "ietf-interfaces:interfaces"; - String uri = uriPrefix + uriPath; + final String uriPrefix = "/config/"; + final String uriPath = "ietf-interfaces:interfaces"; + final String uri = uriPrefix + uriPath; when(restconfService.deleteConfigurationData(eq(uriPath))).thenReturn(null); target(uri).request("fooMediaType").delete(); verify(restconfService, times(1)).deleteConfigurationData(uriPath); } - private int get(String uri, String acceptMediaType) { + private int get(final String uri, final String acceptMediaType) { return target(uri).request(acceptMediaType).get().getStatus(); } - private int put(String uri, String acceptMediaType, String contentTypeMediaType, String data) { + private int put(final String uri, final String acceptMediaType, final String contentTypeMediaType, final String data) { if (acceptMediaType == null) { return target(uri).request().put(Entity.entity(data, contentTypeMediaType)).getStatus(); } return target(uri).request(acceptMediaType).put(Entity.entity(data, contentTypeMediaType)).getStatus(); } - private int post(String uri, String acceptMediaType, String contentTypeMediaType, String data) { + private int post(final String uri, final String acceptMediaType, final String contentTypeMediaType, final String data) { if (acceptMediaType == null) { if (contentTypeMediaType == null || data == null) { return target(uri).request().post(null).getStatus();