/** * Completion handler to receive a completion signal when this completions completes. * @param completionHandler the completion handler */ public void handler(Handler<AsyncResult<Void>> completionHandler) { delegate.handler(completionHandler); }
/** * Completes the future upon completion, otherwise fails it. * @param future the future to resolve */ public void resolve(io.vertx.rxjava.core.Future<Void> future) { delegate.resolve(future.getDelegate()); }
private void connect(DoubleHandler<ILdapClientConnection, TestContext> handler) { TestCompletion completion = TestSuite.create("").test("", context -> { Async async = context.async(); ldapClientComponent.connect(config, connectionResult -> { context.assertTrue(connectionResult.isSuccess()); connection = connectionResult.getResult(); handler.handle(connection, context); async.complete(); }); async.awaitSuccess(); }).run(); completion.awaitSuccess(); }
@Test public void testAsyncCompletion() { for (int i = 0;i < 128;i++) { TestSuite suite = TestSuite.create("the-suite").test("the-test", ctx -> { // Try to create an async asynchronously // this might succeed or not depending on race agains the testsuite runner thread // which is fine, but we want to check that when it wins the race there // are no deadlocks (which is why we repeat this test several times) new Thread(() -> { Async async = ctx.async(); sleepQuietly(10); async.complete(); sleepQuietly(10); }).start(); sleepQuietly(10); }); suite.run().await(1000); } }
@Test public void bindPasswordSuccess() throws InterruptedException { config.setBindDn("uid=admin,ou=system"); config.setBindPassword("secret"); TestCompletion completion = TestSuite.create("").test("", context -> { Async async = context.async(); ldapClientComponent.bind(config, result -> { if (result.isError()) result.getError().printStackTrace(System.out); context.assertTrue(result.isSuccess()); context.assertTrue(result.getResult().getResultCode().equals(LdapResultCode.SUCCESS)); async.complete(); }); async.awaitSuccess(); }).run(); completion.awaitSuccess(); }
/** * Completion handler to receive a completion signal when this completions completes. * @param completionHandler the completion handler */ public void handler(Handler<AsyncResult<Void>> completionHandler) { delegate.handler(completionHandler); }
@Test public void shouldFailWhenOuInvalid() throws InterruptedException { config.setBindDn("uid=admin,ou=tacos"); config.setBindPassword("secret"); TestCompletion completion = TestSuite.create("").test("", context -> { Async async = context.async(); ldapClientComponent.bind(config, result -> { if (result.isError()) result.getError().printStackTrace(System.out); context.assertTrue(result.isSuccess()); context.assertTrue(result.getResult().getResultCode().equals(LdapResultCode.INVALID_CREDENTIALS)); async.complete(); }); async.awaitSuccess(); }).run(); completion.awaitSuccess(); }
/** * Completes the future upon completion, otherwise fails it. * @param future the future to resolve */ public void resolve(io.vertx.rxjava.core.Future<Void> future) { delegate.resolve(future.getDelegate()); }
@org.junit.Test public void testReportSucceededToCompletionHandler() { TestSuite suite = TestSuite.create("my_suite").test("first_test", context -> {}); suite.run(new TestOptions()).handler(ar -> { assertTrue(ar.succeeded()); testComplete(); }); await(); }
@Test public void shouldConnectSuccessfully() throws InterruptedException { config.setBindDn("uid=admin,ou=system"); config.setBindPassword("secret"); TestCompletion completion = TestSuite.create("").test("", context -> { Async async = context.async(); ldapClientComponent.connect(config, connectionResult -> { context.assertTrue(connectionResult.isSuccess()); connection = connectionResult.getResult(); async.complete(); }); async.awaitSuccess(); }).run(); completion.awaitSuccess(); }
@org.junit.Test public void testReportToFailureCompletionHandler() { RuntimeException e = new RuntimeException(); Handler<TestContext> fails = context -> { throw e; }; Handler<TestContext> pass = context -> { }; TestSuite[] suites = { TestSuite.create("my_suite").test("first_test", fails), TestSuite.create("my_suite").before(fails).test("first_test", pass), TestSuite.create("my_suite").test("first_test", pass).after(fails) }; AtomicInteger count = new AtomicInteger(); for (TestSuite suite : suites) { suite.run(new TestOptions()).handler(ar -> { assertTrue(ar.failed()); assertSame(e, ar.cause()); if (count.incrementAndGet() == 3) { testComplete(); } }); } await(); } }
@Test public void shouldFailWhenUidInvalid() throws InterruptedException { config.setBindDn("uid=tacos,ou=system"); config.setBindPassword("secret"); TestCompletion completion = TestSuite.create("").test("", context -> { Async async = context.async(); ldapClientComponent.bind(config, result -> { if (result.isError()) result.getError().printStackTrace(System.out); context.assertTrue(result.isSuccess()); context.assertTrue(result.getResult().getResultCode().equals(LdapResultCode.INVALID_CREDENTIALS)); async.complete(); }); async.awaitSuccess(); }).run(); completion.awaitSuccess(); }
@Test public void shouldErrorWhenFieldsInvalid() throws InterruptedException { config.setBindDn("x"); config.setBindPassword("x"); TestCompletion completion = TestSuite.create("").test("", context -> { Async async = context.async(); ldapClientComponent.bind(config, result -> { context.assertTrue(result.isSuccess()); context.assertTrue(result.getResult().getResultCode().equals(LdapResultCode.INVALID_DN_SYNTAX)); context.assertTrue(result.getResult().getMessage().equals("Incorrect DN given : x (0x78 ) is invalid")); async.complete(); }); async.awaitSuccess(); }).run(); completion.awaitSuccess(); }
@Test public void shouldFailWhenPasswordInvalid() throws InterruptedException { config.setBindDn("uid=admin,ou=system"); config.setBindPassword("miso-soup"); TestCompletion completion = TestSuite.create("").test("", context -> { Async async = context.async(); ldapClientComponent.bind(config, result -> { context.assertTrue(result.isSuccess()); context.assertTrue(result.getResult().getResultCode().equals(LdapResultCode.INVALID_CREDENTIALS)); async.complete(); }); async.awaitSuccess(); }).run(); completion.awaitSuccess(); }