From 787c8923bd0b5ec8151c5225a02a069dae0a1af8 Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Tue, 7 Jan 2025 22:11:22 -0500 Subject: [PATCH] fix regression and add unit test for login redirect to non-default page --- .../src/lib/Mocha.Core/KnownAttributeGuids.cs | 1 + mocha-dotnet/src/lib/Mocha.Core/Oms.cs | 9 ++++--- .../tests/Mocha.Core.Tests/UI/UITests.cs | 27 +++++++++++++++++++ 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/mocha-dotnet/src/lib/Mocha.Core/KnownAttributeGuids.cs b/mocha-dotnet/src/lib/Mocha.Core/KnownAttributeGuids.cs index b713f57..1cfc499 100755 --- a/mocha-dotnet/src/lib/Mocha.Core/KnownAttributeGuids.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/KnownAttributeGuids.cs @@ -30,6 +30,7 @@ namespace Mocha.Core public static Guid Order { get; } = new Guid("{49423f66-8837-430d-8cac-7892ebdcb1fe}"); public static Guid TargetURL { get; } = new Guid("{970F79A0-9EFE-4E7D-9286-9908C6F06A67}"); + public static Guid ReferralURL { get; } = new Guid("{6daaa721-db70-43ad-b373-6a8038e69d2e}"); public static Guid UserName { get; } = new Guid("{960FAF02-5C59-40F7-91A7-20012A99D9ED}"); public static Guid PasswordHash { get; } = new Guid("{F377FC29-4DF1-4AFB-9643-4191F37A00A9}"); diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oms.cs b/mocha-dotnet/src/lib/Mocha.Core/Oms.cs index 3f8f26e..3156c1d 100644 --- a/mocha-dotnet/src/lib/Mocha.Core/Oms.cs +++ b/mocha-dotnet/src/lib/Mocha.Core/Oms.cs @@ -2058,13 +2058,14 @@ public abstract class Oms if (h != InstanceHandle.Empty) { targetURL = ctx.GetWorkData(h); - if (targetURL == null) - { - targetURL = targetURLAttr; - } } } } + if (targetURL == null) + { + targetURL = targetURLAttr; + } + if (targetURL != null) { return new RedirectResponse(targetURL); diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/UI/UITests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/UI/UITests.cs index 11fbcaa..83e5c01 100644 --- a/mocha-dotnet/tests/Mocha.Core.Tests/UI/UITests.cs +++ b/mocha-dotnet/tests/Mocha.Core.Tests/UI/UITests.cs @@ -46,6 +46,33 @@ public class UITests : OmsTestsBase Assert.That(json["destinationUrl"].GetValue(), Is.EqualTo("~/d/home.htmld")); } + [Test] + public void LoginPageElementSubmitRedirectToAnotherPage() + { + Oms.CreateUser("testing", "testing"); + + InstanceHandle loginPage = Oms.GetInstance(KnownInstanceGuids.Pages.LoginPage); + + InstanceHandle loginPageSubedit = Oms.GetInstance(new Guid("{2b7d4481-b7c2-4e26-a917-e3ff7c367a8a}")); + OmsContext context = Oms.CreateContext(); + + Dictionary dict = new Dictionary(); + dict["{c67f305e-bd4d-4628-816b-55fb85ea1b67}"] = "testing"; + dict["{51b51be3-44fd-48f1-971f-682aee0a6132}"] = "testing"; + + context.SetGlobal(Oms.GetInstance(KnownAttributeGuids.Text.ReferralURL), "https://example.com/referer"); + + Response pageOutput = Oms.ProcessElement(context, loginPageSubedit, dict); + JsonObject json = pageOutput.GetResponse(Oms, context); + + string s_Token = context.GetGlobal(Oms.GetInstance(KnownAttributeGuids.Text.Token)); + Assert.That(s_Token, Is.Not.Empty); + + Assert.That(json["result"].GetValue(), Is.EqualTo("success")); + Assert.That(json["type"].GetValue(), Is.EqualTo("redirect")); + Assert.That(json["destinationUrl"].GetValue(), Is.EqualTo("https://example.com/referer")); + } + [Test] public void LoginPageElementSubmitBadPassword() {