Search in sources :

Example 31 with TestContext

use of io.vertx.ext.unit.TestContext in project hono by eclipse.

the class FileBasedRegistrationServiceTest method testDoStartLoadsDeviceIdentities.

/**
 * Verifies that device identities are successfully loaded from file during startup.
 *
 * @param ctx The test context.
 */
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test
public void testDoStartLoadsDeviceIdentities(final TestContext ctx) {
    // GIVEN a service configured with a file name
    when(fileSystem.existsBlocking(props.getFilename())).thenReturn(Boolean.TRUE);
    doAnswer(invocation -> {
        final Buffer data = DeviceRegistryTestUtils.readFile(FILE_NAME);
        Handler handler = invocation.getArgument(1);
        handler.handle(Future.succeededFuture(data));
        return null;
    }).when(fileSystem).readFile(eq(props.getFilename()), any(Handler.class));
    // WHEN the service is started
    Async startup = ctx.async();
    Future<Void> startFuture = Future.future();
    startFuture.setHandler(ctx.asyncAssertSuccess(s -> {
        startup.complete();
    }));
    registrationService.doStart(startFuture);
    // THEN the device identities from the file are loaded
    startup.await();
    registrationService.getDevice(TENANT, DEVICE, ctx.asyncAssertSuccess());
    registrationService.getDevice(TENANT, "4712", ctx.asyncAssertSuccess(result -> {
        final JsonObject data = result.getPayload().getJsonObject(RegistrationConstants.FIELD_DATA);
        ctx.assertEquals(data.getString(FileBasedRegistrationService.PROPERTY_VIA), GW);
    }));
    registrationService.getDevice(TENANT, GW, ctx.asyncAssertSuccess());
}
Also used : Buffer(io.vertx.core.buffer.Buffer) CoreMatchers.is(org.hamcrest.CoreMatchers.is) HttpURLConnection(java.net.HttpURLConnection) TestContext(io.vertx.ext.unit.TestContext) Async(io.vertx.ext.unit.Async) ArgumentMatchers(org.mockito.ArgumentMatchers) RunWith(org.junit.runner.RunWith) EventBusMessage(org.eclipse.hono.util.EventBusMessage) ServiceInvocationException(org.eclipse.hono.client.ServiceInvocationException) Constants(org.eclipse.hono.util.Constants) Context(io.vertx.core.Context) Assert.assertThat(org.junit.Assert.assertThat) EventBus(io.vertx.core.eventbus.EventBus) RegistrationResult(org.eclipse.hono.util.RegistrationResult) Timeout(org.junit.rules.Timeout) JsonObject(io.vertx.core.json.JsonObject) Before(org.junit.Before) Vertx(io.vertx.core.Vertx) RegistrationConstants(org.eclipse.hono.util.RegistrationConstants) Test(org.junit.Test) VertxUnitRunner(io.vertx.ext.unit.junit.VertxUnitRunner) Future(io.vertx.core.Future) StandardCharsets(java.nio.charset.StandardCharsets) Mockito(org.mockito.Mockito) Rule(org.junit.Rule) Buffer(io.vertx.core.buffer.Buffer) Assert.assertFalse(org.junit.Assert.assertFalse) FileSystem(io.vertx.core.file.FileSystem) Handler(io.vertx.core.Handler) Async(io.vertx.ext.unit.Async) Handler(io.vertx.core.Handler) JsonObject(io.vertx.core.json.JsonObject) Test(org.junit.Test)

Example 32 with TestContext

use of io.vertx.ext.unit.TestContext in project hono by eclipse.

the class FileBasedRegistrationServiceTest method testContentsNotSavedOnShutdownIfSavingIfDisabled.

