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>
157 lines
8.1 KiB
C#
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.
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|