Fix tests to not create files in repository 41/50641/2
authorPawelSzalapski <pawel.szalapski@nokia.com>
Wed, 6 Jun 2018 10:26:55 +0000 (12:26 +0200)
committerPawelSzalapski <pawel.szalapski@nokia.com>
Mon, 11 Jun 2018 07:49:52 +0000 (09:49 +0200)
While we run unittests, they create files directly
inside the repository, those files are later proposed
as changes to commit.

Change-Id: Iffcb3820959f85099d3fe0ab9db1a198f8f60d78
Issue-ID: DCAEGEN2-524
Signed-off-by: PawelSzalapski <pawel.szalapski@nokia.com>
src/test/java/org/onap/dcae/vestest/TestFetchConfig.java
src/test/java/org/onap/dcae/vestest/TestLoadDynamicConfig.java
src/test/java/org/onap/dcae/vestest/TestingUtilities.java [new file with mode: 0644]

index 32a2299..0b6b502 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");\r
  * you may not use this file except in compliance with the License.\r
  * You may obtain a copy of the License at\r
- * \r
+ *\r
  *      http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
+ *\r
  * Unless required by applicable law or agreed to in writing, software\r
  * distributed under the License is distributed on an "AS IS" BASIS,\r
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
  */\r
 package org.onap.dcae.vestest;\r
 \r
-import static org.junit.Assert.*;\r
+import static org.junit.Assert.assertTrue;\r
+import static org.onap.dcae.vestest.TestingUtilities.createTemporaryFile;\r
 \r
-import static org.junit.Assert.assertEquals;\r
-\r
-import java.io.FileReader;\r
-import java.io.IOException;\r
-import java.util.Map;\r
-import java.util.Properties;\r
-\r
-import org.json.JSONObject;\r
-import com.google.gson.JsonParser;\r
 import com.google.gson.JsonObject;\r
-\r
-import org.junit.After;\r
+import java.nio.file.Path;\r
 import org.junit.Before;\r
 import org.junit.Test;\r
-import org.onap.dcae.commonFunction.CommonStartup;\r
-import org.onap.dcae.commonFunction.DmaapPropertyReader;\r
-import org.onap.dcae.commonFunction.EventProcessor;\r
-import org.onap.dcae.commonFunction.EventPublisherHash;\r
 import org.onap.dcae.controller.FetchDynamicConfig;\r
