@Test public void testServerCloseHandlersCloseFromServer() { serverCloseHandlers(true, s -> client.connect(testAddress, ar -> {})); await(); }
@Test public void testServerCloseHandlersCloseFromClient() { serverCloseHandlers(false, s -> client.connect(testAddress, ar -> ar.result().close())); await(); }
@Test public void testConnectInvalidHost() { assertNullPointerException(() -> client.connect(80, null, res -> {})); client.connect(1234, "127.0.0.2", res -> { assertTrue(res.failed()); assertFalse(res.succeeded()); assertNotNull(res.cause()); testComplete(); }); await(); }
@Test public void testConnectInvalidPort() { assertIllegalArgumentException(() -> client.connect(-1, "localhost", res -> {})); assertIllegalArgumentException(() -> client.connect(65536, "localhost", res -> {})); client.connect(9998, "localhost", res -> { assertTrue(res.failed()); assertFalse(res.succeeded()); assertNotNull(res.cause()); testComplete(); }); await(); }
@Test public void testReconnectAttemptsNotEnough() { client.close(); client = vertx.createNetClient(new NetClientOptions().setReconnectAttempts(100).setReconnectInterval(10)); client.connect(testAddress, (res) -> { assertFalse(res.succeeded()); assertTrue(res.failed()); testComplete(); }); await(); }
@Test public void testSniImplicitServerNameDisabledForShortname1() throws Exception { TLSTest test = new TLSTest() .clientTrust(Trust.SNI_JKS_HOST1) .address(SocketAddress.inetSocketAddress(4043, "host1")) .serverCert(Cert.SNI_JKS).sni(true); test.run(false); await(); }
@Test public void testListenOnPortNoHandler() { server.connectHandler(NetSocket::close); server.listen(1234, onSuccess(ns -> { client.connect(1234, "localhost", onSuccess(so -> { so.closeHandler(v -> { testComplete(); }); })); })); await(); }
@Test public void testListen() { server.connectHandler(NetSocket::close); server.listen(testAddress, onSuccess(ns -> { client.connect(testAddress, onSuccess(so -> { so.closeHandler(v -> { testComplete(); }); })); })); await(); }
@Test // SNI without server name should use the first keystore entry public void testSniWithoutServerNameUsesTheFirstKeyStoreEntry1() throws Exception { TLSTest test = new TLSTest() .clientTrust(Trust.SERVER_JKS) .serverCert(Cert.SNI_JKS).sni(true); test.run(true); await(); assertEquals("localhost", cnOf(test.clientPeerCert())); }
private void reconnectAttempts(int attempts) { client.close(); client = vertx.createNetClient(new NetClientOptions().setReconnectAttempts(attempts).setReconnectInterval(10)); //The server delays starting for a a few seconds, but it should still connect client.connect(testAddress, onSuccess(so -> testComplete())); // Start the server after a delay vertx.setTimer(2000, id -> startEchoServer(testAddress, s -> {})); await(); }
@Test // SNI present an unknown server public void testSniWithUnknownServer1() throws Exception { TLSTest test = new TLSTest() .clientTrust(Trust.SERVER_JKS) .serverCert(Cert.SNI_JKS).sni(true).serverName("unknown"); test.run(true); await(); assertEquals("localhost", cnOf(test.clientPeerCert())); }
@Test public void testSniWithServerNameTrust(){ TLSTest test = new TLSTest().clientTrust(Trust.SNI_JKS_HOST2) .clientCert(Cert.CLIENT_PEM_ROOT_CA) .requireClientAuth(true) .serverCert(Cert.SNI_JKS) .sni(true) .serverName("host2.com") .serverTrust(Trust.SNI_SERVER_ROOT_CA_AND_OTHER_CA_1); test.run(true); await(); }
@Test public void testSniWithServerNameTrustFail(){ TLSTest test = new TLSTest().clientTrust(Trust.SNI_JKS_HOST2) .clientCert(Cert.CLIENT_PEM_ROOT_CA) .requireClientAuth(true) .serverCert(Cert.SNI_JKS) .sni(true) .serverName("host2.com") .serverTrust(Trust.SNI_SERVER_ROOT_CA_AND_OTHER_CA_2); test.run(false); await(); }
@Test public void testSniWithServerNameTrustFallback(){ TLSTest test = new TLSTest().clientTrust(Trust.SNI_JKS_HOST2) .clientCert(Cert.CLIENT_PEM_ROOT_CA) .requireClientAuth(true) .serverCert(Cert.SNI_JKS) .sni(true) .serverName("host2.com") .serverTrust(Trust.SNI_SERVER_ROOT_CA_FALLBACK); test.run(true); await(); }
@Test public void testSniWithServerNameTrustFallbackFail(){ TLSTest test = new TLSTest().clientTrust(Trust.SNI_JKS_HOST2) .clientCert(Cert.CLIENT_PEM_ROOT_CA) .requireClientAuth(true) .serverCert(Cert.SNI_JKS) .sni(true) .serverName("host2.com") .serverTrust(Trust.SNI_SERVER_OTHER_CA_FALLBACK); test.run(false); await(); }
@Test public void testSniImplicitServerNameDisabledForShortname2() throws Exception { TLSTest test = new TLSTest() .clientTrust(Trust.SERVER_JKS) .address(SocketAddress.inetSocketAddress(4043, "host1")) .serverCert(Cert.SNI_JKS).sni(true); test.run(true); await(); assertEquals("localhost", cnOf(test.clientPeerCert())); }
@Test // SNI returns the certificate for the indicated server name public void testSniWithServerNameStartTLS() throws Exception { TLSTest test = new TLSTest() .clientTrust(Trust.SNI_JKS_HOST1) .startTLS(true) .serverCert(Cert.SNI_JKS).sni(true).serverName("host1"); test.run(true); await(); assertEquals("host1", cnOf(test.clientPeerCert())); }
@Test public void testSniImplicitServerName() throws Exception { TLSTest test = new TLSTest() .clientTrust(Trust.SNI_JKS_HOST2) .address(SocketAddress.inetSocketAddress(4043, "host2.com")) .serverCert(Cert.SNI_JKS).sni(true); test.run(true); await(); assertEquals("host2.com", cnOf(test.clientPeerCert())); assertEquals("host2.com", test.indicatedServerName); }
@Test public void testSniForceShortname() throws Exception { TLSTest test = new TLSTest() .clientTrust(Trust.SNI_JKS_HOST1) .address(SocketAddress.inetSocketAddress(4043, "host1")) .serverName("host1") .serverCert(Cert.SNI_JKS).sni(true); test.run(true); await(); assertEquals("host1", cnOf(test.clientPeerCert())); }
@Test public void testSniOverrideServerName() throws Exception { TLSTest test = new TLSTest() .clientTrust(Trust.SNI_JKS_HOST2) .address(SocketAddress.inetSocketAddress(4043, "example.com")) .serverName("host2.com") .serverCert(Cert.SNI_JKS).sni(true); test.run(true); await(); assertEquals("host2.com", cnOf(test.clientPeerCert())); }