use of io.vertx.ext.unit.TestContext in project vertx-proton by vert-x3.
the class ProtonServerImplTest method testCustomAuthenticatorFailsAuthentication.
@Test(timeout = 20000)
public void testCustomAuthenticatorFailsAuthentication(TestContext context) {
Async connectedAsync = context.async();
ProtonServer.create(vertx).saslAuthenticatorFactory(new TestPlainAuthenticatorFactory()).connectHandler(protonConnection -> {
context.fail("Handler should not be called for connection that failed authentication");
}).listen(server -> ProtonClient.create(vertx).connect("localhost", server.result().actualPort(), BAD_USER, PASSWD, protonConnectionAsyncResult -> {
context.assertFalse(protonConnectionAsyncResult.succeeded());
connectedAsync.complete();
}));
connectedAsync.awaitSuccess();
}
use of io.vertx.ext.unit.TestContext in project vertx-proton by vert-x3.
the class ProtonServerImplTest method doTestAsyncServerAuthenticatorTestImpl.
private void doTestAsyncServerAuthenticatorTestImpl(TestContext context, boolean passAuthentication) {
Async connectAsync = context.async();
AtomicBoolean connectedServer = new AtomicBoolean();
final long delay = 750;
TestAsyncAuthenticator testAsyncAuthenticator = new TestAsyncAuthenticator(delay, passAuthentication);
TestAsyncAuthenticatorFactory authenticatorFactory = new TestAsyncAuthenticatorFactory(testAsyncAuthenticator);
ProtonServer.create(vertx).saslAuthenticatorFactory(authenticatorFactory).connectHandler(protonConnection -> {
connectedServer.set(true);
}).listen(server -> {
final long startTime = System.currentTimeMillis();
ProtonClient.create(vertx).connect("localhost", server.result().actualPort(), GOOD_USER, PASSWD, conResult -> {
// Verify the process took expected time from auth delay.
long actual = System.currentTimeMillis() - startTime;
context.assertTrue(actual >= delay, "Connect completed before expected time delay elapsed! " + actual);
if (passAuthentication) {
context.assertTrue(conResult.succeeded(), "Expected connect to succeed");
conResult.result().disconnect();
} else {
context.assertFalse(conResult.succeeded(), "Expected connect to fail");
}
connectAsync.complete();
});
});
connectAsync.awaitSuccess();
if (passAuthentication) {
context.assertTrue(connectedServer.get(), "Server handler should have been called");
} else {
context.assertFalse(connectedServer.get(), "Server handler should not have been called");
}
context.assertEquals(1, authenticatorFactory.getCreateCount(), "unexpected authenticator creation count");
}
use of io.vertx.ext.unit.TestContext in project vertx-proton by vert-x3.
the class ProtonClientSaslTest method doConnectWithGivenCredentialsTestImpl.
private void doConnectWithGivenCredentialsTestImpl(TestContext context, ProtonClientOptions options, String username, String password, boolean expectConnectToSucceed) {
Async async = context.async();
// Connect the client and open the connection to verify it works
ProtonClient client = ProtonClient.create(vertx);
client.connect(options, "localhost", getBrokerAmqpConnectorPort(), username, password, res -> {
if (expectConnectToSucceed) {
// Expect connect to succeed
context.assertTrue(res.succeeded());
ProtonConnection connection = res.result();
connection.openHandler(connRes -> {
context.assertTrue(connRes.succeeded());
LOG.trace("Client connection open");
async.complete();
}).open();
} else {
// Expect connect to fail
context.assertFalse(res.succeeded());
LOG.trace("Connect failed");
async.complete();
}
});
async.awaitSuccess();
}
use of io.vertx.ext.unit.TestContext in project vertx-proton by vert-x3.
the class ProtonClientSslTest method doHostnameVerificationTestImpl.
private void doHostnameVerificationTestImpl(TestContext context, boolean verifyHost) throws Exception {
Async async = context.async();
// Create a server that accept a connection and expects a client connection+session+receiver
ProtonServerOptions serverOptions = new ProtonServerOptions();
serverOptions.setSsl(true);
PfxOptions serverPfxOptions = new PfxOptions().setPath(WRONG_HOST_KEYSTORE).setPassword(PASSWORD);
serverOptions.setPfxKeyCertOptions(serverPfxOptions);
protonServer = createServer(serverOptions, this::handleClientConnectionSessionReceiverOpen);
// Connect the client and open a receiver to verify the connection works
ProtonClientOptions clientOptions = new ProtonClientOptions();
clientOptions.setSsl(true);
PfxOptions clientPfxOptions = new PfxOptions().setPath(TRUSTSTORE).setPassword(PASSWORD);
clientOptions.setPfxTrustOptions(clientPfxOptions);
// Verify/update the hostname verification settings
context.assertEquals(VERIFY_HTTPS, clientOptions.getHostnameVerificationAlgorithm(), "expected host verification to be on by default");
if (!verifyHost) {
clientOptions.setHostnameVerificationAlgorithm(NO_VERIFY);
}
ProtonClient client = ProtonClient.create(vertx);
client.connect(clientOptions, "localhost", protonServer.actualPort(), res -> {
if (verifyHost) {
// Expect connect to fail as server cert hostname doesn't match.
context.assertFalse(res.succeeded(), "expected connect to fail");
LOG.trace("Connect failed");
async.complete();
} else {
// Expect connect to succeed as verification is disabled
context.assertTrue(res.succeeded(), "expected connect to succeed");
LOG.trace("Connect succeeded");
ProtonConnection connection = res.result();
connection.open();
ProtonReceiver receiver = connection.createReceiver("some-address");
receiver.openHandler(recvResult -> {
context.assertTrue(recvResult.succeeded());
LOG.trace("Client receiver open");
async.complete();
}).open();
}
});
async.awaitSuccess();
}
use of io.vertx.ext.unit.TestContext in project hono by eclipse.
the class AbstractVertxBasedHttpProtocolAdapterTest method testStartUsesClientProvidedHttpServer.
/**
* Verifies that a client provided HTTP server is started instead of creating and starting a new http server.
*
* @param ctx The helper to use for running async tests on vertx.
*/
@SuppressWarnings("unchecked")
@Test
public void testStartUsesClientProvidedHttpServer(final TestContext ctx) {
// GIVEN an adapter with a client provided HTTP server
final HttpServer server = getHttpServer(false);
final AbstractVertxBasedHttpProtocolAdapter<HttpProtocolAdapterProperties> adapter = getAdapter(server, null);
adapter.setCredentialsAuthProvider(credentialsAuthProvider);
// WHEN starting the adapter
final Async startup = ctx.async();
Future<Void> startupTracker = Future.future();
startupTracker.setHandler(ctx.asyncAssertSuccess(s -> {
startup.complete();
}));
adapter.start(startupTracker);
// THEN the client provided HTTP server has been configured and started
startup.await();
verify(server).requestHandler(any(Handler.class));
verify(server).listen(any(Handler.class));
}
Aggregations