package ch.qos.logback.core.net; import static org.junit.Assert.assertEquals; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import org.junit.After; import org.junit.Before; import org.junit.Test; public class HardenedObjectInputStreamTest { ByteArrayOutputStream bos; ObjectOutputStream oos; HardenedObjectInputStream inputStream; String[] whitelist = new String[] {Innocent.class.getName()}; @Before public void setUp() throws Exception { bos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(bos); } @After public void tearDown() throws Exception { } @Test public void smoke() throws ClassNotFoundException, IOException { Innocent innocent = new Innocent(); innocent.setAnInt(1); innocent.setAnInteger(2); innocent.setaString("smoke"); Innocent back = writeAndRead(innocent); assertEquals(innocent, back); } private Innocent writeAndRead(Innocent innocent) throws IOException, ClassNotFoundException { writeObject(oos, innocent); ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); inputStream = new HardenedObjectInputStream(bis, whitelist); Innocent fooBack = (Innocent) inputStream.readObject(); inputStream.close(); return fooBack; } private void writeObject(ObjectOutputStream oos, Object o) throws IOException { oos.writeObject(o); oos.flush(); oos.close(); } }