From 19a3bc3313ea73b707499c1f003409aee3181255 Mon Sep 17 00:00:00 2001 From: Joss Armstrong Date: Thu, 17 Jan 2019 10:21:13 +0000 Subject: [PATCH] Fix intermittent time based test failures Fix bug in test code causing intermittent failure and tidy up test code in package Issue-ID: APPC-1331 Change-Id: Ic03b189a797ed6b88c868ec21c79ef037224fcb7 Signed-off-by: Joss Armstrong --- .../test/java/org/onap/appc/util/JsonUtilTest.java | 14 +- .../org/onap/appc/util/MessageFormatterTest.java | 21 + .../java/org/onap/appc/util/PathContextTest.java | 4 +- .../java/org/onap/appc/util/StreamHelperTest.java | 5 +- .../java/org/onap/appc/util/StringHelperTest.java | 31 +- .../appc/util/TestStructuredPropertyHelper.java | 21 +- .../src/test/java/org/onap/appc/util/TimeTest.java | 56 +- .../onap/appc/util/UnmodifiablePropertiesTest.java | 661 ++++++++++----------- 8 files changed, 414 insertions(+), 399 deletions(-) diff --git a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/JsonUtilTest.java b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/JsonUtilTest.java index 9de45545c..0ec8dabb6 100644 --- a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/JsonUtilTest.java +++ b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/JsonUtilTest.java @@ -5,6 +5,8 @@ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Copyright (C) 2017 Amdocs + * ================================================================================ + * Modifications Copyright (C) 2019 Ericsson * ============================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,18 +25,16 @@ package org.onap.appc.util; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonParseException; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import java.io.FileNotFoundException; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - import java.io.IOException; import java.util.HashMap; import java.util.Map; +import org.junit.Test; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonParseException; -import static org.junit.Assert.*; public class JsonUtilTest { diff --git a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/MessageFormatterTest.java b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/MessageFormatterTest.java index fe7d1a532..0efce8f81 100644 --- a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/MessageFormatterTest.java +++ b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/MessageFormatterTest.java @@ -1,3 +1,24 @@ +/* + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2019 Ericsson + * ============================================================================= + * 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.appc.util; import static org.junit.Assert.assertEquals; diff --git a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/PathContextTest.java b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/PathContextTest.java index ef538d2e1..a862455e3 100644 --- a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/PathContextTest.java +++ b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/PathContextTest.java @@ -5,6 +5,8 @@ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Copyright (C) 2018 Nokia Solutions and Networks + * ================================================================================ + * Modifications Copyright (C) 2019 Ericsson * ============================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,8 +24,8 @@ */ package org.onap.appc.util; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; import java.util.Map; import org.junit.Before; import org.junit.Test; diff --git a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/StreamHelperTest.java b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/StreamHelperTest.java index 73c32d644..300a77466 100644 --- a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/StreamHelperTest.java +++ b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/StreamHelperTest.java @@ -5,6 +5,8 @@ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Copyright (C) 2017 Amdocs + * ================================================================================ + * Modifications Copyright (C) 2019 Ericsson * ============================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,8 +25,9 @@ package org.onap.appc.util; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import java.io.ByteArrayInputStream; import org.junit.Test; diff --git a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/StringHelperTest.java b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/StringHelperTest.java index 1022440b0..5539630d2 100644 --- a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/StringHelperTest.java +++ b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/StringHelperTest.java @@ -7,6 +7,8 @@ * Copyright (C) 2018 Nokia Solutions and Networks * ============================================================================= * Modifications Copyright (C) 2018 IBM + * ================================================================================ + * Modifications Copyright (C) 2019 Ericsson * ============================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -55,41 +57,40 @@ public class StringHelperTest { assertEquals(".*", StringHelper.convertToRegex("")); assertEquals(".*", StringHelper.convertToRegex(" ")); } - + @Test public void convertToRegex_should_return_proper_regex_when_we_provide_a_proper_string_expression(){ - String expected=".*test\\.jpg.test123\\.jpeg$"; - assertEquals(expected,StringHelper.convertToRegex("*test.jpg+test123.jpeg")); + String expected = ".*test\\.jpg.test123\\.jpeg$"; + assertEquals(expected, StringHelper.convertToRegex("*test.jpg+test123.jpeg")); } - + @Test public void test_ResolveToType_with_null_as_input(){ assertNull(StringHelper.resolveToType(null)); } - + @Test public void test_ResolveToType_with_integer_as_input(){ - Integer expected=-112; - assertEquals(expected,StringHelper.resolveToType("-112")); + Integer expected = -112; + assertEquals(expected, StringHelper.resolveToType("-112")); } - + @Test public void test_ResolveToType_with_double_as_input(){ - Double expected=-112.12; - assertEquals(expected,StringHelper.resolveToType("-112.12")); + Double expected = -112.12; + assertEquals(expected, StringHelper.resolveToType("-112.12")); } - + @Test public void test_ResolveToType_with_boolean_as_input(){ - Boolean expected=true; - assertEquals(expected,StringHelper.resolveToType("true")); + Boolean expected = true; + assertEquals(expected, StringHelper.resolveToType("true")); } - + @Test public void test_ResolveToType_with_date_as_input(){ assertTrue(StringHelper.resolveToType("1994-11-05T08:15:30-05:00") instanceof Date); } - @Test public void getShortenedString_should_return_null_when_given_null(){ diff --git a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/TestStructuredPropertyHelper.java b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/TestStructuredPropertyHelper.java index e61531a8b..8011d4e22 100644 --- a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/TestStructuredPropertyHelper.java +++ b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/TestStructuredPropertyHelper.java @@ -7,6 +7,8 @@ * Copyright (C) 2017 Amdocs * ============================================================================= * Modifications Copyright (C) 2018 IBM. + * ================================================================================ + * Modifications Copyright (C) 2019 Ericsson * ============================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,8 +27,13 @@ package org.onap.appc.util; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; import java.util.Properties; @@ -199,7 +206,6 @@ public class TestStructuredPropertyHelper { fail("Unknown provider " + node.toString()); } } - // System.out.println(nodes); } /** @@ -232,9 +238,8 @@ public class TestStructuredPropertyHelper { } } } - // System.out.println(nodes); } - + @Test public void testToStringWithValue() { @@ -242,10 +247,10 @@ public class TestStructuredPropertyHelper { Node node = nodes.get(0); node.setName("testName"); node.setValue("testValue"); - String str= node.toString(); + String str = node.toString(); assertEquals("testName = testValue",str); } - + @Test public void testEquals() { @@ -257,7 +262,7 @@ public class TestStructuredPropertyHelper { node1.setValue("testValue"); assertTrue(node0.equals(node1)); } - + @Test public void testEqualsWithSameNameAndDifferentValue() { @@ -269,7 +274,7 @@ public class TestStructuredPropertyHelper { node1.setValue("testValue2"); assertFalse(node0.equals(node1)); } - + @Test public void testEqualsWithSameValueAndDifferentName() { diff --git a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/TimeTest.java b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/TimeTest.java index 3a73d7a2c..129a4aef1 100644 --- a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/TimeTest.java +++ b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/TimeTest.java @@ -5,6 +5,8 @@ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Modifications Copyright (C) 2018 IBM + * ================================================================================ + * Modifications Copyright (C) 2019 Ericsson * ============================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +31,8 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.text.ParseException; +import java.time.LocalDate; +import java.time.ZoneId; import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.util.Calendar; @@ -46,6 +50,10 @@ import org.junit.Test; public class TimeTest { + private final Date dateForTests = Date.from(LocalDate.of(2004, 2, 9) + .atStartOfDay(ZoneId.systemDefault()).toInstant()); + + @Test public void testAddTime() { @@ -78,10 +86,8 @@ public class TimeTest { @Test public void testGetCurrentUTCDate() { - Date utcDate = Time.getCurrentUTCDate(); - ZonedDateTime utc = ZonedDateTime.now(ZoneOffset.UTC); - + Date utcDate = Date.from(utc.toInstant()); long epochSecs = utc.toEpochSecond(); long utcSecs = utcDate.getTime() / 1000; @@ -94,78 +100,78 @@ public class TimeTest { final Date dateNow = new Date(); assertTrue(Time.endOfDayLocal(dateNow) instanceof Date); } - + @Test public void testGetDateByLocaleAndTimeZone() { - final Date dateNow = new Date("19-Jul-2018"); + final Date dateNow = new Date(); Locale locale = new Locale("fr"); TimeZone timeZone = TimeZone.getTimeZone("Europe/France"); assertNotNull(Time.getDateByLocaleAndTimeZone(dateNow,locale,timeZone)); assertTrue(Time.getDateByLocaleAndTimeZone(dateNow,locale,timeZone) instanceof String); } - + @Test public void testUtcFormat() { - final Date date = new Date("19-Jul-2018"); + final Date date = new Date(); assertNotNull(Time.utcFormat(date)); assertTrue(Time.utcFormat(date) instanceof String); } - + //this test succeeds if localTime() does not throw an exception @Test public void testLocalTime() { Time.localTime(1532083631); } - + @Test public void testSetDate() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2018); cal.set(Calendar.MONTH, 07); cal.set(Calendar.DAY_OF_MONTH, 03); - Calendar cal1= Time.setDate(cal, 2018, 07, 03); + Calendar cal1 = Time.setDate(cal, 2018, 07, 03); assertEquals(cal, cal1); } - + @Test public void testStartOfDayLocal() { assertTrue(Time.startOfDayLocal() instanceof Date); } - + @Test public void testTimeStamp() { assertTrue(Time.timestamp() instanceof XMLGregorianCalendar); } - + @Test public void testDateToStringConverterMillis() { - String dateString=Time.dateToStringConverterMillis(new Date("02/09/2004")); - String expected="2004-02-09 00:00:00:000"; + String dateString = Time.dateToStringConverterMillis(dateForTests); + String expected = "2004-02-09 00:00:00:000"; assertEquals(expected, dateString); } - + @Test public void testStringToDateConverterMillis() throws ParseException{ - Date date=Time.stringToDateConverterMillis("2004-02-09 00:00:00:000"); - Date expected=new Date("02/09/2004"); + Date date = Time.stringToDateConverterMillis("2004-02-09 00:00:00:000"); + Date expected = dateForTests; assertEquals(expected, date); } - + @Test public void testTruncateDate() throws ParseException{ - Date date=Time.truncDate(new Date("02/09/2004")); - Date expected=new Date("02/09/2004"); + Date date = Time.truncDate(dateForTests); + Date expected = dateForTests; assertEquals(expected, date); } - + @Test public void testToDate() throws ParseException, DatatypeConfigurationException{ - Date date=new Date("02/09/2004"); + Date date = dateForTests; GregorianCalendar c = new GregorianCalendar(); c.setTime(date); XMLGregorianCalendar calendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(c); - Date actual= Time.toDate(calendar); - Date expected=new Date("02/09/2004"); + Date actual = Time.toDate(calendar); + Date expected = dateForTests; assertEquals(expected, actual); } } diff --git a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/UnmodifiablePropertiesTest.java b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/UnmodifiablePropertiesTest.java index 87646d9c7..a3b896906 100644 --- a/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/UnmodifiablePropertiesTest.java +++ b/appc-core/appc-common-bundle/src/test/java/org/onap/appc/util/UnmodifiablePropertiesTest.java @@ -1,342 +1,319 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. 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.appc.util; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; -import org.hamcrest.CoreMatchers; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintStream; -import java.io.StringReader; -import java.util.Enumeration; -import java.util.Properties; - -public class UnmodifiablePropertiesTest { - - private static final String propKey1 = "testKey1"; - private static final String propKey2 = "testKey2"; - private static final String propValue1 = "testValue1"; - private static final String propValue2 = "testValue2"; - private static final String noKey = "unusedKey"; - private static final String noValue = "unusedValue"; - private static final String propHeader = "test header"; - private Properties properties = new Properties(); - - private UnmodifiableProperties unmodifiableProperties = new UnmodifiableProperties(properties); - private String desiredMessage = "Property cannot be modified!"; - - @Before - public void setUp() throws Exception { - properties.setProperty(propKey1, propValue1); - properties.setProperty(propKey2, propValue2); - } - - @Test(expected = UnsupportedOperationException.class) - public void testClear() { - try { - unmodifiableProperties.clear(); - } catch (UnsupportedOperationException exceptionMessage) { - Assert.assertEquals(desiredMessage, exceptionMessage.getMessage()); - throw exceptionMessage; - } - } - - @Test(expected = UnsupportedOperationException.class) - public void testClone() { - try { - unmodifiableProperties.clone(); - } catch (UnsupportedOperationException exceptionMessage) { - Assert.assertEquals(desiredMessage, exceptionMessage.getMessage()); - throw exceptionMessage; - } - } - - @Test - public final void testContainsObject() { - Assert.assertTrue(unmodifiableProperties.contains(propValue2)); - Assert.assertFalse(unmodifiableProperties.contains(noValue)); - } - - @Test - public final void testContainsKeyObject() { - Assert.assertTrue(unmodifiableProperties.containsKey(propKey1)); - Assert.assertFalse(unmodifiableProperties.containsKey(noKey)); - } - - @Test - public final void testContainsValueObject() { - Assert.assertTrue(unmodifiableProperties.containsValue(propValue1)); - Assert.assertFalse(unmodifiableProperties.containsValue(noValue)); - } - - @Test - public final void testElements() { - Enumeration propValues = unmodifiableProperties.elements(); - Assert.assertEquals(propValue2, propValues.nextElement()); - Assert.assertEquals(propValue1, propValues.nextElement()); - } - - @Test - public final void testEntrySet() { - // Expect entrySet=[testKey2=testValue2, testKey1=testValue1]. - Assert.assertEquals("Should match my properties K/V entries in setUp", properties.entrySet(), - unmodifiableProperties.entrySet()); - } - - @Test - public final void testEqualsObject() { - Assert.assertTrue(unmodifiableProperties.equals(properties)); - } - - @Test - public final void testGetObject() { - Assert.assertEquals(propValue2, unmodifiableProperties.get(propKey2)); - } - - @Test - public final void testGetPropertyString() { - Assert.assertEquals(propValue1, unmodifiableProperties.getProperty("testKey1")); - } - - @Test - public final void testGetPropertyStringString() { - Assert.assertEquals(propValue2, unmodifiableProperties.getProperty(propKey2, noValue)); - Assert.assertEquals(propValue2, unmodifiableProperties.getProperty(noKey, propValue2)); - } - - @Test - public final void testHashCode() { - Assert.assertEquals("Should match my properties.hashcode() int.", properties.hashCode(), - unmodifiableProperties.hashCode()); - } - - @Test - public final void testIsEmpty() { - Assert.assertFalse(unmodifiableProperties.isEmpty()); - } - - @Test - public final void testKeys() { - Enumeration propKeys = unmodifiableProperties.keys(); - Assert.assertEquals(propKey2, propKeys.nextElement()); - Assert.assertEquals(propKey1, propKeys.nextElement()); - } - - @Test - public final void testKeySet() { - // Expect keySet=[testKey2, testKey1]. - Assert.assertEquals("Should match my properties key entries in SetUp", properties.keySet(), - unmodifiableProperties.keySet()); - } - - @Test - public final void testListPrintStream() { - ByteArrayOutputStream propByteArray = new ByteArrayOutputStream(); - PrintStream listOut = new PrintStream(propByteArray); - unmodifiableProperties.list(listOut); - String propList = new String(propByteArray.toByteArray()); - Assert.assertThat(propList, CoreMatchers.containsString("testKey2=testValue2")); - Assert.assertThat(propList, CoreMatchers.containsString("testKey1=testValue1")); - } - - @Test - public final void testListPrintWriter() { - StringWriter listOut = new StringWriter(); - PrintWriter writer = new PrintWriter(listOut); - unmodifiableProperties.list(writer); - String propList = listOut.toString(); - Assert.assertThat(propList, CoreMatchers.containsString("testKey2=testValue2")); - Assert.assertThat(propList, CoreMatchers.containsString("testKey1=testValue1")); - } - - @Test - public final void testLoadInputStream() throws IOException { - InputStream mockInStream = Mockito.mock(InputStream.class); - try { - unmodifiableProperties.load(mockInStream); - } catch (IOException ex) { - } catch (UnsupportedOperationException exceptionMessage) { - Assert.assertEquals(desiredMessage, exceptionMessage.getMessage()); - } - } - - @Test(expected = UnsupportedOperationException.class) - public final void testLoadReader() throws IOException { - String dummyPair = "key3=testKey3\nvalue3=testValue3"; - StringReader reader = new StringReader(dummyPair); - try { - unmodifiableProperties.load(reader); - } catch (UnsupportedOperationException exceptionMessage) { - Assert.assertEquals(desiredMessage, exceptionMessage.getMessage()); - throw exceptionMessage; - } - } - - @Test - public final void testLoadFromXMLInputStream() throws IOException { - InputStream mockInStream = Mockito.mock(InputStream.class); - try { - unmodifiableProperties.loadFromXML(mockInStream); - } catch (IOException ex) { - } catch (UnsupportedOperationException exceptionMessage) { - Assert.assertEquals(desiredMessage, exceptionMessage.getMessage()); - } - } - - @Test - public final void testPropertyNames() { - Enumeration propNames = unmodifiableProperties.propertyNames(); - Assert.assertEquals(propKey2, propNames.nextElement()); - Assert.assertEquals(propKey1, propNames.nextElement()); - } - - @Test(expected = UnsupportedOperationException.class) - public final void testPutObjectObject() { - try { - unmodifiableProperties.put(propKey2, propValue1); - } catch (UnsupportedOperationException exceptionMessage) { - Assert.assertEquals(desiredMessage, exceptionMessage.getMessage()); - throw exceptionMessage; - } - } - - @Test(expected = UnsupportedOperationException.class) - public final void testPutAllMapOfQextendsObjectQextendsObject() { - try { - unmodifiableProperties.putAll(properties); - } catch (UnsupportedOperationException exceptionMessage) { - Assert.assertEquals(desiredMessage, exceptionMessage.getMessage()); - throw exceptionMessage; - } - } - - @Test(expected = UnsupportedOperationException.class) - public final void testRehash() { - try { - unmodifiableProperties.rehash(); - } catch (UnsupportedOperationException exceptionMessage) { - Assert.assertEquals(desiredMessage, exceptionMessage.getMessage()); - throw exceptionMessage; - } - } - - @Test(expected = UnsupportedOperationException.class) - public final void testRemoveObject() { - try { - unmodifiableProperties.remove(propKey1); - } catch (UnsupportedOperationException exceptionMessage) { - Assert.assertEquals(desiredMessage, exceptionMessage.getMessage()); - throw exceptionMessage; - } - } - - @Test - public final void testSaveOutputStreamString() { - // Appl method is deprecated, but I still added this test since it is reachable. - OutputStream propByteArray = new ByteArrayOutputStream(); - unmodifiableProperties.save(propByteArray, propHeader); - Assert.assertThat(propByteArray.toString(), CoreMatchers.startsWith("#test header")); - Assert.assertThat(propByteArray.toString(), CoreMatchers.containsString("testKey2=testValue2")); - Assert.assertThat(propByteArray.toString(), CoreMatchers.containsString("testKey1=testValue1")); - } - - @Test(expected = UnsupportedOperationException.class) - public final void testSetPropertyStringString() { - try { - unmodifiableProperties.setProperty(propKey1, propValue2); - } catch (UnsupportedOperationException exceptionMessage) { - Assert.assertEquals(desiredMessage, exceptionMessage.getMessage()); - throw exceptionMessage; - } - } - - @Test - public final void testSize() { - Assert.assertEquals(2, unmodifiableProperties.size()); - } - - @Test - public final void testStoreOutputStreamString() throws IOException { - OutputStream propByteArray = new ByteArrayOutputStream(); - unmodifiableProperties.store(propByteArray, propHeader); - // adds comment header and streams/appends properties file into propByteArray - // expected = "#test header\n#\ntestKey2=testValue2\ntestKey1=testValue1" - Assert.assertThat(propByteArray.toString(), CoreMatchers.startsWith("#test header")); - Assert.assertThat(propByteArray.toString(), CoreMatchers.containsString("testKey2=testValue2")); - Assert.assertThat(propByteArray.toString(), CoreMatchers.containsString("testKey1=testValue1")); - } - - @Test - public final void testStoreWriterString() throws IOException { - StringWriter writer = new StringWriter(); - unmodifiableProperties.store(writer, propHeader); - Assert.assertThat(writer.toString(), CoreMatchers.startsWith("#test header")); - Assert.assertThat(writer.toString(), CoreMatchers.containsString("testKey2=testValue2")); - Assert.assertThat(writer.toString(), CoreMatchers.containsString("testKey1=testValue1")); - } - - @Test - public final void testStoreToXMLOutputStreamString() throws IOException { - OutputStream propByteArray = new ByteArrayOutputStream(); - unmodifiableProperties.storeToXML(propByteArray, propHeader); - // adds XML comment header and streams/appends XML properties file into propByteArray - Assert.assertThat(propByteArray.toString(), CoreMatchers.containsString("test header")); - Assert.assertThat(propByteArray.toString(), - CoreMatchers.containsString("testValue2")); - Assert.assertThat(propByteArray.toString(), - CoreMatchers.containsString("testValue1")); - } - - @Test - public final void testStoreToXMLOutputStreamStringString() throws IOException { - OutputStream propByteArray = new ByteArrayOutputStream(); - unmodifiableProperties.storeToXML(propByteArray, propHeader, "UTF-8"); - // adds XML comment header and streams/appends XML properties file into propByteArray - Assert.assertThat(propByteArray.toString(), CoreMatchers.containsString("test header")); - Assert.assertThat(propByteArray.toString(), - CoreMatchers.containsString("testValue2")); - Assert.assertThat(propByteArray.toString(), - CoreMatchers.containsString("testValue1")); - } - - @Test - public final void testStringPropertyNames() { - Assert.assertEquals(properties.stringPropertyNames(), unmodifiableProperties.stringPropertyNames()); - } - - @Test - public final void testToString() { - // toString=[{testKey2=testValue2, testKey1=testValue1}] - Assert.assertEquals(properties.toString(), unmodifiableProperties.toString()); - } - - @Test - public final void testValues() { - Assert.assertEquals(properties.values().toString(), unmodifiableProperties.values().toString()); - } -} +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Modifications Copyright (C) 2019 Ericsson + * ============================================================================= + * 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.appc.util; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.mockito.Mockito; +import org.hamcrest.CoreMatchers; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.PrintStream; +import java.io.StringReader; +import java.util.Enumeration; +import java.util.Properties; + +public class UnmodifiablePropertiesTest { + + private static final String propKey1 = "testKey1"; + private static final String propKey2 = "testKey2"; + private static final String propValue1 = "testValue1"; + private static final String propValue2 = "testValue2"; + private static final String noKey = "unusedKey"; + private static final String noValue = "unusedValue"; + private static final String propHeader = "test header"; + private Properties properties = new Properties(); + + private UnmodifiableProperties unmodifiableProperties = new UnmodifiableProperties(properties); + private String desiredMessage = "Property cannot be modified!"; + + @Rule + public ExpectedException expectedEx = ExpectedException.none(); + + @Before + public void setUp() throws Exception { + properties.setProperty(propKey1, propValue1); + properties.setProperty(propKey2, propValue2); + } + + @Test + public void testClear() { + expectedEx.expect(UnsupportedOperationException.class); + expectedEx.expectMessage(desiredMessage); + unmodifiableProperties.clear(); + } + + @Test + public void testClone() { + expectedEx.expect(UnsupportedOperationException.class); + expectedEx.expectMessage(desiredMessage); + unmodifiableProperties.clone(); + } + + @Test + public final void testContainsObject() { + Assert.assertTrue(unmodifiableProperties.contains(propValue2)); + Assert.assertFalse(unmodifiableProperties.contains(noValue)); + } + + @Test + public final void testContainsKeyObject() { + Assert.assertTrue(unmodifiableProperties.containsKey(propKey1)); + Assert.assertFalse(unmodifiableProperties.containsKey(noKey)); + } + + @Test + public final void testContainsValueObject() { + Assert.assertTrue(unmodifiableProperties.containsValue(propValue1)); + Assert.assertFalse(unmodifiableProperties.containsValue(noValue)); + } + + @Test + public final void testElements() { + Enumeration propValues = unmodifiableProperties.elements(); + Assert.assertEquals(propValue2, propValues.nextElement()); + Assert.assertEquals(propValue1, propValues.nextElement()); + } + + @Test + public final void testEntrySet() { + // Expect entrySet=[testKey2=testValue2, testKey1=testValue1]. + Assert.assertEquals("Should match my properties K/V entries in setUp", properties.entrySet(), + unmodifiableProperties.entrySet()); + } + + @Test + public final void testEqualsObject() { + Assert.assertTrue(unmodifiableProperties.equals(properties)); + } + + @Test + public final void testGetObject() { + Assert.assertEquals(propValue2, unmodifiableProperties.get(propKey2)); + } + + @Test + public final void testGetPropertyString() { + Assert.assertEquals(propValue1, unmodifiableProperties.getProperty("testKey1")); + } + + @Test + public final void testGetPropertyStringString() { + Assert.assertEquals(propValue2, unmodifiableProperties.getProperty(propKey2, noValue)); + Assert.assertEquals(propValue2, unmodifiableProperties.getProperty(noKey, propValue2)); + } + + @Test + public final void testHashCode() { + Assert.assertEquals("Should match my properties.hashcode() int.", properties.hashCode(), + unmodifiableProperties.hashCode()); + } + + @Test + public final void testIsEmpty() { + Assert.assertFalse(unmodifiableProperties.isEmpty()); + } + + @Test + public final void testKeys() { + Enumeration propKeys = unmodifiableProperties.keys(); + Assert.assertEquals(propKey2, propKeys.nextElement()); + Assert.assertEquals(propKey1, propKeys.nextElement()); + } + + @Test + public final void testKeySet() { + // Expect keySet=[testKey2, testKey1]. + Assert.assertEquals("Should match my properties key entries in SetUp", properties.keySet(), + unmodifiableProperties.keySet()); + } + + @Test + public final void testListPrintStream() { + ByteArrayOutputStream propByteArray = new ByteArrayOutputStream(); + PrintStream listOut = new PrintStream(propByteArray); + unmodifiableProperties.list(listOut); + String propList = new String(propByteArray.toByteArray()); + Assert.assertThat(propList, CoreMatchers.containsString("testKey2=testValue2")); + Assert.assertThat(propList, CoreMatchers.containsString("testKey1=testValue1")); + } + + @Test + public final void testListPrintWriter() { + StringWriter listOut = new StringWriter(); + PrintWriter writer = new PrintWriter(listOut); + unmodifiableProperties.list(writer); + String propList = listOut.toString(); + Assert.assertThat(propList, CoreMatchers.containsString("testKey2=testValue2")); + Assert.assertThat(propList, CoreMatchers.containsString("testKey1=testValue1")); + } + + @Test + public final void testLoadInputStream() throws IOException { + InputStream mockInStream = Mockito.mock(InputStream.class); + expectedEx.expect(UnsupportedOperationException.class); + expectedEx.expectMessage(desiredMessage); + unmodifiableProperties.load(mockInStream); + } + + @Test + public final void testLoadReader() throws IOException { + String dummyPair = "key3=testKey3\nvalue3=testValue3"; + StringReader reader = new StringReader(dummyPair); + expectedEx.expect(UnsupportedOperationException.class); + expectedEx.expectMessage(desiredMessage); + unmodifiableProperties.load(reader); + } + + @Test + public final void testLoadFromXMLInputStream() throws IOException { + InputStream mockInStream = Mockito.mock(InputStream.class); + expectedEx.expect(UnsupportedOperationException.class); + expectedEx.expectMessage(desiredMessage); + unmodifiableProperties.loadFromXML(mockInStream); + } + + @Test + public final void testPropertyNames() { + Enumeration propNames = unmodifiableProperties.propertyNames(); + Assert.assertEquals(propKey2, propNames.nextElement()); + Assert.assertEquals(propKey1, propNames.nextElement()); + } + + @Test + public final void testPutObjectObject() { + expectedEx.expect(UnsupportedOperationException.class); + expectedEx.expectMessage(desiredMessage); + unmodifiableProperties.put(propKey2, propValue1); + } + + @Test + public final void testPutAllMapOfQextendsObjectQextendsObject() { + expectedEx.expect(UnsupportedOperationException.class); + expectedEx.expectMessage(desiredMessage); + unmodifiableProperties.putAll(properties); + } + + @Test + public final void testRehash() { + expectedEx.expect(UnsupportedOperationException.class); + expectedEx.expectMessage(desiredMessage); + unmodifiableProperties.rehash(); + } + + @Test + public final void testRemoveObject() { + expectedEx.expect(UnsupportedOperationException.class); + expectedEx.expectMessage(desiredMessage); + unmodifiableProperties.remove(propKey1); + } + + @Test + public final void testSaveOutputStreamString() { + // Appl method is deprecated, but I still added this test since it is reachable. + OutputStream propByteArray = new ByteArrayOutputStream(); + unmodifiableProperties.save(propByteArray, propHeader); + Assert.assertThat(propByteArray.toString(), CoreMatchers.startsWith("#test header")); + Assert.assertThat(propByteArray.toString(), CoreMatchers.containsString("testKey2=testValue2")); + Assert.assertThat(propByteArray.toString(), CoreMatchers.containsString("testKey1=testValue1")); + } + + @Test + public final void testSetPropertyStringString() { + expectedEx.expect(UnsupportedOperationException.class); + expectedEx.expectMessage(desiredMessage); + unmodifiableProperties.setProperty(propKey1, propValue2); + } + + @Test + public final void testSize() { + Assert.assertEquals(2, unmodifiableProperties.size()); + } + + @Test + public final void testStoreOutputStreamString() throws IOException { + OutputStream propByteArray = new ByteArrayOutputStream(); + unmodifiableProperties.store(propByteArray, propHeader); + // adds comment header and streams/appends properties file into propByteArray + // expected = "#test header\n#\ntestKey2=testValue2\ntestKey1=testValue1" + Assert.assertThat(propByteArray.toString(), CoreMatchers.startsWith("#test header")); + Assert.assertThat(propByteArray.toString(), CoreMatchers.containsString("testKey2=testValue2")); + Assert.assertThat(propByteArray.toString(), CoreMatchers.containsString("testKey1=testValue1")); + } + + @Test + public final void testStoreWriterString() throws IOException { + StringWriter writer = new StringWriter(); + unmodifiableProperties.store(writer, propHeader); + Assert.assertThat(writer.toString(), CoreMatchers.startsWith("#test header")); + Assert.assertThat(writer.toString(), CoreMatchers.containsString("testKey2=testValue2")); + Assert.assertThat(writer.toString(), CoreMatchers.containsString("testKey1=testValue1")); + } + + @Test + public final void testStoreToXMLOutputStreamString() throws IOException { + OutputStream propByteArray = new ByteArrayOutputStream(); + unmodifiableProperties.storeToXML(propByteArray, propHeader); + // adds XML comment header and streams/appends XML properties file into propByteArray + Assert.assertThat(propByteArray.toString(), CoreMatchers.containsString("test header")); + Assert.assertThat(propByteArray.toString(), + CoreMatchers.containsString("testValue2")); + Assert.assertThat(propByteArray.toString(), + CoreMatchers.containsString("testValue1")); + } + + @Test + public final void testStoreToXMLOutputStreamStringString() throws IOException { + OutputStream propByteArray = new ByteArrayOutputStream(); + unmodifiableProperties.storeToXML(propByteArray, propHeader, "UTF-8"); + // adds XML comment header and streams/appends XML properties file into propByteArray + Assert.assertThat(propByteArray.toString(), CoreMatchers.containsString("test header")); + Assert.assertThat(propByteArray.toString(), + CoreMatchers.containsString("testValue2")); + Assert.assertThat(propByteArray.toString(), + CoreMatchers.containsString("testValue1")); + } + + @Test + public final void testStringPropertyNames() { + Assert.assertEquals(properties.stringPropertyNames(), unmodifiableProperties.stringPropertyNames()); + } + + @Test + public final void testToString() { + // toString=[{testKey2=testValue2, testKey1=testValue1}] + Assert.assertEquals(properties.toString(), unmodifiableProperties.toString()); + } + + @Test + public final void testValues() { + Assert.assertEquals(properties.values().toString(), unmodifiableProperties.values().toString()); + } +} -- 2.16.6