v1.3.0 Restructure Saxonite workspace and upgrade to .NET 10 (#1)
Move Saxonite’s projects into a dedicated `Workspace` folder and align the solution with .NET 10 and the current Common workspace. Update encryption integration, test project structure and coverage, and repository guidance and upgrade notes. - Relocate application and library projects while retaining Git rename history. - Split tests into Admin, Online, and Shared projects; add representative behavioral and serialization tests. - Update Common integration, application version, and repository documentation. Application version: 1.3.0 Reviewed-on: #1 Co-authored-by: andy <andy@sarand.com>
This commit was merged in pull request #1.
This commit is contained in:
+55
@@ -0,0 +1,55 @@
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using NUnit.Framework;
|
||||
using Moq;
|
||||
using Saxonite.Net.Core.Web.Admin.App;
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Saxonite.Net.Core.UnitTests.Web.Admin.App
|
||||
{
|
||||
//=======================================================================
|
||||
[TestFixture]
|
||||
public class SaxApplication_Admin_Tester
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Application.
|
||||
private class SaxApplication_Admin_Test : SaxApplication_Admin
|
||||
{
|
||||
public SaxApplication_Admin_Test(IConfiguration configuration, IWebHostEnvironment env) :
|
||||
base(configuration)
|
||||
{
|
||||
InitEnvironment(env);
|
||||
}
|
||||
}
|
||||
private static SaxApplication_Admin_Test app;
|
||||
public static SaxApplication_Admin App
|
||||
{
|
||||
get
|
||||
{
|
||||
if (app == null)
|
||||
{
|
||||
var mockConfiguration = new Mock<IConfiguration>();
|
||||
|
||||
var mockEnvironment = new Mock<IWebHostEnvironment>();
|
||||
mockEnvironment.Setup(m => m.EnvironmentName).Returns(Environments.Development);
|
||||
mockEnvironment.Setup(m => m.ContentRootPath).Returns(@"D:\Sarand\Projects\Users\AHoward\VS2022\Saxonite\Workspace\SaxoniteCoreWebAdmin");
|
||||
|
||||
app = new SaxApplication_Admin_Test(mockConfiguration.Object, mockEnvironment.Object);
|
||||
}
|
||||
return app;
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Internals - component managers etc.
|
||||
private static SaxInternals internals;
|
||||
public static SaxInternals Internals { get { if (internals == null) internals = new SaxInternals(App.SessionContext); return internals; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
using NUnit.Framework;
|
||||
using Newtonsoft.Json;
|
||||
using Sarand.Net.Standard.Base.Bus;
|
||||
using Sarand.Net.Standard.Base.Utils;
|
||||
using Saxonite.Net.Core.Web.Admin.App;
|
||||
using Saxonite.Net.Core.Web.Base.Controllers;
|
||||
using Saxonite.Net.Standard.Base.App;
|
||||
using Saxonite.Net.Standard.Base.Bus;
|
||||
using Saxonite.Net.Standard.Base.Mgr;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Saxonite.Net.Core.UnitTests.Web.Admin.App
|
||||
{
|
||||
//=======================================================================
|
||||
[TestFixture]
|
||||
public class SaxSessionData_Admin_Tester
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Properties.
|
||||
public static SaxApplication_Admin App { get { return SaxApplication_Admin_Tester.App; } }
|
||||
public static SaxInternals Internals { get { return SaxApplication_Admin_Tester.Internals; } }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
[Test]
|
||||
public void Test_SmmSessionData_Admin_Serialization()
|
||||
{
|
||||
// User account.
|
||||
SaxAccountMgr accountMgr = Internals.AccountMgr;
|
||||
|
||||
// User account.
|
||||
SaxUserAccount userAccount = accountMgr.CreateUserAccount();
|
||||
userAccount.Id = new SysId(45678);
|
||||
userAccount.EmailAddress = "john.smith@acme.co.uk";
|
||||
userAccount.FirstName = "John";
|
||||
userAccount.LastName = "Smith";
|
||||
|
||||
// User Roles.
|
||||
List<SaxUserRole> userRoles = new List<SaxUserRole>();
|
||||
SaxUserRole userRole = accountMgr.CreateUserRole(userAccount.Id, Sax.UserRole.Journalist);
|
||||
userRoles.Add(userRole);
|
||||
|
||||
// Create user session and verify user id.
|
||||
SaxSessionData_Admin sessionData = new SaxSessionData_Admin(App.SessionContext, userAccount, userRoles);
|
||||
Assert.That(SysId.ToInt(sessionData.User.UserAccountId), Is.EqualTo(SysId.ToInt(userAccount.Id)));
|
||||
Assert.That(sessionData.User.FirstName, Is.EqualTo(userAccount.FirstName));
|
||||
Assert.That(sessionData.User.LastName, Is.EqualTo(userAccount.LastName));
|
||||
Assert.That(sessionData.ValidUserSession, Is.True);
|
||||
Assert.That(sessionData.User.DisplayName, Is.Not.EqualTo(""));
|
||||
|
||||
// Filters.
|
||||
sessionData.Filter.SportId = new SysId(2345);
|
||||
sessionData.Filter.RegionId = new SysId(6543);
|
||||
|
||||
// Encryption data.
|
||||
|
||||
int idx = sessionData.NextItemIdx;
|
||||
idx = sessionData.NextItemIdx;
|
||||
idx = sessionData.NextItemIdx;
|
||||
|
||||
// Serialise session data using same method as base controller.
|
||||
String sessionDataJson = NewtonsoftJsonUtil.SerializeObject(sessionData);
|
||||
Assert.That(sessionDataJson, Is.Not.EqualTo(""));
|
||||
Assert.That(sessionDataJson.Contains("Base64IV_"), Is.False);
|
||||
|
||||
// Deserialise session data using same method as base controller.
|
||||
SaxSessionData_Admin sessionDataDeserialised =
|
||||
JsonConvert.DeserializeObject<SaxSessionData_Admin>(
|
||||
sessionDataJson,
|
||||
SaxController_Web.SessionStorage.JsonDeserialisationSettings
|
||||
);
|
||||
Assert.That(sessionDataDeserialised, Is.Not.Null);
|
||||
|
||||
// Validate deserialised values.
|
||||
Assert.That(sessionDataDeserialised.SessionIdx, Is.EqualTo(sessionData.SessionIdx));
|
||||
Assert.That(sessionDataDeserialised.ItemIdx, Is.EqualTo(sessionData.ItemIdx));
|
||||
Assert.That(sessionDataDeserialised.SessionContext.Index, Is.EqualTo(App.SessionContext.Index));
|
||||
Assert.That(sessionDataDeserialised.SessionContext.Application, Is.EqualTo(Sax.Application.Admin));
|
||||
Assert.That(SysId.ToInt(sessionDataDeserialised.User.UserAccountId), Is.EqualTo(SysId.ToInt(sessionData.User.UserAccountId)));
|
||||
Assert.That(SysId.ToInt(sessionDataDeserialised.User.UserAccountId), Is.EqualTo(SysId.ToInt(sessionData.User.UserAccountId)));
|
||||
Assert.That(sessionDataDeserialised.User.EmailAddress, Is.EqualTo(sessionData.User.EmailAddress));
|
||||
Assert.That(sessionDataDeserialised.User.FirstName, Is.EqualTo(sessionData.User.FirstName));
|
||||
Assert.That(sessionDataDeserialised.User.LastName, Is.EqualTo(sessionData.User.LastName));
|
||||
Assert.That(sessionDataDeserialised.User.DisplayName, Is.EqualTo(sessionData.User.DisplayName));
|
||||
// User roles.
|
||||
Assert.That(sessionDataDeserialised.User.Roles.Count, Is.EqualTo(userRoles.Count));
|
||||
|
||||
// Filters.
|
||||
|
||||
// Filters.
|
||||
Assert.That(sessionDataDeserialised.Filter.SportId, Is.EqualTo(sessionData.Filter.SportId));
|
||||
Assert.That(sessionDataDeserialised.Filter.RegionId, Is.EqualTo(sessionData.Filter.RegionId));
|
||||
|
||||
// Encryption data.
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
Reference in New Issue
Block a user