+import org.onap.dcae.controller.LoadDynamicConfig;\r
 \r
 \r
 public class TestFetchConfig {\r
 \r
-       JSONObject jsonObject;\r
-       \r
-       @Before\r
-       public void setUp() throws Exception {\r
-\r
-               \r
-               System.setProperty("CONSUL_HOST", "localhost");\r
-               System.setProperty("CONFIG_BINDING_SERVICE", "localhost");\r
-               System.setProperty("HOSTNAME", "localhost");\r
-       }\r
-\r
-       @After\r
-       public void tearDown() throws Exception {\r
-       }\r
-       \r
-\r
-       \r
-       @Test\r
-       public void testwritefile() {\r
-               Boolean flag = false;\r
-               \r
-               FetchDynamicConfig fc = new FetchDynamicConfig();\r
-               //Used for writing the configuration output\r
-               FetchDynamicConfig.configFile = "src/test/resources/controller-config_formatted_op.json";\r
-\r
-               \r
-               \r
-               try{\r
-                       JsonParser parser = new JsonParser();\r
-                       FileReader fr = new FileReader ("src/test/resources/controller-config_singleline_ip.json"  );\r
-                       final JsonObject jo =  (JsonObject) parser.parse (fr);\r
-                       final String jsonText = jo.toString ();\r
-                       jsonObject = new JSONObject ( jsonText );\r
-                       \r
-                       fc.writefile(jsonObject.toString());\r
-               }\r
-               catch(Exception e){\r
-                       System.out.println("Exception while opening the file");\r
-                       e.printStackTrace();\r
-               }\r
-               if(jsonObject.has("streams_publishes"))\r
-               {\r
-                       flag = true;\r
-               }\r
-               \r
-               assertEquals(true, flag);\r
-               \r
-       }\r
-       \r
-       @Test\r
-       public void testgetConsul() {\r
-               Boolean flag = false;\r
-\r
-               \r
-               try{\r
-\r
-                       FetchDynamicConfig.getconsul();\r
-                       flag = true;\r
-               }\r
-               catch(Exception e){\r
-                       System.out.println("Exception while getting to consul");\r
-                       e.printStackTrace();\r
-               }\r
-               assertEquals(true, flag);\r
-               \r
-       }\r
-\r
-       @Test\r
-       public void testgetCBS() {\r
-               Boolean flag = false;\r
-               \r
-               try{\r
-                       \r
-                       \r
-                       JsonParser parser = new JsonParser();\r
-                       FileReader fr = new FileReader ("src/test/resources/controller-config_singleline_ip.json"  );\r
-                       final JsonObject jo =  (JsonObject) parser.parse (fr);\r
-                       final String jsonText = jo.toString ();\r
-                       jsonObject = new JSONObject ( jsonText );\r
-                       \r
-                       //retstring from Consul is parsed\r
-                       FetchDynamicConfig.retString = "[{\"ID\":\"81bc2a17-8cfa-3f6f-30a9-a545a9b6ac2f\",\"Node\":\"zldcrdm5bdcc2dokr00\",\"Address\":\"135.25.108.161\",\"Datacenter\":\"zldcrdm5bdcc2\",\"TaggedAddresses\":{\"lan\":\"135.25.108.161\",\"wan\":\"135.25.108.161\"},\"NodeMeta\":{\"fqdn\":\"zldcrdm5bdcc2dokr00.2f3fb3.rdm5b.tci.att.com\"},\"ServiceID\":\"20299a144716:config_binding_service:10000\",\"ServiceName\":\"config_binding_service\",\"ServiceTags\":[],\"ServiceAddress\":\"135.25.108.161\",\"ServicePort\":10000,\"ServiceEnableTagOverride\":false,\"CreateIndex\":9153156,\"ModifyIndex\":9153156}]";\r
-                       \r
-                       //Mock the return CBS output\r
-                       FetchDynamicConfig.retCBSString = jsonObject.toString();\r
-                       FetchDynamicConfig.getCBS();\r
-                       flag = true;\r
-               }\r
-               catch(Exception e){\r
-                       System.out.println("Exception while fetching cbs configuration");\r
-                       e.printStackTrace();\r
-               }\r
-               assertEquals(true, flag);\r
-               \r
-       }\r
-       \r
-\r
-       @Test\r
-       public void testverifyConfigChange() {\r
-       \r
-               \r
-               Boolean ret= false;\r
-               \r
-               try{\r
-                       //File date to be compared\r
-                       FetchDynamicConfig.configFile = "src/test/resources/controller-config_singleline_ip.json";\r
-                       //Mock the return CBS output\r
-                       FetchDynamicConfig.retCBSString = "{\"header.authflag\": \"1\", \"collector.schema.file\": \"{\\\"v1\\\": \\\"./etc/CommonEventFormat_27.2.json\\\", \\\"v2\\\": \\\"./etc/CommonEventFormat_27.2.json\\\", \\\"v3\\\": \\\"./etc/CommonEventFormat_27.2.json\\\", \\\"v4\\\": \\\"./etc/CommonEventFormat_27.2.json\\\", \\\"v5\\\": \\\"./etc/CommonEventFormat_28.4.json\\\"}\", \"collector.keystore.passwordfile\": \"/opt/app/dcae-certificate/.password\", \"tomcat.maxthreads\": \"200\", \"collector.dmaap.streamid\": \"fault=ves-fault|syslog=ves-syslog|heartbeat=ves-heartbeat|measurementsForVfScaling=ves-measurement|mobileFlow=ves-mobileflow|other=ves-other|stateChange=ves-statechange|thresholdCrossingAlert=ves-thresholdCrossingAlert|voiceQuality=ves-voicequality|sipSignaling=ves-sipsignaling\", \"streams_subscribes\": {}, \"collector.inputQueue.maxPending\": \"8096\", \"collector.keystore.alias\": \"dynamically generated\", \"streams_publishes\": {\"ves-mobileflow\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590629043\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-MOBILEFLOW-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-measurement\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590433916\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-ENC-MEASUREMENT-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-voicequality\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590778397\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-VES-VOICEQUALITY-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-thresholdCrossingAlert\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590728150\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-TCA-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-fault\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590384670\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-FAULT-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-heartbeat\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590530041\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-HEARTBEAT-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-sipsignaling\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590828736\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-VES-SIPSIGNALING-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-syslog\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590482019\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-SYSLOG-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-other\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590581045\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-OTHER-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-statechange\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590677649\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-STATECHANGE-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}}, \"collector.schema.checkflag\": \"1\", \"services_calls\": {}, \"event.transform.flag\": \"1\", \"collector.keystore.file.location\": \"/opt/app/dcae-certificate/keystore.jks\", \"header.authlist\": \"sample1,c2FtcGxlMQ==|userid1,base64encodepwd1|userid2,base64encodepwd2\", \"collector.service.secure.port\": \"8443\", \"collector.service.port\": \"-1\"}";\r
-                       ret=FetchDynamicConfig.verifyConfigChange();\r
-                       \r
-               }\r
-               catch(Exception e){\r
-                       System.out.println("Exception on verifyConfigChange");\r
-                       //e.printStackTrace();\r
-               }\r
-               assertEquals(true, ret);\r
-               \r
-       }\r
-       \r
+    private Path temporaryFile;\r
+\r
+    @Before\r
+    public void setUp() {\r
+        temporaryFile = createTemporaryFile();\r
+    }\r
+\r
+    @Test\r
+    public void shouldWriteFileAndAttachDMaaPStreamsPropertiesFromConfiguration() {\r
+        // given\r
+        FetchDynamicConfig loadDynamicConfig = new FetchDynamicConfig();\r
+        FetchDynamicConfig.configFile = temporaryFile.toString();\r
+        String sampleConfiguration = LoadDynamicConfig.readFile("src/test/resources/controller-config_singleline_ip.json");\r
+\r
+        // when\r
+        loadDynamicConfig.writefile(sampleConfiguration);\r
+\r
+        // then\r
+        JsonObject actuallyWrittenJSONContent = TestingUtilities.readJSONFromFile(temporaryFile);\r
+        assertTrue(actuallyWrittenJSONContent.has("streams_publishes"));\r
+    }\r
+\r
+    @Test\r
+    public void shouldThrowNoErrorsWhileParsingConsulResponse() {\r
+        // given\r
+        FetchDynamicConfig.retString = "[{\"ID\":\"81bc2a17-8cfa-3f6f-30a9-a545a9b6ac2f\",\"Node\":\"zldcrdm5bdcc2dokr00\",\"Address\":\"135.25.108.161\",\"Datacenter\":\"zldcrdm5bdcc2\",\"TaggedAddresses\":{\"lan\":\"135.25.108.161\",\"wan\":\"135.25.108.161\"},\"NodeMeta\":{\"fqdn\":\"zldcrdm5bdcc2dokr00.2f3fb3.rdm5b.tci.att.com\"},\"ServiceID\":\"20299a144716:config_binding_service:10000\",\"ServiceName\":\"config_binding_service\",\"ServiceTags\":[],\"ServiceAddress\":\"135.25.108.161\",\"ServicePort\":10000,\"ServiceEnableTagOverride\":false,\"CreateIndex\":9153156,\"ModifyIndex\":9153156}]";\r
+\r
+        // then\r
+        FetchDynamicConfig.getCBS();\r
+    }\r
+\r
+\r
+    @Test\r
+    public void shouldReturnTrueOnConfigurationChange() {\r
+        // given\r
+        FetchDynamicConfig.configFile = "src/test/resources/controller-config_singleline_ip.json";\r
+        FetchDynamicConfig.retCBSString = "{\"header.authflag\": \"1\", \"collector.schema.file\": \"{\\\"v1\\\": \\\"./etc/CommonEventFormat_27.2.json\\\", \\\"v2\\\": \\\"./etc/CommonEventFormat_27.2.json\\\", \\\"v3\\\": \\\"./etc/CommonEventFormat_27.2.json\\\", \\\"v4\\\": \\\"./etc/CommonEventFormat_27.2.json\\\", \\\"v5\\\": \\\"./etc/CommonEventFormat_28.4.json\\\"}\", \"collector.keystore.passwordfile\": \"/opt/app/dcae-certificate/.password\", \"tomcat.maxthreads\": \"200\", \"collector.dmaap.streamid\": \"fault=ves-fault|syslog=ves-syslog|heartbeat=ves-heartbeat|measurementsForVfScaling=ves-measurement|mobileFlow=ves-mobileflow|other=ves-other|stateChange=ves-statechange|thresholdCrossingAlert=ves-thresholdCrossingAlert|voiceQuality=ves-voicequality|sipSignaling=ves-sipsignaling\", \"streams_subscribes\": {}, \"collector.inputQueue.maxPending\": \"8096\", \"collector.keystore.alias\": \"dynamically generated\", \"streams_publishes\": {\"ves-mobileflow\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590629043\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-MOBILEFLOW-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-measurement\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590433916\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-ENC-MEASUREMENT-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-voicequality\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590778397\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-VES-VOICEQUALITY-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-thresholdCrossingAlert\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590728150\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-TCA-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-fault\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590384670\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-FAULT-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-heartbeat\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590530041\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-HEARTBEAT-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-sipsignaling\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590828736\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-VES-SIPSIGNALING-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-syslog\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590482019\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-SYSLOG-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-other\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590581045\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-OTHER-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}, \"ves-statechange\": {\"type\": \"message_router\", \"dmaap_info\": {\"client_id\": \"1517590677649\", \"client_role\": \"com.att.secCollector.member\", \"location\": \"rdm5bdcc2\", \"topic_url\": \"https://DMAAPHOST:3905/events/com.att.dcae.dmaap.FTL.24256-SEC-STATECHANGE-OUTPUT-v1\"}, \"aaf_username\": \"userid@namespace\", \"aaf_password\": \"authpwd\"}}, \"collector.schema.checkflag\": \"1\", \"services_calls\": {}, \"event.transform.flag\": \"1\", \"collector.keystore.file.location\": \"/opt/app/dcae-certificate/keystore.jks\", \"header.authlist\": \"sample1,c2FtcGxlMQ==|userid1,base64encodepwd1|userid2,base64encodepwd2\", \"collector.service.secure.port\": \"8443\", \"collector.service.port\": \"-1\"}";\r
+\r
+        // when\r
+        boolean didConfigsChange = FetchDynamicConfig.verifyConfigChange();\r
+\r
+        // then\r
+        assertTrue(didConfigsChange);\r
+    }\r
+\r
 }\r
 \r
