4c5922d73fa962b3aaea2d547846c8905e66bb8a
[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.assertTrue;
6
7 import java.io.FileNotFoundException;
8 import java.util.Set;
9
10 import org.junit.After;
11 import org.junit.BeforeClass;
12 import org.junit.Rule;
13 import org.junit.Test;
14 import org.junit.rules.ExpectedException;
15 import org.opendaylight.controller.sal.restconf.impl.ControllerContext;
16 import org.opendaylight.controller.sal.restconf.impl.InstanceIdWithSchemaNode;
17 import org.opendaylight.controller.sal.restconf.impl.ResponseException;
18 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
19 import org.opendaylight.yangtools.yang.model.api.Module;
20 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
21
22 public class ControllerContextTest {
23
24     private static final ControllerContext controllerContext = ControllerContext.getInstance();
25
26     @Rule
27     public ExpectedException exception = ExpectedException.none();
28
29     @BeforeClass
30     public static void init() throws FileNotFoundException {
31         Set<Module> allModules = TestUtils.loadModulesFrom("/full-versions/yangs");
32         assertNotNull(allModules);
33         SchemaContext schemaContext = TestUtils.loadSchemaContext(allModules);
34         controllerContext.setSchemas(schemaContext);
35     }
36
37     @After
38     public void releaseMountService() {
39         controllerContext.setMountService(null);
40     }
41
42     @Test
43     public void testToInstanceIdentifierList() throws FileNotFoundException {
44         InstanceIdWithSchemaNode instanceIdentifier = controllerContext
45                 .toInstanceIdentifier("simple-nodes:userWithoutClass/foo");
46         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "userWithoutClass");
47
48         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:userWithoutClass/foo/full-name");
49         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "full-name");
50
51         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:user/foo/boo");
52         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "user");
53
54         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:user//boo");
55         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "user");
56
57         instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:users/user/foo");
58         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "user");
59     }
60
61     @Test
62     public void testToInstanceIdentifierListWithNullKey() {
63         exception.expect(ResponseException.class);
64         exception.expectMessage("HTTP 400 Bad Request");
65         controllerContext.toInstanceIdentifier("simple-nodes:user/null/boo");
66     }
67
68     @Test
69     public void testToInstanceIdentifierListWithMissingKey() {
70         exception.expect(ResponseException.class);
71         exception.expectMessage("HTTP 400 Bad Request");
72         controllerContext.toInstanceIdentifier("simple-nodes:user/foo");
73     }
74
75     @Test
76     public void testToInstanceIdentifierContainer() throws FileNotFoundException {
77         InstanceIdWithSchemaNode instanceIdentifier = controllerContext.toInstanceIdentifier("simple-nodes:users");
78         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "users");
79         assertTrue(instanceIdentifier.getSchemaNode() instanceof ContainerSchemaNode);
80         assertEquals(2, ((ContainerSchemaNode) instanceIdentifier.getSchemaNode()).getChildNodes().size());
81     }
82
83     @Test
84     public void testToInstanceIdentifierChoice() throws FileNotFoundException {
85         InstanceIdWithSchemaNode instanceIdentifier = controllerContext
86                 .toInstanceIdentifier("simple-nodes:food/nonalcoholic/beer");
87         assertEquals(instanceIdentifier.getSchemaNode().getQName().getLocalName(), "beer");
88     }
89
90     @Test
91     public void testToInstanceIdentifierChoiceException() {
92         exception.expect(ResponseException.class);
93         exception.expectMessage("HTTP 400 Bad Request");
94         controllerContext.toInstanceIdentifier("simple-nodes:food/snack");
95     }
96
97     @Test
98     public void testToInstanceIdentifierCaseException() {
99         exception.expect(ResponseException.class);
100         exception.expectMessage("HTTP 400 Bad Request");
101         controllerContext.toInstanceIdentifier("simple-nodes:food/sports-arena");
102     }
103
104     @Test
105     public void testToInstanceIdentifierChoiceCaseException() {
106         exception.expect(ResponseException.class);
107         exception.expectMessage("HTTP 400 Bad Request");
108         controllerContext.toInstanceIdentifier("simple-nodes:food/snack/sports-arena");
109     }
110
111 }