Skip to content

Commit 1e65083

Browse files
committed
Guard EncryptedProperties store operations due to Java 11 changes (GH #721)
1 parent a37e63b commit 1e65083

File tree

2 files changed

+117
-68
lines changed

2 files changed

+117
-68
lines changed

src/test/java/org/owasp/esapi/reference/crypto/EncryptedPropertiesUtilsTest.java

Lines changed: 65 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,27 @@ private final File getTempPropertiesFile() throws IOException {
8989
Object prop2 = EncryptedPropertiesUtils.addProperty(props, KEY2, VALUE2);
9090
assertNull("Expected null but returned: " + prop2, prop2);
9191

92-
//store the file
93-
EncryptedPropertiesUtils.storeProperties(encryptedFile.getAbsolutePath(), props, "Encrypted Properties File generated by EncryptedPropertiesUtilsTest");
94-
95-
//try reading in the resulting file
96-
ReferenceEncryptedProperties loadedProps = new ReferenceEncryptedProperties();
97-
loadedProps.load(new FileReader(encryptedFile.getAbsolutePath()));
98-
99-
assertEquals(VALUE1, loadedProps.getProperty(KEY1));
100-
assertEquals(VALUE2, loadedProps.getProperty(KEY2));
92+
// Probing for support for storeProperties due to Java 11 and GH #721
93+
boolean supported = true;
94+
try {
95+
//store the file
96+
EncryptedPropertiesUtils.storeProperties(encryptedFile.getAbsolutePath(), props, "Encrypted Properties File generated by EncryptedPropertiesUtilsTest");
97+
}
98+
catch ( UnsupportedOperationException ex ) {
99+
supported = false;
100+
}
101+
102+
if ( supported ) {
103+
//try reading in the resulting file
104+
ReferenceEncryptedProperties loadedProps = new ReferenceEncryptedProperties();
105+
loadedProps.load(new FileReader(encryptedFile.getAbsolutePath()));
106+
107+
assertEquals(VALUE1, loadedProps.getProperty(KEY1));
108+
assertEquals(VALUE2, loadedProps.getProperty(KEY2));
109+
}
110+
else {
111+
System.out.println("Skipping testCreateNew... storeProperties is not supported.");
112+
}
101113
}
102114

103115
/**
@@ -113,7 +125,7 @@ private final File getTempPropertiesFile() throws IOException {
113125
File encryptedFile = getTempPropertiesFile();
114126
File plainTextFile = getTempPropertiesFile();
115127

116-
//write an initial plaintext properties file
128+
//write an initial plaintext properties file
117129
Properties props = new Properties();
118130
props.setProperty(KEY3, VALUE3);
119131
props.setProperty(KEY4, VALUE4);
@@ -127,15 +139,27 @@ private final File getTempPropertiesFile() throws IOException {
127139
assertEquals(VALUE3, props.getProperty(KEY3));
128140
assertEquals(VALUE4, props.getProperty(KEY4));
129141

130-
//store the file
131-
EncryptedPropertiesUtils.storeProperties(encryptedFile.getAbsolutePath(), props, "Encrypted Properties File generated by EncryptedPropertiesUtilsTest");
132-
133-
//try reading in the resulting file
134-
ReferenceEncryptedProperties loadedProps = new ReferenceEncryptedProperties();
135-
loadedProps.load(new FileReader(encryptedFile.getAbsolutePath()));
136-
137-
assertEquals(VALUE3, loadedProps.getProperty(KEY3));
138-
assertEquals(VALUE4, loadedProps.getProperty(KEY4));
142+
// Probing for support for storeProperties due to Java 11 and GH #721
143+
boolean supported = true;
144+
try {
145+
//store the file
146+
EncryptedPropertiesUtils.storeProperties(encryptedFile.getAbsolutePath(), props, "Encrypted Properties File generated by EncryptedPropertiesUtilsTest");
147+
}
148+
catch ( UnsupportedOperationException ex ) {
149+
supported = false;
150+
}
151+
152+
if ( supported ) {
153+
//try reading in the resulting file
154+
ReferenceEncryptedProperties loadedProps = new ReferenceEncryptedProperties();
155+
loadedProps.load(new FileReader(encryptedFile.getAbsolutePath()));
156+
157+
assertEquals(VALUE3, loadedProps.getProperty(KEY3));
158+
assertEquals(VALUE4, loadedProps.getProperty(KEY4));
159+
}
160+
else {
161+
System.out.println("Skipping testLoadPlaintextAndEncrypt... storeProperties is not supported.");
162+
}
139163
}
140164

141165
/**
@@ -161,16 +185,28 @@ private final File getTempPropertiesFile() throws IOException {
161185
assertEquals(VALUE1, props.getProperty(KEY1));
162186
assertEquals(VALUE2, props.getProperty(KEY2));
163187

164-
//store the file
165-
EncryptedPropertiesUtils.storeProperties(encryptedFile2.getAbsolutePath(), props, "Encrypted Properties File generated by EncryptedPropertiesUtilsTest");
166-
167-
//try reading in the resulting file
168-
ReferenceEncryptedProperties loadedProps = new ReferenceEncryptedProperties();
169-
loadedProps.load(new FileReader(encryptedFile2.getAbsolutePath()));
170-
171-
//test the values read in
172-
assertEquals(VALUE1, loadedProps.getProperty(KEY1));
173-
assertEquals(VALUE2, loadedProps.getProperty(KEY2));
188+
// Probing for support for storeProperties due to Java 11 and GH #721
189+
boolean supported = true;
190+
try {
191+
//store the file
192+
EncryptedPropertiesUtils.storeProperties(encryptedFile2.getAbsolutePath(), props, "Encrypted Properties File generated by EncryptedPropertiesUtilsTest");
193+
}
194+
catch ( UnsupportedOperationException ex ) {
195+
supported = false;
196+
}
197+
198+
if ( supported ) {
199+
//try reading in the resulting file
200+
ReferenceEncryptedProperties loadedProps = new ReferenceEncryptedProperties();
201+
loadedProps.load(new FileReader(encryptedFile2.getAbsolutePath()));
202+
203+
//test the values read in
204+
assertEquals(VALUE1, loadedProps.getProperty(KEY1));
205+
assertEquals(VALUE2, loadedProps.getProperty(KEY2));
206+
}
207+
else {
208+
System.out.println("Skipping testLoadEncryptedAndAdd... storeProperties is not supported.");
209+
}
174210
}
175211

176212
}

src/test/java/org/owasp/esapi/reference/crypto/ReferenceEncryptedPropertiesTest.java

Lines changed: 52 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -154,58 +154,71 @@ else if(key.equals("two"))
154154
boolean sawSeuss = false;
155155

156156
ReferenceEncryptedProperties toStore = new ReferenceEncryptedProperties();
157-
toStore.setProperty("one", "two");
158-
toStore.setProperty("two", "three");
159-
toStore.setProperty("seuss.schneier", "one fish, twofish, red fish, blowfish");
160-
toStore.store(baos, "testStore");
161157

162-
bais = new ByteArrayInputStream(baos.toByteArray());
163-
toLoad.load(bais);
158+
// Probing for support for store due to Java 11 and GH #721
159+
boolean supported = true;
160+
try {
161+
toStore.setProperty("one", "two");
162+
toStore.setProperty("two", "three");
163+
toStore.setProperty("seuss.schneier", "one fish, twofish, red fish, blowfish");
164+
toStore.store(baos, "testStore");
165+
}
166+
catch ( UnsupportedOperationException ex ) {
167+
supported = false;
168+
}
164169

165-
for(Iterator i=toLoad.keySet().iterator();i.hasNext();)
166-
{
167-
String key = (String)i.next();
170+
if ( supported ) {
171+
bais = new ByteArrayInputStream(baos.toByteArray());
172+
toLoad.load(bais);
168173

169-
assertNotNull("key returned from keySet() iterator was null", key);
170-
if(key.equals("one"))
171-
if(sawOne)
172-
fail("Key one seen more than once.");
173-
else
174-
{
175-
sawOne = true;
176-
assertEquals("Key one's value was not two", "two", toLoad.getProperty("one"));
177-
}
178-
else if(key.equals("two"))
179-
if(sawTwo)
180-
fail("Key two seen more than once.");
181-
else
182-
{
183-
sawTwo = true;
184-
assertEquals("Key two's value was not three", "three", toLoad.getProperty("two"));
185-
}
186-
else if(key.equals("seuss.schneier"))
187-
if(sawSeuss)
188-
fail("Key seuss.schneier seen more than once.");
174+
for(Iterator i=toLoad.keySet().iterator();i.hasNext();)
175+
{
176+
String key = (String)i.next();
177+
178+
assertNotNull("key returned from keySet() iterator was null", key);
179+
if(key.equals("one"))
180+
if(sawOne)
181+
fail("Key one seen more than once.");
189182
else
190183
{
191-
sawSeuss = true;
192-
assertEquals("Key seuss.schneier's value was not expected value",
193-
"one fish, twofish, red fish, blowfish",
194-
toStore.getProperty("seuss.schneier"));
184+
sawOne = true;
185+
assertEquals("Key one's value was not two", "two", toLoad.getProperty("one"));
195186
}
196-
else
197-
fail("Unset key " + key + " returned from keySet().iterator()");
187+
else if(key.equals("two"))
188+
if(sawTwo)
189+
fail("Key two seen more than once.");
190+
else
191+
{
192+
sawTwo = true;
193+
assertEquals("Key two's value was not three", "three", toLoad.getProperty("two"));
194+
}
195+
else if(key.equals("seuss.schneier"))
196+
if(sawSeuss)
197+
fail("Key seuss.schneier seen more than once.");
198+
else
199+
{
200+
sawSeuss = true;
201+
assertEquals("Key seuss.schneier's value was not expected value",
202+
"one fish, twofish, red fish, blowfish",
203+
toStore.getProperty("seuss.schneier"));
204+
}
205+
else
206+
fail("Unset key " + key + " returned from keySet().iterator()");
207+
}
208+
assertTrue("Key one was never seen", sawOne);
209+
assertTrue("Key two was never seen", sawTwo);
210+
}
211+
else {
212+
System.out.println("Skipping testStoreLoad... store is not supported.");
198213
}
199-
assertTrue("Key one was never seen", sawOne);
200-
assertTrue("Key two was never seen", sawTwo);
201214
}
202215

203216
/**
204217
* Test storing and loading of encrypted properties.
205218
*/
206219
@Test public void testStoreLoadWithReader() throws Exception
207220
{
208-
/*
221+
/*
209222
//create an EncryptedProperties to store
210223
ReferenceEncryptedProperties toStore = new ReferenceEncryptedProperties();
211224
toStore.setProperty("one", "two");
@@ -263,7 +276,7 @@ else if(key.equals("seuss.schneier"))
263276
}
264277
assertTrue("Key one was never seen", sawOne);
265278
assertTrue("Key two was never seen", sawTwo);
266-
*/
279+
*/
267280
}
268281

269282
/**

0 commit comments

Comments
 (0)