/**
 * Verifies that setting the <em>saveToFile</em> configuration property to <em>false</em> prevents
 * the registration service to write its content to the file system during shutdown.
 *
 * @param ctx The vert.x test context.
 */
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test
public void testContentsNotSavedOnShutdownIfSavingIfDisabled(final TestContext ctx) {
    // GIVEN a registration service configured to not persist data
    props.setSaveToFile(false);
    when(fileSystem.existsBlocking(props.getFilename())).thenReturn(Boolean.TRUE);
    doAnswer(invocation -> {
        Handler handler = invocation.getArgument(1);
        handler.handle(Future.failedFuture("malformed data"));
        return null;
    }).when(fileSystem).readFile(eq(props.getFilename()), any(Handler.class));
    Async startup = ctx.async();
    Future<Void> startupTracker = Future.future();
    startupTracker.setHandler(ctx.asyncAssertSuccess(started -> {
        startup.complete();
    }));
    registrationService.doStart(startupTracker);
    startup.await();
    // WHEN adding a device
    registrationService.addDevice(TENANT, DEVICE, new JsonObject());
    // and shutting down the service
    Async shutdown = ctx.async();
    Future<Void> shutdownTracker = Future.future();
    shutdownTracker.setHandler(ctx.asyncAssertSuccess(done -> {
        shutdown.complete();
    }));
    registrationService.doStop(shutdownTracker);
    // THEN no data has been written to the file system
    shutdown.await();
    verify(fileSystem, never()).createFile(eq(props.getFilename()), any(Handler.class));
}
Also used : CoreMatchers.is(org.hamcrest.CoreMatchers.is) HttpURLConnection(java.net.HttpURLConnection) TestContext(io.vertx.ext.unit.TestContext) Async(io.vertx.ext.unit.Async) ArgumentMatchers(org.mockito.ArgumentMatchers) RunWith(org.junit.runner.RunWith) EventBusMessage(org.eclipse.hono.util.EventBusMessage) ServiceInvocationException(org.eclipse.hono.client.ServiceInvocationException) Constants(org.eclipse.hono.util.Constants) Context(io.vertx.core.Context) Assert.assertThat(org.junit.Assert.assertThat) EventBus(io.vertx.core.eventbus.EventBus) RegistrationResult(org.eclipse.hono.util.RegistrationResult) Timeout(org.junit.rules.Timeout) JsonObject(io.vertx.core.json.JsonObject) Before(org.junit.Before) Vertx(io.vertx.core.Vertx) RegistrationConstants(org.eclipse.hono.util.RegistrationConstants) Test(org.junit.Test) VertxUnitRunner(io.vertx.ext.unit.junit.VertxUnitRunner) Future(io.vertx.core.Future) StandardCharsets(java.nio.charset.StandardCharsets) Mockito(org.mockito.Mockito) Rule(org.junit.Rule) Buffer(io.vertx.core.buffer.Buffer) Assert.assertFalse(org.junit.Assert.assertFalse) FileSystem(io.vertx.core.file.FileSystem) Handler(io.vertx.core.Handler) Async(io.vertx.ext.unit.Async) Handler(io.vertx.core.Handler) JsonObject(io.vertx.core.json.JsonObject) Test(org.junit.Test)

Example 33 with TestContext

use of io.vertx.ext.unit.TestContext in project hono by eclipse.

the class FileBasedRegistrationServiceTest method testDuplicateRegistrationFails.

/**
 * Verifies that the registry returns 409 when trying to register a device twice.
 *
 * @param ctx The vert.x test context.
 */
