Beispiel #1
0
        GetActionResult(
            ConnectionOutput output,
            string[]?stdOut,
            string[]?stdErr)
        {
            const string?casePath = @"d:\case";
            const string?search   = "*.png";
            const string?tag      = "image";

            var action = ConnectionTestsHelper.SearchAndTagAction(casePath, search, tag, output);

            action.WriteToStdOut = stdOut;
            action.WriteToStdErr = stdErr;

            var loggerFactory = TestLoggerFactory.Create();

            var nuixConnection = ConnectionTestsHelper.GetNuixConnection(
                loggerFactory,
                ConnectionTestsHelper.SearchHelperAction,
                ConnectionTestsHelper.ExpandHelperAction,
                action
                );

            var result = await nuixConnection.RunFunctionAsync(
                ConnectionTestsHelper.GetStateMonadForProcess(loggerFactory),
                null,
                new NuixSearchAndTag().RubyScriptStepFactory.RubyFunction,
                ConnectionTestsHelper.SearchAndTagParams(casePath, search, tag),
                CasePathParameter.IgnoresOpenCase.Instance,
                new CancellationToken()
                );

            return(loggerFactory, result);
        }
Beispiel #2
0
        public async Task RunFunctionAsync_WhenConnectionOutputPropertiesAreNull_ReturnsError()
        {
            var output = new ConnectionOutput {
                Result = null
            };

            var(_, result) = await GetActionResult(output, null, null);

            result.ShouldBeFailure();

            Assert.Equal(
                $"External Process Failed: '{nameof(ConnectionOutput)} must have at least one property set'",
                result.Error.AsString
                );
        }
Beispiel #3
0
        public async Task RunFunctionAsync_WhenConnectionOutputIsNotValid_ReturnsError()
        {
            var output = new ConnectionOutput
            {
                Log = new ConnectionOutputLog(), Result = new ConnectionOutputResult()
            };

            var(_, result) = await GetActionResult(output, null, null);

            Assert.True(result.IsFailure);

            Assert.Equal(
                $"External Process Failed: '{nameof(ConnectionOutput)} can only have one property set'",
                result.Error.AsString
                );
        }
Beispiel #4
0
        public async Task RunFunctionAsync_WhenItCantParseJson_ReturnsFailure()
        {
            const string?message = "A random message";

            var output = new ConnectionOutput {
                Result = new ConnectionOutputResult()
            };

            var(_, result) = await GetActionResult(
                output,
                new[] { message },
                null
                );

            Assert.True(result.IsFailure);

            Assert.Equal(
                ErrorCode.CouldNotParse.GetFormattedMessage(message, nameof(ConnectionOutput)),
                result.Error.AsString
                );
        }
Beispiel #5
0
        public async Task RunFunctionAsync_WhenJavaWritesToStdErr_LogsWarning(
            string prefix,
            string message)
        {
            var output = new ConnectionOutput {
                Result = new ConnectionOutputResult()
            };

            var(loggerFactory, result) = await GetActionResult(
                output,
                null,
                new[] { $"{prefix}{message}" }
                );

            Assert.True(result.IsSuccess);

            loggerFactory.Sink.LogEntries
            .Should()
            .Contain(
                x => x.LogLevel == LogLevel.Warning &&
                x.Message != null && x.Message.Equals(message)
                );
        }
 private void SendConnectionOutput(string message)
 {
     ConnectionOutput?.Invoke(message);
 }