From 7af7db60b69484583d948c660072f58fe1b9ea89 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sun, 5 Dec 2021 20:26:46 +0100 Subject: [PATCH] Generate guid in script. --- .../Extensions/StringJintExtension.cs | 20 +++++++++++ .../src/Squidex.Infrastructure/RandomHash.cs | 5 +++ .../Scripting/JintScriptEngineHelperTests.cs | 33 +++++++++++++++++++ 3 files changed, 58 insertions(+) diff --git a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Extensions/StringJintExtension.cs b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Extensions/StringJintExtension.cs index 41ad1fa8d..1b69eabe1 100644 --- a/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Extensions/StringJintExtension.cs +++ b/backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/Extensions/StringJintExtension.cs @@ -28,6 +28,18 @@ namespace Squidex.Domain.Apps.Core.Scripting.Extensions } }; + private readonly Func sha512 = (text) => + { + try + { + return text.ToSha512(); + } + catch + { + return JsValue.Undefined; + } + }; + private readonly Func md5 = (text) => { try @@ -100,13 +112,21 @@ namespace Squidex.Domain.Apps.Core.Scripting.Extensions } }; + private readonly Func guid = () => + { + return Guid.NewGuid().ToString(); + }; + public Func Html2Text => html2Text; public void Extend(Engine engine) { engine.SetValue("slugify", slugify); + engine.SetValue("guid", guid); + engine.SetValue("sha256", sha256); + engine.SetValue("sha512", sha512); engine.SetValue("md5", md5); engine.SetValue("toCamelCase", toCamelCase); diff --git a/backend/src/Squidex.Infrastructure/RandomHash.cs b/backend/src/Squidex.Infrastructure/RandomHash.cs index 868c7d2b4..e14180ecb 100644 --- a/backend/src/Squidex.Infrastructure/RandomHash.cs +++ b/backend/src/Squidex.Infrastructure/RandomHash.cs @@ -49,6 +49,11 @@ namespace Squidex.Infrastructure return value.ToHashed(SHA256.Create()); } + public static string ToSha512(this string value) + { + return value.ToHashed(SHA512.Create()); + } + public static string ToSha256(this byte[] bytes) { return bytes.ToHashed(SHA256.Create()); diff --git a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineHelperTests.cs b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineHelperTests.cs index 76edb64d7..208fff153 100644 --- a/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineHelperTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Core.Tests/Operations/Scripting/JintScriptEngineHelperTests.cs @@ -197,6 +197,23 @@ namespace Squidex.Domain.Apps.Core.Operations.Scripting Assert.Equal("HelloWorld".ToSha256(), result); } + [Fact] + public void Should_compute_sha512_hash() + { + const string script = @" + return sha512(value); + "; + + var vars = new ScriptVars + { + ["value"] = "HelloWorld" + }; + + var result = sut.Execute(vars, script).ToString(); + + Assert.Equal("HelloWorld".ToSha512(), result); + } + [Fact] public void Should_compute_md5_hash() { @@ -214,6 +231,22 @@ namespace Squidex.Domain.Apps.Core.Operations.Scripting Assert.Equal("HelloWorld".ToMD5(), result); } + [Fact] + public void Should_compute_guid() + { + const string script = @" + return guid(); + "; + + var vars = new ScriptVars + { + }; + + var result = sut.Execute(vars, script).ToString(); + + Assert.True(Guid.TryParse(result, out _)); + } + [Fact] public async Task Should_throw_validation_exception_if_calling_reject() {