package org.jooby.undertow; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.expectLastCall; import static org.easymock.EasyMock.isA; import org.jooby.internal.undertow.UndertowRequest; import org.jooby.internal.undertow.UndertowResponse; import org.jooby.spi.NativeWebSocket; import org.jooby.test.MockUnit; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import io.undertow.Handlers; import io.undertow.server.HttpServerExchange; import io.undertow.websockets.WebSocketConnectionCallback; import io.undertow.websockets.WebSocketProtocolHandshakeHandler; @RunWith(PowerMockRunner.class) @PrepareForTest({UndertowResponse.class, HttpServerExchange.class, Handlers.class }) public class UndertowResponseTest { @Test public void newObject() throws Exception { new MockUnit(HttpServerExchange.class) .run(unit -> { new UndertowResponse(unit.get(HttpServerExchange.class)); }); } @Test public void end() throws Exception { new MockUnit(HttpServerExchange.class, NativeWebSocket.class, WebSocketProtocolHandshakeHandler.class) .expect(unit -> { HttpServerExchange exchange = unit.get(HttpServerExchange.class); NativeWebSocket ws = unit.get(NativeWebSocket.class); expect(exchange.getAttachment(UndertowRequest.SOCKET)).andReturn(ws); expect(exchange.removeAttachment(UndertowRequest.SOCKET)).andReturn(null); expect(exchange.endExchange()).andReturn(exchange); }) .expect(unit -> { WebSocketProtocolHandshakeHandler wsphh = unit .get(WebSocketProtocolHandshakeHandler.class); wsphh.handleRequest(unit.get(HttpServerExchange.class)); expectLastCall().andThrow(new IllegalStateException("intentional err")); unit.mockStatic(Handlers.class); expect(Handlers.websocket(isA(WebSocketConnectionCallback.class))).andReturn(wsphh); }) .run(unit -> { new UndertowResponse(unit.get(HttpServerExchange.class)).end(); }); } }