Extend user settings API
[ccsdk/features.git] / sdnr / wt / data-provider / provider / src / test / java / org / onap / ccsdk / features / sdnr / wt / dataprovider / test / TestUserdata.java
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk features
4  * ================================================================================
5  * Copyright (C) 2021 highstreet technologies GmbH Intellectual Property.
6  * All rights reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  *
21  */
22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.test;
23
24 import java.io.IOException;
25 import org.apache.sshd.common.util.io.IoUtils;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertFalse;
28 import static org.junit.Assert.assertTrue;
29 import static org.junit.Assert.fail;
30 import org.junit.BeforeClass;
31 import org.junit.Test;
32 import org.onap.ccsdk.features.sdnr.wt.common.database.HtDatabaseClient;
33 import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
34 import org.onap.ccsdk.features.sdnr.wt.common.test.JSONAssert;
35 import org.onap.ccsdk.features.sdnr.wt.dataprovider.database.elasticsearch.impl.HtUserdataManagerImpl;
36 import org.onap.ccsdk.features.sdnr.wt.dataprovider.test.util.HostInfoForTest;
37
38 public class TestUserdata {
39
40     private static final String USERNAME = "admin132";
41     private static final String USERNAME2 = "admin133";
42
43     private static HtDatabaseClient dbRawProvider;
44     private static HtUserdataManagerImpl userDbProvider;
45
46     @BeforeClass
47     public static void init() throws Exception {
48
49         HostInfo[] hosts = HostInfoForTest.get();
50         dbRawProvider = HtDatabaseClient.getClient(hosts);
51         userDbProvider = new HtUserdataManagerImpl(dbRawProvider);
52
53     }
54
55     public static void trySleep(long ms) {
56         try {
57             Thread.sleep(ms);
58         } catch (Exception e) {
59             Thread.currentThread().interrupt();
60         }
61     }
62
63     @Test
64     public void test1() {
65         String fullContent = "";
66         boolean success = false;
67         try {
68             fullContent = getFileContent("/userdata/full.json");
69             success = userDbProvider.setUserdata(USERNAME, fullContent);
70         } catch (IOException e) {
71             e.printStackTrace();
72             fail(e.getMessage());
73         }
74         assertTrue("problem writing data into db",success);
75
76         trySleep(2000);
77
78         String userdata = userDbProvider.getUserdata(USERNAME);
79         JSONAssert.assertEquals(fullContent, userdata, false);
80         String networkMapContent = "";
81         String mergedContent = "";
82         try {
83             networkMapContent = getFileContent("/userdata/networkmap.json");
84             mergedContent = getFileContent("/userdata/merged.json");
85             userDbProvider.setUserdata(USERNAME, "networkMap", networkMapContent);
86         } catch (IOException e) {
87             e.printStackTrace();
88             fail(e.getMessage());
89         }
90
91         trySleep(2000);
92
93         userdata = userDbProvider.getUserdata(USERNAME);
94         JSONAssert.assertEquals(mergedContent, userdata, false);
95     }
96
97     @Test
98     public void test2() {
99         String fullContent = "";
100         boolean success = false;
101         try {
102             fullContent = getFileContent("/userdata/full.json");
103             success = userDbProvider.setUserdata(USERNAME2, fullContent);
104         } catch (IOException e) {
105             e.printStackTrace();
106             fail(e.getMessage());
107         }
108         assertTrue("problem writing data into db",success);
109
110         trySleep(2000);
111         // read with complex key
112         String userdata = userDbProvider.getUserdata(USERNAME2, "networkMap.styling");
113         JSONAssert.assertEquals("{\"theme\": \"dark\"}", userdata, false);
114         userdata = userDbProvider.getUserdata(USERNAME2, "networkMap.startupPosition.longitude");
115         assertEquals("\"13.35\"", userdata);
116         userdata = userDbProvider.getUserdata(USERNAME2, "networkMap.tileOpacity");
117         assertEquals("\"26\"", userdata);
118
119         // write with complex key => forbidden
120         success = userDbProvider.setUserdata(USERNAME2,"networkMap.styling.theme",null);
121         assertFalse(success);
122         success = userDbProvider.setUserdata(USERNAME2,"networkMap.themes.key","\"abc\"");
123         assertFalse(success);
124         // write with complex key => allowed
125         success = userDbProvider.setUserdata(USERNAME2,"networkMap.styling.theme","\"test\"");
126         assertTrue(success);
127         userdata = userDbProvider.getUserdata(USERNAME2, "networkMap.styling.theme");
128         assertEquals("\"test\"",userdata);
129         success = userDbProvider.setUserdata(USERNAME2,"networkMap.styling.theme","{\"test\":\"abc\"}");
130         assertTrue(success);
131         userdata = userDbProvider.getUserdata(USERNAME2, "networkMap.styling.theme");
132         assertEquals("{\"test\":\"abc\"}",userdata);
133
134         // delete with complex key => forbidden
135         success = userDbProvider.removeUserdata(USERNAME2,"networkMap.styling.theme2");
136         assertFalse(success);
137         // delete with complex key => allowed
138         success = userDbProvider.removeUserdata(USERNAME2,"networkMap.styling.theme");
139         assertTrue(success);
140         userdata = userDbProvider.getUserdata(USERNAME2, "networkMap.styling");
141         assertEquals("{}",userdata);
142
143
144     }
145
146     private static String getFileContent(String filename) throws IOException {
147         return String.join("\n", IoUtils.readAllLines(TestUserdata.class.getResourceAsStream(filename)));
148     }
149 }