index 765d9c6..ee0a3cb 100644 (file)
@@ -7,9 +7,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  */
 package org.onap.dcae.vestest;
 
-import static org.junit.Assert.*;
-
-import java.io.FileReader;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.onap.dcae.vestest.TestingUtilities.correctQuotes;
+import static org.onap.dcae.vestest.TestingUtilities.createTemporaryFile;
 
+import com.github.fge.jackson.JsonLoader;
+import com.google.gson.JsonObject;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import org.json.JSONObject;
-import org.junit.After;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
-import org.onap.dcae.controller.FetchDynamicConfig;
 import org.onap.dcae.controller.LoadDynamicConfig;
 
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-
 public class TestLoadDynamicConfig {
 
-       LoadDynamicConfig lc;
-       String propop =  "src/test/resources/test_collector_ip_op.properties";
-       
-       
-       @Before
-       public void setUp() throws Exception {
-       
-               lc = new LoadDynamicConfig();
-
-       }
-
-       @After
-       public void tearDown() throws Exception {
-       }
+    private Path temporaryFile;
 
-       @Test
-       public void testLoad() {
+    @Before
+    public void setUp() {
+        temporaryFile = createTemporaryFile();
+    }
 
-               
-               Boolean flag=false;
-               
+    @Test
+    public void shouldReadFileContent() throws IOException {
+        // given
+        String expectedJSON = correctQuotes("{ 'field' : 1 }");
+        Files.write(temporaryFile, expectedJSON.getBytes());
 
-               lc.propFile = "src/test/resources/test_collector_ip_op.properties";
-               lc.configFile = "src/test/resources/controller-config_dmaap_ip.json";
-               
-               String data = LoadDynamicConfig.readFile(propop);
-               assertEquals(data.isEmpty(), flag);
-       }
+        // when
+        String readFileContent = LoadDynamicConfig.readFile(temporaryFile.toString());
 
+        // then
+        assertEquals(JsonLoader.fromString(expectedJSON), JsonLoader.fromString(readFileContent));
+    }
 
-       @Test
-       public void testwrite() {
+    @Test
+    public void shouldWriteFileAndAttachDMaaPRelatedPropertiesFromConfiguration() {
+        // given
+        LoadDynamicConfig loadDynamicConfig = new LoadDynamicConfig();
+        loadDynamicConfig.propFile = "src/test/resources/test_collector_ip_op.properties";
+        loadDynamicConfig.configFile = "src/test/resources/controller-config_dmaap_ip.json";
+        loadDynamicConfig.dmaapoutputfile = temporaryFile.toString();
+        String sampleConfiguration = LoadDynamicConfig.readFile(loadDynamicConfig.configFile);
 
-               
-               Boolean flag=false;
-               
-               lc.propFile = "src/test/resources/test_collector_ip_op.properties";
-               lc.configFile = "src/test/resources/controller-config_dmaap_ip.json";
-               lc.dmaapoutputfile = "src/test/resources/DmaapConfig-op.json";
-               
-               String data = LoadDynamicConfig.readFile(lc.configFile);
-               JSONObject jsonObject = new JSONObject(data);
-               lc.writeconfig(jsonObject);
+        // when
+        loadDynamicConfig.writeconfig(new JSONObject(sampleConfiguration));
 
-               try{
-                        JsonParser parser = new JsonParser();
-                       FileReader fr = new FileReader ( lc.dmaapoutputfile );
-                       final JsonObject jo =  (JsonObject) parser.parse (fr);
-                       final String jsonText = jo.toString ();
-                       jsonObject = new JSONObject ( jsonText );
-               }
-               catch(Exception e){
-                       System.out.println("Exception while opening the file");
-                       e.printStackTrace();
-               }
-               if(jsonObject.has("ves-fault-secondary"))
-               {
-                       flag = true;
-               }
-               
-               assertEquals(true, flag);
+        // then
+        JsonObject actuallyWrittenJSONContent = TestingUtilities.readJSONFromFile(temporaryFile);
+        assertTrue(actuallyWrittenJSONContent.has("ves-fault-secondary"));
+    }
 
-       }
 }
 