@Test
public void testDuplicateRegistrationFails(final TestContext ctx) {
    final EventBusMessage createRequest = newRequest(RegistrationConstants.ACTION_REGISTER, TENANT);
    registrationService.processRequest(createRequest).map(response -> {
        ctx.assertEquals(HttpURLConnection.HTTP_CREATED, response.getStatus());
        return response;
    }).compose(ok -> registrationService.processRequest(createRequest)).setHandler(ctx.asyncAssertSuccess(response -> {
        ctx.assertEquals(HttpURLConnection.HTTP_CONFLICT, response.getStatus());
    }));
}
Also used : CoreMatchers.is(org.hamcrest.CoreMatchers.is) HttpURLConnection(java.net.HttpURLConnection) TestContext(io.vertx.ext.unit.TestContext) Async(io.vertx.ext.unit.Async) ArgumentMatchers(org.mockito.ArgumentMatchers) RunWith(org.junit.runner.RunWith) EventBusMessage(org.eclipse.hono.util.EventBusMessage) ServiceInvocationException(org.eclipse.hono.client.ServiceInvocationException) Constants(org.eclipse.hono.util.Constants) Context(io.vertx.core.Context) Assert.assertThat(org.junit.Assert.assertThat) EventBus(io.vertx.core.eventbus.EventBus) RegistrationResult(org.eclipse.hono.util.RegistrationResult) Timeout(org.junit.rules.Timeout) JsonObject(io.vertx.core.json.JsonObject) Before(org.junit.Before) Vertx(io.vertx.core.Vertx) RegistrationConstants(org.eclipse.hono.util.RegistrationConstants) Test(org.junit.Test) VertxUnitRunner(io.vertx.ext.unit.junit.VertxUnitRunner) Future(io.vertx.core.Future) StandardCharsets(java.nio.charset.StandardCharsets) Mockito(org.mockito.Mockito) Rule(org.junit.Rule) Buffer(io.vertx.core.buffer.Buffer) Assert.assertFalse(org.junit.Assert.assertFalse) FileSystem(io.vertx.core.file.FileSystem) Handler(io.vertx.core.Handler) EventBusMessage(org.eclipse.hono.util.EventBusMessage) Test(org.junit.Test)

Example 34 with TestContext

use of io.vertx.ext.unit.TestContext in project hono by eclipse.

the class FileBasedRegistrationServiceTest method testPeriodicSafeJobIsNotScheduledIfSavingIfDisabled.

/**
 * Verifies that setting the <em>saveToFile</em> configuration property to <em>false</em> prevents
 * the registration service to write its content to the file system periodically.
 *
 * @param ctx The vert.x test context.
 */
@SuppressWarnings({ "rawtypes", "unchecked" })
@Test
public void testPeriodicSafeJobIsNotScheduledIfSavingIfDisabled(final TestContext ctx) {
    props.setSaveToFile(false);
    when(fileSystem.existsBlocking(props.getFilename())).thenReturn(Boolean.TRUE);
    doAnswer(invocation -> {
        Handler handler = invocation.getArgument(1);
        handler.handle(Future.failedFuture("malformed file"));
        return null;
    }).when(fileSystem).readFile(eq(props.getFilename()), any(Handler.class));
    Async startup = ctx.async();
    Future<Void> startupTracker = Future.future();
    startupTracker.setHandler(ctx.asyncAssertSuccess(done -> {
        startup.complete();
    }));
    registrationService.doStart(startupTracker);
    startup.await();
    verify(vertx, never()).setPeriodic(anyLong(), any(Handler.class));
}
Also used : CoreMatchers.is(org.hamcrest.CoreMatchers.is) HttpURLConnection(java.net.HttpURLConnection) TestContext(io.vertx.ext.unit.TestContext) Async(io.vertx.ext.unit.Async) ArgumentMatchers(org.mockito.ArgumentMatchers) RunWith(org.junit.runner.RunWith) EventBusMessage(org.eclipse.hono.util.EventBusMessage) ServiceInvocationException(org.eclipse.hono.client.ServiceInvocationException) Constants(org.eclipse.hono.util.Constants) Context(io.vertx.core.Context) Assert.assertThat(org.junit.Assert.assertThat) EventBus(io.vertx.core.eventbus.EventBus) RegistrationResult(org.eclipse.hono.util.RegistrationResult) Timeout(org.junit.rules.Timeout) JsonObject(io.vertx.core.json.JsonObject) Before(org.junit.Before) Vertx(io.vertx.core.Vertx) RegistrationConstants(org.eclipse.hono.util.RegistrationConstants) Test(org.junit.Test) VertxUnitRunner(io.vertx.ext.unit.junit.VertxUnitRunner) Future(io.vertx.core.Future) StandardCharsets(java.nio.charset.StandardCharsets) Mockito(org.mockito.Mockito) Rule(org.junit.Rule) Buffer(io.vertx.core.buffer.Buffer) Assert.assertFalse(org.junit.Assert.assertFalse) FileSystem(io.vertx.core.file.FileSystem) Handler(io.vertx.core.Handler) Async(io.vertx.ext.unit.Async) Handler(io.vertx.core.Handler) Test(org.junit.Test)

