2 * ============LICENSE_START=======================================================
3 * ONAP : ccsdk features
4 * ================================================================================
5 * Copyright (C) 2021 highstreet technologies GmbH Intellectual Property.
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.test;
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;
38 public class TestUserdata {
40 private static final String USERNAME = "admin132";
41 private static final String USERNAME2 = "admin133";
43 private static HtDatabaseClient dbRawProvider;
44 private static HtUserdataManagerImpl userDbProvider;
47 public static void init() throws Exception {
49 HostInfo[] hosts = HostInfoForTest.get();
50 dbRawProvider = HtDatabaseClient.getClient(hosts);
51 userDbProvider = new HtUserdataManagerImpl(dbRawProvider);
55 public static void trySleep(long ms) {
58 } catch (Exception e) {
59 Thread.currentThread().interrupt();
65 String fullContent = "";
66 boolean success = false;
68 fullContent = getFileContent("/userdata/full.json");
69 success = userDbProvider.setUserdata(USERNAME, fullContent);
70 } catch (IOException e) {
74 assertTrue("problem writing data into db",success);
78 String userdata = userDbProvider.getUserdata(USERNAME);
79 JSONAssert.assertEquals(fullContent, userdata, false);
80 String networkMapContent = "";
81 String mergedContent = "";
83 networkMapContent = getFileContent("/userdata/networkmap.json");
84 mergedContent = getFileContent("/userdata/merged.json");
85 userDbProvider.setUserdata(USERNAME, "networkMap", networkMapContent);
86 } catch (IOException e) {
93 userdata = userDbProvider.getUserdata(USERNAME);
94 JSONAssert.assertEquals(mergedContent, userdata, false);
99 String fullContent = "";
100 boolean success = false;
102 fullContent = getFileContent("/userdata/full.json");
103 success = userDbProvider.setUserdata(USERNAME2, fullContent);
104 } catch (IOException e) {
106 fail(e.getMessage());
108 assertTrue("problem writing data into db",success);
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);
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\"");
127 userdata = userDbProvider.getUserdata(USERNAME2, "networkMap.styling.theme");
128 assertEquals("\"test\"",userdata);
129 success = userDbProvider.setUserdata(USERNAME2,"networkMap.styling.theme","{\"test\":\"abc\"}");
131 userdata = userDbProvider.getUserdata(USERNAME2, "networkMap.styling.theme");
132 assertEquals("{\"test\":\"abc\"}",userdata);
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");
140 userdata = userDbProvider.getUserdata(USERNAME2, "networkMap.styling");
141 assertEquals("{}",userdata);
146 private static String getFileContent(String filename) throws IOException {
147 return String.join("\n", IoUtils.readAllLines(TestUserdata.class.getResourceAsStream(filename)));