Adjust to {Container,Input,Output}SchemaNode split
[mdsal.git] / dom / mdsal-dom-spi / src / test / java / org / opendaylight / mdsal / dom / spi / RpcRoutingStrategyTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.mdsal.dom.spi;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertThrows;
14 import static org.junit.Assert.assertTrue;
15 import static org.mockito.Mockito.doReturn;
16 import static org.mockito.Mockito.mock;
17 import static org.mockito.Mockito.reset;
18
19 import com.google.common.collect.ImmutableList;
20 import com.google.common.collect.ImmutableSet;
21 import java.lang.reflect.Field;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.opendaylight.yangtools.yang.common.QName;
25 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
26 import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
27 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
28 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
29
30 public class RpcRoutingStrategyTest {
31
32     private static RpcRoutingStrategy rpcRoutingStrategy;
33     private static final QName Q_NAME = QName.create("", "testQname");
34     private static final RpcDefinition RPC_DEFINITION = mock(RpcDefinition.class);
35     private static final DataSchemaNode DATA_SCHEMA_NODE = mock(DataSchemaNode.class);
36     private static final UnknownSchemaNode UNKNOWN_SCHEMA_NODE = mock(UnknownSchemaNode.class);
37
38     @Before
39     public void setUp() throws Exception {
40         final InputSchemaNode containerSchemaNode = mock(InputSchemaNode.class);
41
42         doReturn(containerSchemaNode).when(RPC_DEFINITION).getInput();
43         doReturn(ImmutableSet.of(DATA_SCHEMA_NODE)).when(containerSchemaNode).getChildNodes();
44         doReturn(ImmutableList.of(UNKNOWN_SCHEMA_NODE)).when(DATA_SCHEMA_NODE).getUnknownSchemaNodes();
45         doReturn(QName.create("", "testNode")).when(UNKNOWN_SCHEMA_NODE).getNodeType();
46         doReturn(Q_NAME).when(RPC_DEFINITION).getQName();
47
48         rpcRoutingStrategy = RpcRoutingStrategy.from(RPC_DEFINITION);
49         assertNotNull(rpcRoutingStrategy);
50
51         assertEquals(Q_NAME, rpcRoutingStrategy.getIdentifier());
52         assertFalse(rpcRoutingStrategy.isContextBasedRouted());
53     }
54
55     @Test()
56     public void routedRpcStrategyTest() throws Exception {
57         final Field contextReferenceField = RpcRoutingStrategy.class.getDeclaredField("CONTEXT_REFERENCE");
58         contextReferenceField.setAccessible(true);
59
60         final QName contextReference = (QName) contextReferenceField.get(rpcRoutingStrategy);
61
62         reset(UNKNOWN_SCHEMA_NODE);
63         doReturn(contextReference).when(UNKNOWN_SCHEMA_NODE).getNodeType();
64         doReturn(Q_NAME).when(UNKNOWN_SCHEMA_NODE).getQName();
65         doReturn(Q_NAME).when(DATA_SCHEMA_NODE).getQName();
66         rpcRoutingStrategy = RpcRoutingStrategy.from(RPC_DEFINITION);
67
68         assertNotNull(rpcRoutingStrategy);
69
70         assertTrue(rpcRoutingStrategy.isContextBasedRouted());
71         assertEquals(Q_NAME, rpcRoutingStrategy.getContext());
72         assertEquals(Q_NAME, rpcRoutingStrategy.getLeaf());
73     }
74
75     @Test
76     public void getLeafTest() throws Exception {
77         assertThrows(UnsupportedOperationException.class, () -> rpcRoutingStrategy.getLeaf());
78     }
79
80     @Test
81     public void getContextTest() {
82         assertThrows(UnsupportedOperationException.class, () -> rpcRoutingStrategy.getContext());
83     }
84 }