sal-rest-connector test refactoring
[controller.git] / opendaylight / md-sal / sal-rest-connector / src / test / java / org / opendaylight / controller / sal / restconf / impl / test / ControllerContextTest.java
1 package org.opendaylight.controller.sal.restconf.impl.test;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5 import static org.junit.Assert.assertNull;
6 import static org.junit.Assert.assertTrue;
7 import static org.mockito.Matchers.eq;
8 import static org.mockito.Mockito.mock;
9 import static org.mockito.Mockito.when;
10
11 import java.io.FileNotFoundException;
12 import java.util.Set;
13
14 import org.junit.BeforeClass;
15 import org.junit.Test;
16 import org.opendaylight.controller.sal.core.api.mount.MountInstance;
17 import org.opendaylight.controller.sal.core.api.mount.MountService;
18 import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
19 import org.opendaylight.controller.sal.restconf.impl.InstanceIdWithSchemaNode;
20 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
21 import org.opendaylight.yangtools.yang.model.api.Module;
22 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
23
24 public class ControllerContextTest {
25
26     private static final ControllerContext controllerContext = ControllerContext.getInstance();
27
28     @BeforeClass
29     public static void init() throws FileNotFoundException {
30         Set<Module> allModules = TestUtils.loadModulesFrom("/full-versions/yangs");
31         assertNotNull(allModules);
32         SchemaContext schemaContext = TestUtils.loadSchemaContext(allModules);
33         controllerContext.setSchemas(schemaContext);
34     }
35
36     @Test
37     public void testToInstanceIdentifierList() throws FileNotFoundException {
38         InstanceIdWithSchemaNode instanceIdentifier = controllerContext
39                 .toInstanceIdentifier("simple-nodes:userWithoutClass/foo");
40         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "userWithoutClass");
41
42         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:userWithoutClass/foo/full-name");
43         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "full-name");
44
45         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:user/foo/boo");
46         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "user");
47
48         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:user//boo");
49         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "user");
50
51         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:users/user/foo");
52         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "user");
53
54         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:user/null/boo");
55         assertNull(instanceIdentifier);
56
57         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:user/foo");
58         assertNull(instanceIdentifier);
59
60     }
61
62     @Test
63     public void testToInstanceIdentifierMountPoint() throws FileNotFoundException {
64         try {
65             String mountPointPath = "simple-nodes:user/foo/boo";
66             String nestedPath = "simple-nodes:user/foo/boo/simple-nodes:users";
67             InstanceIdWithSchemaNode mountInstanceIdentifier = controllerContext.toInstanceIdentifier(mountPointPath);
68             assertEquals("user", mountInstanceIdentifier.getSchemaNode().getQName().getLocalName());
69
70             MountInstance mountInstance = mock(MountInstance.class);
71             MountService mountService = mock(MountService.class);
72
73             controllerContext.setMountService(mountService);
74             // when(mountService.getMountPoint(any(InstanceIdentifier.class))).thenReturn(null);
75
76             when(mountService.getMountPoint(eq(mountInstanceIdentifier.getInstanceIdentifier()))).thenReturn(
77                     mountInstance);
78
79             when(mountInstance.getSchemaContext()).thenReturn(controllerContext.getGlobalSchema());
80
81             InstanceIdWithSchemaNode mountedInstanceIdentifier = controllerContext.toInstanceIdentifier(nestedPath);
82             assertEquals("users", mountedInstanceIdentifier.getSchemaNode().getQName().getLocalName());
83
84             mountedInstanceIdentifier = controllerContext.toInstanceIdentifier(mountPointPath + "/" + mountPointPath);
85             assertEquals("user", mountedInstanceIdentifier.getSchemaNode().getQName().getLocalName());
86
87             mountedInstanceIdentifier = controllerContext
88                     .toInstanceIdentifier("simple-nodes:user/foo/var/simple-nodes:users");
89             assertNull(mountedInstanceIdentifier);
90
91         } finally {
92             controllerContext.setMountService(null);
93         }
94
95     }
96
97     @Test
98     public void testToInstanceIdentifierContainer() throws FileNotFoundException {
99         InstanceIdWithSchemaNode instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:users");
100         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "users");
101         assertTrue(instanceIdentifier.getSchemaNode() instanceof ContainerSchemaNode);
102         assertEquals(2, ((ContainerSchemaNode) instanceIdentifier.getSchemaNode()).getChildNodes().size());
103     }
104
105     @Test
106     public void testToInstanceIdentifierChoice() throws FileNotFoundException {
107         InstanceIdWithSchemaNode instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:food/beer");
108         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "beer");
109
110         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:food/snack");
111         assertNull(instanceIdentifier);
112
113         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:food/sports-arena");
114         assertNull(instanceIdentifier);
115
116         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:food/snack/sports-arena");
117         assertNull(instanceIdentifier);
118
119     }
120
121 }