package io.reactivex.netty.protocol.http.server; import io.reactivex.netty.protocol.http.internal.AbstractHttpConnectionBridge; import io.reactivex.netty.protocol.http.internal.AbstractHttpConnectionBridgeTest.AbstractHttpConnectionBridgeMock; import io.reactivex.netty.protocol.http.internal.AbstractHttpConnectionBridgeTest.HandlerRule; import io.reactivex.netty.protocol.http.internal.HttpContentSubscriberEvent; import io.reactivex.netty.protocol.http.server.events.HttpServerEventPublisher; import io.reactivex.netty.protocol.tcp.server.events.TcpServerEventPublisher; import org.junit.Rule; import org.junit.Test; import rx.observers.TestSubscriber; import java.nio.channels.ClosedChannelException; public class HttpServerToConnectionBridgeTest { @Rule public final HandlerRule handlerRule = new HandlerRule() { @Override protected AbstractHttpConnectionBridge<String> newAbstractHttpConnectionBridgeMock() { return new HttpServerToConnectionBridge<>(new HttpServerEventPublisher(new TcpServerEventPublisher())); } }; @Test(timeout = 60000) public void testPendingContentSubscriber() throws Exception { handlerRule.setupAndAssertConnectionInputSub(); handlerRule.simulateHeaderReceive(); /*Simulate header receive, required for content sub.*/ TestSubscriber<String> subscriber = new TestSubscriber<>(); handlerRule.getChannel().pipeline().fireUserEventTriggered(new HttpContentSubscriberEvent<>(subscriber)); TestSubscriber<String> subscriber1 = new TestSubscriber<>(); handlerRule.getChannel().pipeline().fireUserEventTriggered(new HttpContentSubscriberEvent<>(subscriber1)); subscriber.assertNoErrors(); subscriber1.assertNoErrors(); subscriber.unsubscribe(); subscriber.assertUnsubscribed(); handlerRule.getChannel().close().await(); subscriber.assertNoErrors(); subscriber1.assertError(ClosedChannelException.class); } }