示例#1
0
        public async Task SendDoneCommand_WritesDoneToExternalProcess()
        {
            var logFactory     = TestLoggerFactory.Create();
            var action         = ConnectionTestsHelper.GetDoneAction();
            var nuixConnection = ConnectionTestsHelper.GetNuixConnection(logFactory, action);

            var fakeExternalProcess = new ExternalProcessMock(
                1,
                ConnectionTestsHelper.GetCreateCaseAction()
                );

            var state = ConnectionTestsHelper.GetStateMonad(
                fakeExternalProcess,
                logFactory
                );

            var ct = new CancellationToken();

            await nuixConnection.SendDoneCommand(state, null, ct);

            logFactory.Sink.LogEntries.Should()
            .Contain(x => x.Message != null && x.Message.Equals("Finished"));
        }
示例#2
0
        public async Task RunFunctionAsync_WithTwoEntityStreamParameters_ReturnsError()
        {
            var logFactory     = TestLoggerFactory.Create();
            var action         = ConnectionTestsHelper.GetDoneAction();
            var nuixConnection = ConnectionTestsHelper.GetNuixConnection(logFactory, action);
            var ct             = new CancellationToken();

            var stream1 = new List <Entity>().ToAsyncEnumerable().ToSCLArray();
            var stream2 = new List <Entity>().ToAsyncEnumerable().ToSCLArray();

            var dict = new Dictionary <RubyFunctionParameter, object>
            {
                { new RubyFunctionParameter("stream1Arg", "Stream1", false), stream1 },
                { new RubyFunctionParameter("stream2Arg", "Stream2", false), stream2 }
            };

            var stepParams = new ReadOnlyDictionary <RubyFunctionParameter, object>(dict);

            var step = new FakeNuixTwoStreamFunction();

            var result = await nuixConnection.RunFunctionAsync(
                ConnectionTestsHelper.GetStateMonadForProcess(logFactory),
                null,
                step.RubyScriptStepFactory.RubyFunction,
                stepParams,
                CasePathParameter.IgnoresOpenCase.Instance,
                ct
                );

            Assert.True(result.IsFailure);

            Assert.Equal(
                "A nuix function cannot have more than one Entity Array parameter.",
                result.Error.AsString
                );
        }
        public async Task CloseNuixConnectionAsync_ErrorOnClose_ReturnsError()
        {
            var state = ConnectionTestsHelper.GetStateMonadWithConnection(
                TestLoggerFactory.Create(),
                ConnectionTestsHelper.GetDoneAction()
                );

            var ct = new CancellationToken();

            var originalConnection =
                state.GetVariable <NuixConnection>(NuixConnectionHelper.NuixVariableName);

            Assert.True(originalConnection.IsSuccess);
            originalConnection.Value.Dispose();

            var actual = await state.CloseNuixConnectionAsync(null, ct);

            Assert.True(actual.IsFailure);

            Assert.Matches(
                $"Cannot access a disposed object\\.\\s+Object name: '{nameof(NuixConnection)}'",
                actual.Error.AsString
                );
        }