Example 35 with TestContext

use of io.vertx.ext.unit.TestContext in project hono by eclipse.

the class FileBasedTenantServiceTest method testRemoveTenantsSucceeds.

/**
 * Verifies that the service removes tenants for a given tenantId.
 *
 * @param ctx The vert.x test context.
 */
@Test
public void testRemoveTenantsSucceeds(final TestContext ctx) {
    final Async add = ctx.async();
    addTenant(svc, ctx, add, "tenant");
    add.await();
    svc.remove("tenant", ctx.asyncAssertSuccess(s -> {
        assertThat(s.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
        assertTenantDoesNotExist(svc, "tenant", ctx);
    }));
}
Also used : CoreMatchers.is(org.hamcrest.CoreMatchers.is) HttpURLConnection(java.net.HttpURLConnection) TestContext(io.vertx.ext.unit.TestContext) Async(io.vertx.ext.unit.Async) TenantConstants(org.eclipse.hono.util.TenantConstants) RunWith(org.junit.runner.RunWith) Constants(org.eclipse.hono.util.Constants) Context(io.vertx.core.Context) Assert.assertThat(org.junit.Assert.assertThat) ArgumentCaptor(org.mockito.ArgumentCaptor) EventBus(io.vertx.core.eventbus.EventBus) Matchers.eq(org.mockito.Matchers.eq) TenantService(org.eclipse.hono.service.tenant.TenantService) Timeout(org.junit.rules.Timeout) JsonObject(io.vertx.core.json.JsonObject) Before(org.junit.Before) Vertx(io.vertx.core.Vertx) Test(org.junit.Test) VertxUnitRunner(io.vertx.ext.unit.junit.VertxUnitRunner) Future(io.vertx.core.Future) StandardCharsets(java.nio.charset.StandardCharsets) Matchers.any(org.mockito.Matchers.any) Mockito(org.mockito.Mockito) JsonArray(io.vertx.core.json.JsonArray) Rule(org.junit.Rule) Buffer(io.vertx.core.buffer.Buffer) FileSystem(io.vertx.core.file.FileSystem) Handler(io.vertx.core.Handler) Async(io.vertx.ext.unit.Async) Test(org.junit.Test)

Aggregations

TestContext (io.vertx.ext.unit.TestContext)148 Test (org.junit.Test)147 VertxUnitRunner (io.vertx.ext.unit.junit.VertxUnitRunner)141 RunWith (org.junit.runner.RunWith)141 Async (io.vertx.ext.unit.Async)123 Future (io.vertx.core.Future)121 Handler (io.vertx.core.Handler)112 Vertx (io.vertx.core.Vertx)103 HttpURLConnection (java.net.HttpURLConnection)100 Before (org.junit.Before)97 Timeout (org.junit.rules.Timeout)95 JsonObject (io.vertx.core.json.JsonObject)91 Rule (org.junit.Rule)83 Mockito (org.mockito.Mockito)74 Constants (org.eclipse.hono.util.Constants)68 Assert.assertThat (org.junit.Assert.assertThat)62 Context (io.vertx.core.Context)57 CoreMatchers.is (org.hamcrest.CoreMatchers.is)54 AsyncResult (io.vertx.core.AsyncResult)53 Buffer (io.vertx.core.buffer.Buffer)52