Files
andy 9f22b522df 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>
2026-10-16 18:24:16 +01:00

157 lines
8.1 KiB
C#

using NUnit.Framework;
using Newtonsoft.Json;
using Sarand.Net.Standard.Base.Bus;
using Saxonite.Net.Core.Web.Online.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;
using Sarand.Net.Standard.Base.Helpers;
using Sarand.Net.Standard.Base.Utils;
namespace Saxonite.Net.Core.UnitTests.Web.Online.App
{
//=======================================================================
[TestFixture]
public class SaxSessionData_Online_Tester
{
//-------------------------------------------------------------------
// Properties.
public static SaxApplication_Online App { get { return SaxApplication_Online_Tester.App; } }
public static SaxInternals Internals { get { return SaxApplication_Online_Tester.Internals; } }
//-------------------------------------------------------------------
[Test]
public void Test_SmmSessionData_Online_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";
userAccount.RegionIdCountry = new SysId(SacsRandomHelper.GetInt32(Int32.MaxValue));
userAccount.RegionIdProvince = new SysId(SacsRandomHelper.GetInt32(Int32.MaxValue));
// User Roles.
List<SaxUserRole> userRoles = new List<SaxUserRole>();
SaxUserRole userRole = accountMgr.CreateUserRole(userAccount.Id, Sax.UserRole.Journalist);
userRoles.Add(userRole);
// User Sports.
SaxSessionData_Online.UserProfileData.SportData sport1 = new SaxSessionData_Online.UserProfileData.SportData(new SysId(SacsRandomHelper.GetInt32(Int32.MaxValue)), Sarand.Net.Standard.Base.Core.SaStatus.Active);
SaxSessionData_Online.UserProfileData.SportData sport2 = new SaxSessionData_Online.UserProfileData.SportData(new SysId(SacsRandomHelper.GetInt32(Int32.MaxValue)), Sarand.Net.Standard.Base.Core.SaStatus.Active);
SaxSessionData_Online.UserProfileData.SportData sport3 = new SaxSessionData_Online.UserProfileData.SportData(new SysId(SacsRandomHelper.GetInt32(Int32.MaxValue)), Sarand.Net.Standard.Base.Core.SaStatus.Inactive);
List<SaxSessionData_Online.UserProfileData.SportData> sports = new List<SaxSessionData_Online.UserProfileData.SportData>()
{
sport1, sport2, sport3
};
// Create user session and verify user id.
SaxSessionData_Online sessionData = new SaxSessionData_Online(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.User.RegionIdCountry, Is.EqualTo(userAccount.RegionIdCountry));
Assert.That(sessionData.User.RegionIdProvince, Is.EqualTo(userAccount.RegionIdProvince));
Assert.That(sessionData.ValidUserSession, Is.True);
Assert.That(sessionData.User.DisplayName, Is.Not.EqualTo(""));
// User configuration.
sessionData.UserConfig.Profile.Eligibility.HideInfo = true;
// Profile sports.
foreach (SaxSessionData_Online.UserProfileData.SportData sport in sports)
sessionData.Profile.AddSport(sport.SportId, sport.Status);
Assert.That(sessionData.Profile.Sports.Count, Is.EqualTo(sports.Count));
// Filter properties.
SysId filterOrganisationId = new SysId(SacsRandomHelper.GetInt32(Int32.MaxValue));
String filterOrganisationCaption = "Filter organisation caption";
sessionData.Filter.OrganisationId = filterOrganisationId;
sessionData.Filter.OrganisationCaption = filterOrganisationCaption;
SysId filterOrganisationIdMember = new SysId(SacsRandomHelper.GetInt32(Int32.MaxValue));
String filterOrganisationCaptionMember = "Filter member organisation caption";
sessionData.Filter.OrganisationIdMember = filterOrganisationIdMember;
sessionData.Filter.OrganisationCaptionMember = filterOrganisationCaptionMember;
// Encryption data.
int idx = sessionData.NextItemIdx;
idx = sessionData.NextItemIdx;
idx = sessionData.NextItemIdx;
// Serialise session data using same method as base controller.
String sessionDataJson = JsonConvert.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_Online sessionDataDeserialised =
JsonConvert.DeserializeObject<SaxSessionData_Online>(
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.Online));
// User details.
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));
Assert.That(sessionDataDeserialised.User.RegionIdCountry, Is.EqualTo(sessionData.User.RegionIdCountry));
Assert.That(sessionDataDeserialised.User.RegionIdProvince, Is.EqualTo(sessionData.User.RegionIdProvince));
// User roles.
Assert.That(sessionDataDeserialised.User.Roles.Count, Is.EqualTo(userRoles.Count));
foreach (var userRoleDeserialised in sessionDataDeserialised.User.Roles)
{
Assert.That((int)userRoleDeserialised.Role, Is.Not.EqualTo(0));
}
// User configuration.
Assert.That(sessionDataDeserialised.UserConfig.Profile.Eligibility.HideInfo, Is.EqualTo(sessionData.UserConfig.Profile.Eligibility.HideInfo));
// Profile sports.
Assert.That(sessionDataDeserialised.Profile.Sports.Count, Is.EqualTo(sports.Count));
foreach (SaxSessionData_Online.UserProfileData.SportData sport in sports)
{
SaxSessionData_Online.UserProfileData.SportData sportDeserialised = sessionDataDeserialised.Profile.Sports.Find(item => item.SportId.Equals(sport.SportId));
Assert.That(sportDeserialised, Is.Not.Null);
Assert.That(sportDeserialised.SportId, Is.EqualTo(sport.SportId));
Assert.That(sportDeserialised.Status, Is.EqualTo(sport.Status));
}
// Filter properties.
Assert.That(sessionDataDeserialised.Filter, Is.Not.Null);
Assert.That(sessionDataDeserialised.Filter.OrganisationId, Is.Not.Null);
Assert.That(SysId.IsValid(sessionDataDeserialised.Filter.OrganisationId), Is.True);
Assert.That(sessionDataDeserialised.Filter.OrganisationId, Is.EqualTo(filterOrganisationId));
Assert.That(sessionDataDeserialised.Filter.OrganisationCaption, Is.EqualTo(filterOrganisationCaption));
Assert.That(sessionDataDeserialised.Filter.OrganisationIdMember, Is.Not.Null);
Assert.That(SysId.IsValid(sessionDataDeserialised.Filter.OrganisationIdMember), Is.True);
Assert.That(sessionDataDeserialised.Filter.OrganisationIdMember, Is.EqualTo(filterOrganisationIdMember));
Assert.That(sessionDataDeserialised.Filter.OrganisationCaptionMember, Is.EqualTo(filterOrganisationCaptionMember));
// Encryption data.
}
//-------------------------------------------------------------------
}
//=======================================================================
}