diff --git a/src/test/java/org/onap/dcae/vestest/TestingUtilities.java b/src/test/java/org/onap/dcae/vestest/TestingUtilities.java
new file mode 100644 (file)
index 0000000..43e7a84
--- /dev/null
@@ -0,0 +1,84 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * org.onap.dcaegen2.collectors.ves
+ * ================================================================================
+ * Copyright (C) 2018 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcae.vestest;
+
+import static java.nio.file.Files.readAllBytes;
+
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+/**
+ * @author Pawel Szalapski (pawel.szalapski@nokia.com)
+ */
+final class TestingUtilities {
+
+    private TestingUtilities() {
+        // utility class, no objects allowed
+    }
+
+    static String correctQuotes(String s) {
+        return s.replace("'", "\"");
+    }
+
+    static JsonObject readJSONFromFile(Path path) {
+        return rethrow(() -> (JsonObject) new JsonParser().parse(new String(readAllBytes(path))));
+    }
+
+    static Path createTemporaryFile() {
+        return rethrow(() -> {
+            Path temporaryDirectory = Files.createTempDirectory("temporaryDirectory");
+            Path temporaryFile = TestingUtilities.createFile(temporaryDirectory + "/testFile");
+            TestingUtilities.scheduleToBeDeletedAfterTests(temporaryDirectory);
+            TestingUtilities.scheduleToBeDeletedAfterTests(temporaryFile);
+            return temporaryFile;
+        });
+    }
+
+    private static Path createFile(String path) {
+        return rethrow(() -> Files.createFile(Paths.get(path)));
+    }
+
+    private static void scheduleToBeDeletedAfterTests(Path path) {
+        path.toFile().deleteOnExit();
+    }
+
+    /**
+     * Exception in test case usually means there is something wrong, it should never be catched, but rather thrown to
+     * be handled by JUnit framework.
+     */
+    private static <T> T rethrow(CheckedSupplier<T> supplier) {
+        try {
+            return supplier.get();
+        } catch (Exception e) {
+            throw new RuntimeException();
+        }
+    }
+
+    @FunctionalInterface
+    interface CheckedSupplier<T> {
+
+        T get() throws Exception;
+    }
+
+
+}