public JintScriptEngineTests()
        {
            var extensions = new IJintExtension[]
            {
                new DateTimeJintExtension(),
                new HttpJintExtension(httpClientFactory),
                new StringJintExtension(),
                new StringWordsJintExtension()
            };

            var httpResponse = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent("{ \"key\": 42 }")
            };

            var httpHandler = new MockupHttpHandler(httpResponse);

            A.CallTo(() => httpClientFactory.CreateClient(A <string> ._))
            .Returns(new HttpClient(httpHandler));

            var cache = new MemoryCache(Options.Create(new MemoryCacheOptions()));

            sut = new JintScriptEngine(cache, extensions)
            {
                TimeoutScript    = TimeSpan.FromSeconds(2),
                TimeoutExecution = TimeSpan.FromSeconds(10)
            };
        }
Beispiel #2
0
        public AssetsJintExtensionTests()
        {
            var services =
                new ServiceCollection()
                    .AddSingleton(appProvider)
                    .AddSingleton(assetFileStore)
                    .AddSingleton(assetQuery)
                    .AddSingleton(assetThumbnailGenerator)
                    .BuildServiceProvider();

            var extensions = new IJintExtension[]
            {
                new AssetsJintExtension(services)
            };

            A.CallTo(() => appProvider.GetAppAsync(appId.Id, false, A<CancellationToken>._))
                .Returns(Mocks.App(appId));

            sut = new JintScriptEngine(new MemoryCache(Options.Create(new MemoryCacheOptions())),
                Options.Create(new JintScriptOptions
                {
                    TimeoutScript = TimeSpan.FromSeconds(2),
                    TimeoutExecution = TimeSpan.FromSeconds(10)
                }),
                extensions);
        }
        public async Task Should_make_test_with_pre_query_script()
        {
            var ctx = new Context(Mocks.ApiUser(), Mocks.App(appId));

            var(provider, id) = CreateSchema(
                query: @"
                    ctx.data.test = { iv: ctx.custom };
                    replace()",
                queryPre: "ctx.custom = 123;");

            var content = new ContentEntity {
                Data = new ContentData(), SchemaId = id
            };

            var realScriptEngine =
                new JintScriptEngine(new MemoryCache(Options.Create(new MemoryCacheOptions())),
                                     Options.Create(new JintScriptOptions
            {
                TimeoutScript    = TimeSpan.FromSeconds(20),
                TimeoutExecution = TimeSpan.FromSeconds(100)
            }));

            var sut2 = new ScriptContent(realScriptEngine);

            await sut2.EnrichAsync(ctx, new[] { content }, provider, default);

            Assert.Equal(JsonValue.Create(123), content.Data["test"] !["iv"]);
Beispiel #4
0
        public CounterJintExtensionTests()
        {
            var extensions = new IJintExtension[]
            {
                new CounterJintExtension(grainFactory)
            };

            var cache = new MemoryCache(Options.Create(new MemoryCacheOptions()));

            sut = new JintScriptEngine(cache, extensions)
            {
                Timeout = TimeSpan.FromSeconds(1)
            };
        }
        public CounterJintExtensionTests()
        {
            var extensions = new IJintExtension[]
            {
                new CounterJintExtension(grainFactory)
            };

            sut = new JintScriptEngine(new MemoryCache(Options.Create(new MemoryCacheOptions())),
                                       Options.Create(new JintScriptOptions
            {
                TimeoutScript    = TimeSpan.FromSeconds(2),
                TimeoutExecution = TimeSpan.FromSeconds(10)
            }), extensions);
        }
Beispiel #6
0
        public async Task Given_testScriptEngine_When_executing_script_Then_Script_can_manipulate_context()
        {
            IScriptEngine <Script> engine = new JintScriptEngine();
            var script  = new Script(@"context.calculator.Add(context.A, context.B)");
            var context = new TestContext()
            {
                Calculator = new TestCalculator(), A = 1, B = 2
            };
            var environment  = new ScriptEnvironment <TestContext>("1.0", "1.0", context);
            var executionRes = await engine.Run(script, environment);

            var result = executionRes.Should().BeOfType <ScriptExecutionSuccess>().Subject;

            result.Result.As <double>().Should().Be(3);
        }
        public JintScriptEngineHelperTests()
        {
            var extensions = new IJintExtension[]
            {
                new DateTimeJintExtension(),
                new HttpJintExtension(httpClientFactory),
                new StringJintExtension()
            };

            var cache = new MemoryCache(Options.Create(new MemoryCacheOptions()));

            sut = new JintScriptEngine(cache, extensions)
            {
                Timeout = TimeSpan.FromSeconds(1)
            };
        }
        public AssetsJintExtensionTests()
        {
            var services =
                new ServiceCollection()
                .AddSingleton(appProvider)
                .AddSingleton(assetQuery)
                .BuildServiceProvider();

            var extensions = new IJintExtension[]
            {
                new AssetsJintExtension(services)
            };

            A.CallTo(() => appProvider.GetAppAsync(appId.Id, false))
            .Returns(Mocks.App(appId));

            sut = new JintScriptEngine(new MemoryCache(Options.Create(new MemoryCacheOptions())), extensions);
        }
Beispiel #9
0
        public JintScriptEngineHelperTests()
        {
            var extensions = new IJintExtension[]
            {
                new DateTimeJintExtension(),
                new HttpJintExtension(httpClientFactory),
                new StringJintExtension(),
                new StringWordsJintExtension()
            };

            sut = new JintScriptEngine(new MemoryCache(Options.Create(new MemoryCacheOptions())),
                                       Options.Create(new JintScriptOptions
            {
                TimeoutScript    = TimeSpan.FromSeconds(2),
                TimeoutExecution = TimeSpan.FromSeconds(10)
            }),
                                       extensions);
        }
        private void TestForRealCondition(string condition, Action <IRuleTriggerHandler, RuleContext> action)
        {
            var trigger = new CommentTrigger
            {
                Condition = condition
            };

            var realScriptEngine =
                new JintScriptEngine(new MemoryCache(Options.Create(new MemoryCacheOptions())),
                                     Options.Create(new JintScriptOptions
            {
                TimeoutScript    = TimeSpan.FromSeconds(2),
                TimeoutExecution = TimeSpan.FromSeconds(10)
            }));

            var handler = new CommentTriggerHandler(realScriptEngine, userResolver);

            action(handler, Context(trigger));
        }
Beispiel #11
0
        public DynamicContentWorkflowTests()
        {
            app = Mocks.App(appId);

            var simpleWorkflow = new Workflow(
                Status.Draft,
                new Dictionary <Status, WorkflowStep>
            {
                [Status.Draft] =
                    new WorkflowStep(
                        new Dictionary <Status, WorkflowTransition>
                {
                    [Status.Published] = WorkflowTransition.Always
                }.ToReadonlyDictionary(),
                        StatusColors.Draft),
                [Status.Published] =
                    new WorkflowStep(
                        new Dictionary <Status, WorkflowTransition>
                {
                    [Status.Draft] = WorkflowTransition.Always
                }.ToReadonlyDictionary(),
                        StatusColors.Published)
            }.ToReadonlyDictionary(),
                ReadonlyList.Create(simpleSchemaId.Id));

            var workflows = Workflows.Empty.Set(workflow).Set(DomainId.NewGuid(), simpleWorkflow);

            A.CallTo(() => appProvider.GetAppAsync(appId.Id, false, default))
            .Returns(app);

            A.CallTo(() => app.Workflows)
            .Returns(workflows);

            var scriptEngine = new JintScriptEngine(new MemoryCache(Options.Create(new MemoryCacheOptions())),
                                                    Options.Create(new JintScriptOptions
            {
                TimeoutScript    = TimeSpan.FromSeconds(2),
                TimeoutExecution = TimeSpan.FromSeconds(10)
            }));

            sut = new DynamicContentWorkflow(scriptEngine, appProvider);
        }
        public ReferencesJintExtensionTests()
        {
            var services =
                new ServiceCollection()
                .AddSingleton(appProvider)
                .AddSingleton(contentQuery)
                .BuildServiceProvider();

            var extensions = new IJintExtension[]
            {
                new ReferencesJintExtension(services)
            };

            A.CallTo(() => appProvider.GetAppAsync(appId.Id, false))
            .Returns(Mocks.App(appId));

            sut = new JintScriptEngine(new MemoryCache(Options.Create(new MemoryCacheOptions())), extensions)
            {
                TimeoutScript    = TimeSpan.FromSeconds(2),
                TimeoutExecution = TimeSpan.FromSeconds(10)
            };
        }