mirror of https://github.com/Squidex/squidex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
4.2 KiB
157 lines
4.2 KiB
// ==========================================================================
|
|
// Squidex Headless CMS
|
|
// ==========================================================================
|
|
// Copyright (c) Squidex UG (haftungsbeschraenkt)
|
|
// All rights reserved. Licensed under the MIT license.
|
|
// ==========================================================================
|
|
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.Extensions.Caching.Memory;
|
|
using Microsoft.Extensions.Options;
|
|
using Squidex.Domain.Apps.Core.Scripting;
|
|
|
|
namespace Squidex.Web.Scripting;
|
|
|
|
public class HttpRequestJintExtensionTests
|
|
{
|
|
private readonly IHttpContextAccessor httpContextAccessor = A.Fake<IHttpContextAccessor>();
|
|
private readonly JintScriptEngine sut;
|
|
|
|
public HttpRequestJintExtensionTests()
|
|
{
|
|
var extensions = new IJintExtension[]
|
|
{
|
|
new HttpRequestJintExtension(httpContextAccessor)
|
|
};
|
|
|
|
sut = new JintScriptEngine(new MemoryCache(Options.Create(new MemoryCacheOptions())),
|
|
Options.Create(new JintScriptOptions
|
|
{
|
|
TimeoutScript = TimeSpan.FromSeconds(2),
|
|
TimeoutExecution = TimeSpan.FromSeconds(10)
|
|
}), extensions);
|
|
}
|
|
|
|
[Fact]
|
|
public void Should_get_null_request()
|
|
{
|
|
A.CallTo(() => httpContextAccessor.HttpContext)
|
|
.Returns(null);
|
|
|
|
const string script = @"
|
|
getRequest();
|
|
";
|
|
|
|
var actual = sut.Execute([], script).ToString();
|
|
|
|
Assert.Equal("null", actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void Should_get_method()
|
|
{
|
|
var httpContext = new DefaultHttpContext();
|
|
httpContext.Request.Method = "DELETE";
|
|
|
|
A.CallTo(() => httpContextAccessor.HttpContext)
|
|
.Returns(httpContext);
|
|
|
|
const string script = @"
|
|
getRequest().method;
|
|
";
|
|
|
|
var actual = sut.Execute([], script).ToString();
|
|
|
|
Assert.Equal("DELETE", actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void Should_get_path()
|
|
{
|
|
var httpContext = new DefaultHttpContext();
|
|
httpContext.Request.Path = "/path/to/request";
|
|
|
|
A.CallTo(() => httpContextAccessor.HttpContext)
|
|
.Returns(httpContext);
|
|
|
|
const string script = @"
|
|
getRequest().path;
|
|
";
|
|
|
|
var actual = sut.Execute([], script).ToString();
|
|
|
|
Assert.Equal("/path/to/request", actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void Should_get_query_string()
|
|
{
|
|
var httpContext = new DefaultHttpContext();
|
|
httpContext.Request.QueryString = new QueryString("?key=value");
|
|
|
|
A.CallTo(() => httpContextAccessor.HttpContext)
|
|
.Returns(httpContext);
|
|
|
|
const string script = @"
|
|
getRequest().queryString;
|
|
";
|
|
|
|
var actual = sut.Execute([], script).ToString();
|
|
|
|
Assert.Equal("?key=value", actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void Should_get_query_string_if_null()
|
|
{
|
|
var httpContext = new DefaultHttpContext();
|
|
httpContext.Request.QueryString = default;
|
|
|
|
A.CallTo(() => httpContextAccessor.HttpContext)
|
|
.Returns(httpContext);
|
|
|
|
const string script = @"
|
|
getRequest().queryString;
|
|
";
|
|
|
|
var actual = sut.Execute([], script).ToString();
|
|
|
|
Assert.Equal(string.Empty, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void Should_get_query()
|
|
{
|
|
var httpContext = new DefaultHttpContext();
|
|
httpContext.Request.QueryString = new QueryString("?a=1&a=2&b=3");
|
|
|
|
A.CallTo(() => httpContextAccessor.HttpContext)
|
|
.Returns(httpContext);
|
|
|
|
const string script = @"
|
|
getRequest().query;
|
|
";
|
|
|
|
var actual = sut.Execute([], script).ToString();
|
|
|
|
Assert.Equal("{\"a\":[\"1\", \"2\"], \"b\":[\"3\"]}", actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void Should_get_concrete_query()
|
|
{
|
|
var httpContext = new DefaultHttpContext();
|
|
httpContext.Request.QueryString = new QueryString("?a=1&a=2&b=3");
|
|
|
|
A.CallTo(() => httpContextAccessor.HttpContext)
|
|
.Returns(httpContext);
|
|
|
|
const string script = @"
|
|
getRequest().query.a[1];
|
|
";
|
|
|
|
var actual = sut.Execute([], script).ToString();
|
|
|
|
Assert.Equal("2", actual);
|
|
}
|
|
}
|
|
|