public static Archive launch()
    {
        return launch(new Context());
    }
@Test
    @InterruptAfter(10)
    void shouldErrorWhenUnauthorised()
    {
        final MediaDriver.Context driverCtx = new MediaDriver.Context()
            .dirDeleteOnStart(true)
            .threadingMode(ThreadingMode.SHARED);

        final AuthorisationServiceSupplier authorisationServiceSupplier = () ->
            (protocolId, actionId, type, encodedPrincipal) -> actionId != TruncateRecordingRequestDecoder.TEMPLATE_ID;

        final Archive.Context archiveCtx = TestContexts.localhostArchive()
            .deleteArchiveOnStart(true)
            .authorisationServiceSupplier(authorisationServiceSupplier)
            .threadingMode(SHARED);

        try (ArchivingMediaDriver ignore = ArchivingMediaDriver.launch(driverCtx, archiveCtx);
            AeronArchive archive = AeronArchive.connect(TestContexts.localhostAeronArchive()))
        {
            try
            {
                archive.truncateRecording(0, 0);
            }
            catch (final ArchiveException ex)
            {
                assertEquals(ArchiveException.UNAUTHORISED_ACTION, ex.errorCode());
                return;
            }

            fail("Expected exception");
        }
        finally
        {
            archiveCtx.deleteDirectory();
            driverCtx.deleteDirectory();
        }
    }