X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=restconf%2Fsal-rest-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Frestconf%2Frestful%2Futils%2FPostDataTransactionUtilTest.java;h=33d395ee49919ec75ec409eff114a6648043ab7b;hb=c44b3ff43728dae97e039d75d793be187157ce00;hp=51270bc51b220858dd629739c2ef4724f3268e9d;hpb=9013e567cd592fccefd801bd8c97440a810c3574;p=netconf.git diff --git a/restconf/sal-rest-connector/src/test/java/org/opendaylight/restconf/restful/utils/PostDataTransactionUtilTest.java b/restconf/sal-rest-connector/src/test/java/org/opendaylight/restconf/restful/utils/PostDataTransactionUtilTest.java index 51270bc51b..33d395ee49 100644 --- a/restconf/sal-rest-connector/src/test/java/org/opendaylight/restconf/restful/utils/PostDataTransactionUtilTest.java +++ b/restconf/sal-rest-connector/src/test/java/org/opendaylight/restconf/restful/utils/PostDataTransactionUtilTest.java @@ -9,10 +9,12 @@ package org.opendaylight.restconf.restful.utils; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; + import com.google.common.util.concurrent.Futures; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilder; @@ -29,6 +31,7 @@ import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; import org.opendaylight.controller.md.sal.rest.common.TestRestconfUtils; import org.opendaylight.netconf.sal.restconf.impl.InstanceIdentifierContext; import org.opendaylight.netconf.sal.restconf.impl.NormalizedNodeContext; +import org.opendaylight.netconf.sal.restconf.impl.RestconfDocumentedException; import org.opendaylight.restconf.common.references.SchemaContextRef; import org.opendaylight.restconf.restful.transaction.TransactionVarsWrapper; import org.opendaylight.yangtools.util.SingletonSet; @@ -38,10 +41,10 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; -import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.w3c.dom.DOMException; public class PostDataTransactionUtilTest { @@ -70,7 +73,8 @@ public class PostDataTransactionUtilTest { @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); - this.refSchemaCtx = new SchemaContextRef(TestRestconfUtils.loadSchemaContext(PATH_FOR_NEW_SCHEMA_CONTEXT)); + this.refSchemaCtx = new SchemaContextRef( + YangParserTestUtils.parseYangSources(TestRestconfUtils.loadFiles(PATH_FOR_NEW_SCHEMA_CONTEXT))); this.schema = this.refSchemaCtx.get(); final QName baseQName = QName.create("http://example.com/ns/example-jukebox", "2015-04-04", "jukebox"); @@ -84,7 +88,7 @@ public class PostDataTransactionUtilTest { .node(baseQName) .build(); - final LeafNode buildLeaf = Builders.leafBuilder() + final LeafNode buildLeaf = Builders.leafBuilder() .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(leafQname)) .withValue(0.2) .build(); @@ -122,36 +126,49 @@ public class PostDataTransactionUtilTest { @Test public void testPostContainerData() { - final InstanceIdentifierContext iidContext = new InstanceIdentifierContext<>(this.iid2, null, null, this.schema); + final InstanceIdentifierContext iidContext = + new InstanceIdentifierContext<>(this.iid2, null, null, this.schema); final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildBaseCont); - doReturn(Futures.immediateCheckedFuture(Optional.absent())).when(this.read).read(LogicalDatastoreType.CONFIGURATION, this.iid2); - final YangInstanceIdentifier.NodeIdentifier identifier = ((ContainerNode) ((SingletonSet) payload.getData().getValue()).iterator().next()).getIdentifier(); - final YangInstanceIdentifier node = payload.getInstanceIdentifierContext().getInstanceIdentifier().node(identifier); - doReturn(Futures.immediateCheckedFuture(false)).when(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, node); + doReturn(Futures.immediateCheckedFuture(false)) + .when(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, this.iid2); + final YangInstanceIdentifier.NodeIdentifier identifier = + ((ContainerNode) ((SingletonSet) payload.getData().getValue()).iterator().next()).getIdentifier(); + final YangInstanceIdentifier node = + payload.getInstanceIdentifierContext().getInstanceIdentifier().node(identifier); + doReturn(Futures.immediateCheckedFuture(false)) + .when(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, node); doNothing().when(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, node, payload.getData()); doReturn(Futures.immediateCheckedFuture(null)).when(this.readWrite).submit(); - final TransactionVarsWrapper wrapper = new TransactionVarsWrapper(payload.getInstanceIdentifierContext(), null, this.transactionChain); - final Response response = PostDataTransactionUtil.postData(this.uriInfo, payload, wrapper, this.refSchemaCtx); + final TransactionVarsWrapper wrapper = + new TransactionVarsWrapper(payload.getInstanceIdentifierContext(), null, this.transactionChain); + final Response response = + PostDataTransactionUtil.postData(this.uriInfo, payload, wrapper, this.refSchemaCtx, null, null); assertEquals(201, response.getStatus()); - verify(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, node); - verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, node, (NormalizedNode) ((SingletonSet) payload.getData().getValue()).iterator().next()); + verify(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, this.iid2); + verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, + payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData()); } @Test public void testPostListData() { - final InstanceIdentifierContext iidContext = new InstanceIdentifierContext<>(this.iid2, null, null, this.schema); + final InstanceIdentifierContext iidContext = + new InstanceIdentifierContext<>(this.iid2, null, null, this.schema); final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildList); - doReturn(Futures.immediateCheckedFuture(Optional.absent())).when(this.read).read(LogicalDatastoreType.CONFIGURATION, this.iid2); final MapNode data = (MapNode) payload.getData(); - final YangInstanceIdentifier.NodeIdentifierWithPredicates identifier = data.getValue().iterator().next().getIdentifier(); - final YangInstanceIdentifier node = payload.getInstanceIdentifierContext().getInstanceIdentifier().node(identifier); - doReturn(Futures.immediateCheckedFuture(false)).when(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, node); + final YangInstanceIdentifier.NodeIdentifierWithPredicates identifier = + data.getValue().iterator().next().getIdentifier(); + final YangInstanceIdentifier node = + payload.getInstanceIdentifierContext().getInstanceIdentifier().node(identifier); + doReturn(Futures.immediateCheckedFuture(false)) + .when(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, node); doNothing().when(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, node, payload.getData()); doReturn(Futures.immediateCheckedFuture(null)).when(this.readWrite).submit(); - final TransactionVarsWrapper wrapper = new TransactionVarsWrapper(payload.getInstanceIdentifierContext(), null, this.transactionChain); - final Response response = PostDataTransactionUtil.postData(this.uriInfo, payload, wrapper, this.refSchemaCtx); + final TransactionVarsWrapper wrapper = + new TransactionVarsWrapper(payload.getInstanceIdentifierContext(), null, this.transactionChain); + final Response response = + PostDataTransactionUtil.postData(this.uriInfo, payload, wrapper, this.refSchemaCtx, null, null); assertEquals(201, response.getStatus()); verify(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, node); verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, node, data.getValue().iterator().next()); @@ -159,21 +176,36 @@ public class PostDataTransactionUtilTest { @Test public void testPostDataFail() { - final InstanceIdentifierContext iidContext = new InstanceIdentifierContext<>(this.iid2, null, null, this.schema); + final InstanceIdentifierContext iidContext = + new InstanceIdentifierContext<>(this.iid2, null, null, this.schema); final NormalizedNodeContext payload = new NormalizedNodeContext(iidContext, this.buildBaseCont); - doReturn(Futures.immediateCheckedFuture(Optional.absent())).when(this.read).read(LogicalDatastoreType.CONFIGURATION, this.iid2); - final YangInstanceIdentifier.NodeIdentifier identifier = ((ContainerNode) ((SingletonSet) payload.getData().getValue()).iterator().next()).getIdentifier(); - final YangInstanceIdentifier node = payload.getInstanceIdentifierContext().getInstanceIdentifier().node(identifier); - doReturn(Futures.immediateCheckedFuture(false)).when(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, node); + doReturn(Futures.immediateCheckedFuture(false)) + .when(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, this.iid2); + final YangInstanceIdentifier.NodeIdentifier identifier = + ((ContainerNode) ((SingletonSet) payload.getData().getValue()).iterator().next()).getIdentifier(); + final YangInstanceIdentifier node = + payload.getInstanceIdentifierContext().getInstanceIdentifier().node(identifier); + doReturn(Futures.immediateCheckedFuture(false)) + .when(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, node); doNothing().when(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, node, payload.getData()); - doReturn(Futures.immediateFailedCheckedFuture(new DOMException((short) 414, "Post request failed"))).when(this.readWrite).submit(); - final TransactionVarsWrapper wrapper = new TransactionVarsWrapper(payload.getInstanceIdentifierContext(), null, this.transactionChain); - final Response response = PostDataTransactionUtil.postData(this.uriInfo, payload, wrapper, this.refSchemaCtx); - assertEquals(Response.Status.INTERNAL_SERVER_ERROR, response.getStatusInfo()); - verify(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, node); - verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, node, (NormalizedNode) ((SingletonSet) payload.getData().getValue()).iterator().next()); + final DOMException domException = new DOMException((short) 414, "Post request failed"); + doReturn(Futures.immediateFailedCheckedFuture(domException)).when(this.readWrite).submit(); + final TransactionVarsWrapper wrapper = + new TransactionVarsWrapper(payload.getInstanceIdentifierContext(), null, this.transactionChain); + + try { + PostDataTransactionUtil.postData(this.uriInfo, payload, wrapper, this.refSchemaCtx, null, null); + fail("Expected RestconfDocumentedException"); + } catch (RestconfDocumentedException e) { + assertEquals(1, e.getErrors().size()); + assertTrue(e.getErrors().get(0).getErrorInfo().contains(domException.getMessage())); + } + + verify(this.readWrite).exists(LogicalDatastoreType.CONFIGURATION, this.iid2); + verify(this.readWrite).put(LogicalDatastoreType.CONFIGURATION, + payload.getInstanceIdentifierContext().getInstanceIdentifier(), payload.getData()); } }