package org.jooby.internal; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.expectLastCall; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.jooby.MediaType; import org.jooby.Renderer; import org.jooby.test.MockUnit; import org.jooby.test.MockUnit.Block; import org.junit.Test; public class InputStreamRendererTest { private Block defaultType = unit -> { Renderer.Context ctx = unit.get(Renderer.Context.class); expect(ctx.type(MediaType.octetstream)).andReturn(ctx); }; @Test public void render() throws Exception { new MockUnit(Renderer.Context.class, InputStream.class) .expect(defaultType) .expect(unit -> { Renderer.Context ctx = unit.get(Renderer.Context.class); ctx.send(unit.get(InputStream.class)); }) .run(unit -> { BuiltinRenderer.stream .render(unit.get(InputStream.class), unit.get(Renderer.Context.class)); }); } @Test public void renderIgnored() throws Exception { new MockUnit(Renderer.Context.class) .run(unit -> { BuiltinRenderer.stream .render(new Object(), unit.get(Renderer.Context.class)); }); } @Test(expected = IOException.class) public void renderWithFailure() throws Exception { new MockUnit(Renderer.Context.class, InputStream.class, OutputStream.class) .expect(defaultType) .expect(unit -> { Renderer.Context ctx = unit.get(Renderer.Context.class); ctx.send(unit.get(InputStream.class)); expectLastCall().andThrow(new IOException("intentational err")); }) .run(unit -> { BuiltinRenderer.stream .render(unit.get(InputStream.class), unit.get(Renderer.Context.class)); }); } }