Session data.

This commit is contained in:
Andy Howard
2025-01-22 08:01:51 +00:00
parent 61ecd59794
commit f375e0d175
121 changed files with 3743 additions and 2126 deletions
@@ -1,6 +1,8 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Sarand.BusinessMgr.Net.Core.Web.Consoles;
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Helpers;
using Sarand.Net.Standard.Base.Security;
@@ -12,7 +14,7 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App
{
//=======================================================================
[TestClass]
public class SbmApplication_Database_Tester : SbmPortalApp_Tester_Base
public class SbmApplication_Database_Tester : SbmApplication_Tester_Base
{
//-------------------------------------------------------------------
private static Regex reHex = new Regex("^(?:[A-F0-9]{2})+$", RegexOptions.IgnoreCase);
@@ -21,15 +23,24 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App
[TestMethod]
public void Test_PasswordEncoding()
{
using (SbmSecurityConsole_Web securityConsole = new SbmSecurityConsole_Web(UserContext))
// Record disposable items as they are created so all can be disposed when needed.
using (DisposableCollection<SacsDisposable> disposables = new DisposableCollection<SacsDisposable>())
{
// Session configuration.
string repositoryContext = "Mimo";
SbmSessionContext sessionContext = CreateCoreInstanceConsole(repositoryContext);
Assert.IsNotNull(sessionContext);
SbmInternals internals = new SbmInternals(GetSessionData(sessionContext, repositoryContext));
disposables.Add(internals);
SaSecurityConsole securityConsole = internals.SecurityConsole;
Assert.IsNotNull(BusMgrDatabase);
StringAssert.Matches(securityConsole.EncodePassword_Hex(""), reHex);
// Iterate using random filename (8.3).
for (int i = 0; i < 1000; i++)
StringAssert.Matches(securityConsole.EncodePassword_Hex(Path.GetRandomFileName()), reHex);
}
}
@@ -37,11 +48,19 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App
[TestMethod]
public void Test_PasswordCompare()
{
Assert.IsNotNull(BusMgrDatabase);
Dictionary<string, string> passwordHashes = new Dictionary<string, string>();
using (SbmSecurityConsole_Web securityConsole = new SbmSecurityConsole_Web(UserContext))
// Record disposable items as they are created so all can be disposed when needed.
using (DisposableCollection<SacsDisposable> disposables = new DisposableCollection<SacsDisposable>())
{
// Session configuration.
string repositoryContext = "Mimo";
SbmSessionContext sessionContext = CreateCoreInstanceConsole(repositoryContext);
Assert.IsNotNull(sessionContext);
SbmInternals internals = new SbmInternals(GetSessionData(sessionContext, repositoryContext));
disposables.Add(internals);
SaSecurityConsole securityConsole = internals.SecurityConsole;
// Iterate using random filename (8.3).
for (int i = 0; i < 200; i++)
@@ -1,17 +1,84 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Security;
using Sarand.Net.Standard.Dbas.Base;
namespace Sarand.BusinessMgr.Test.Web.Portal.App
{
//=======================================================================
[TestClass]
class SbmApplication_Portal_Tester : SbmPortalApp_Tester_Base
{
//-------------------------------------------------------------------
[TestMethod]
public void Test_SbmApplication_Portal_CTR()
{
Assert.IsNotNull(App);
}
//=======================================================================
[TestClass]
public class SbmApplication_Portal_Tester : SbmApplication_Tester_Base
{
//-------------------------------------------------------------------
[TestMethod]
public void Test_Application_Application()
{
// Application.
Assert.IsNotNull(App);
Assert.IsNotNull(AppWeb);
Assert.IsNotNull(AppPortal);
}
//-------------------------------------------------------------------
[TestMethod]
public void Test_Application_ControlDatabase()
{
// Control database.
ISacsDatabase db = App.GetControlDatabase();
Assert.IsNotNull(db);
// Tables.
Assert.IsTrue(db.TableExists(SbmDbDfn_Control.GetTableName(SbmDbDfn_Control.TableIdx.Owner)));
Assert.IsTrue(db.TableExists(SbmDbDfn_Control.GetTableName(SbmDbDfn_Control.TableIdx.Repository)));
}
//-------------------------------------------------------------------
[TestMethod]
public void Test_Application_TemplateDatabase()
{
// Template database.
ISacsDatabase db = App.GetTemplateDatabase();
Assert.IsNull(db);
}
//-------------------------------------------------------------------
[TestMethod]
public void Test_Application_ControlInternals()
{
// Record disposable items as they are created so all can be disposed when needed.
using (DisposableCollection<SacsDisposable> disposables = new DisposableCollection<SacsDisposable>())
{
// Control database.
SbmInternals_Control internalsControl = new SbmInternals_Control();
disposables.Add(internalsControl);
Assert.IsNotNull(internalsControl);
// Owners.
Assert.IsNotNull(internalsControl.ControlInstanceMgr);
SbmcOwner.Params prmOwner = new SbmcOwner.Params();
Assert.IsTrue(internalsControl.ControlInstanceMgr.GetOwnerCount(prmOwner) > 0);
// Repositories.
Assert.IsNotNull(internalsControl.ControlInstanceMgr);
SbmcRepository.Params prmRepository = new SbmcRepository.Params();
Assert.IsTrue(internalsControl.ControlInstanceMgr.GetRepositoryCount(prmRepository) > 0);
}
}
//-------------------------------------------------------------------
[TestMethod]
public void Test_Application_SessionContexts()
{
SbmSessionContext sesionContext = AppPortal.GetControlSessionContextByRepositoryContext("Unknown");
Assert.IsNull(sesionContext);
sesionContext = AppPortal.GetControlSessionContextByRepositoryContext("Mimo");
Assert.IsNotNull(sesionContext);
}
//-------------------------------------------------------------------
}
@@ -0,0 +1,160 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using Sarand.BusinessMgr.Net.Core.Web.Controllers;
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Consoles;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Web.Portal.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using Sarand.Net.Standard.Base.Helpers;
using Sarand.Net.Standard.Base.Security;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
namespace Sarand.BusinessMgr.Test.Web.Portal.App
{
//=======================================================================
[TestClass]
public class SbmApplication_SessionData_Tester : SbmApplication_Tester_Base
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
public SbmApplication_SessionData_Tester()
{
}
//-------------------------------------------------------------------
[TestMethod]
public void Test_Application_SessionData_Serialization()
{
// Record disposable items as they are created so all can be disposed when needed.
using (DisposableCollection<SacsDisposable> disposables = new DisposableCollection<SacsDisposable>())
{
// Session configuration.
string repositoryContext = "Mimo";
SbmSessionContext sessionContext = CreateCoreInstanceConsole(repositoryContext);
Assert.IsNotNull(sessionContext);
SbmInternals internals = new SbmInternals(GetSessionData(sessionContext, repositoryContext));
disposables.Add(internals);
ISacsDatabase busMgrDatabase = AppPortal.GetBusMgrDatabase(sessionContext);
// Internals.
SaSecurityConsole securityConsole = internals.SecurityConsole;
Assert.IsNotNull(securityConsole);
securityConsole.RegisterSecurityRights();
SbmAccountMgr accountMgr = internals.AccountMgr;
Assert.IsNotNull(accountMgr);
// Session Console.
SbmSessionConsole sessionConsole = SbmSessionConsole.CreateConsole(internals.UserContext);
// Security item.
SaSecurityItem securityItemUser = securityConsole.GetUserByEmail("andy@sarand.com");
Assert.IsNotNull(securityItemUser);
// Security profile.
// User account.
SbmAffiliate affiliateUser = accountMgr.GetAffiliateByUserId(securityItemUser.Id);
Assert.IsNotNull(affiliateUser);
// Organisations.
List<SysIdString> supervisedOrganisations = accountMgr.GetAffiliatesSupervisedBy(affiliateUser.Id);
Assert.IsNotNull(supervisedOrganisations);
Assert.IsTrue(supervisedOrganisations.Count > 0);
SysId affiliateIdOrganisation = supervisedOrganisations[0].Id;
SbmAssociation associationOrganisation = accountMgr.GetAssociationByOwnerTypeTarget(affiliateIdOrganisation, Sbm.AssociationType.Internal, affiliateIdOrganisation);
Assert.IsNotNull(associationOrganisation);
SbmAffiliate affiliateOrganisation = accountMgr.GetAffiliateById(affiliateIdOrganisation);
Assert.IsNotNull(affiliateOrganisation);
// Populate User Session.
SbmSessionData_Portal sessionData = new SbmSessionData_Portal(sessionContext, repositoryContext, securityItemUser, affiliateUser, associationOrganisation, affiliateOrganisation);
Assert.IsNotNull(sessionData);
// Validate user session.
Assert.IsNotNull(sessionData.User);
// Security item.
Assert.AreEqual(securityItemUser.Id, sessionData.User.SecurityItemId);
Assert.AreEqual(securityItemUser.EmailAddress, sessionData.User.EmailAddress);
// Security profile.
sessionData.SecurityProfile_Core.RefreshProfile(sessionConsole, securityConsole, securityItemUser.Id, securityConsole.GetRegisteredRights());
Assert.IsTrue(sessionData.SecurityProfile_Core.UserCanCreateContacts());
Assert.IsTrue(sessionData.SecurityProfile_Core.UserCanViewFinancials());
// User details.
Assert.AreEqual(affiliateUser.Id, sessionData.User.AffiliateId);
Assert.AreEqual(affiliateUser.FirstName, sessionData.User.FirstName);
Assert.AreEqual(affiliateUser.LastName, sessionData.User.LastName);
Assert.AreEqual(affiliateUser.GetDisplayName(), sessionData.User.DisplayName);
// Organisation details.
Assert.AreEqual(affiliateOrganisation.Id, sessionData.OrganisationAffiliateId);
Assert.AreEqual(associationOrganisation.Id, sessionData.OrganisationAssociationId);
// User profile.
sessionData.Profile.Filter.AssociationId = new SysId(SacsRandomHelper.GetInt32(1000, 1999));
// Serialise data.
string sessionDataJson = JsonConvert.SerializeObject(sessionData);
Assert.IsNotNull(sessionDataJson);
// Deserialise data.
SbmSessionData_Portal sessionDataDeserialized = JsonConvert.DeserializeObject<SbmSessionData_Portal>(sessionDataJson, SbmController_Web.SbmSessionDataJsonSerializerSettings);
Assert.IsNotNull(sessionDataDeserialized);
string sessionDataJsonDeserialized = JsonConvert.SerializeObject(sessionDataDeserialized);
// Validate deserialised data.
Assert.IsTrue(!StringUtil.IsBlank(sessionData.Base64IV_PortalApp));
Assert.IsTrue(!StringUtil.IsBlank(sessionDataDeserialized.Base64IV_PortalApp));
Assert.AreEqual(sessionData.Base64IV_PortalApp, sessionDataDeserialized.Base64IV_PortalApp);
Assert.IsTrue(sessionData.SessionIdx >= 1000);
Assert.AreEqual(sessionData.SessionIdx, sessionDataDeserialized.SessionIdx);
Assert.IsTrue(sessionData.DataIdx >= 1000000);
Assert.IsTrue(sessionDataDeserialized.DataIdx > sessionData.DataIdx);
Assert.AreEqual(repositoryContext, sessionDataDeserialized.RepositoryContext);
// Security item.
Assert.IsNotNull(sessionDataDeserialized.User);
Assert.AreEqual(securityItemUser.Id, sessionDataDeserialized.User.SecurityItemId);
Assert.AreEqual(securityItemUser.EmailAddress, sessionDataDeserialized.User.EmailAddress);
// Security profile.
sessionData.SecurityProfile_Core.RefreshProfile(sessionConsole, securityConsole, securityItemUser.Id, securityConsole.GetRegisteredRights());
Assert.IsNotNull(sessionDataDeserialized.SecurityProfile_Core);
Assert.AreEqual(sessionData.SecurityProfile_Core.UserCanCreateContacts(), sessionDataDeserialized.SecurityProfile_Core.UserCanCreateContacts());
Assert.IsTrue(sessionDataDeserialized.SecurityProfile_Core.UserCanCreateContacts());
Assert.AreEqual(sessionData.SecurityProfile_Core.UserCanViewFinancials(), sessionDataDeserialized.SecurityProfile_Core.UserCanViewFinancials());
Assert.IsTrue(sessionDataDeserialized.SecurityProfile_Core.UserCanViewFinancials());
// User details.
Assert.AreEqual(affiliateUser.Id, sessionDataDeserialized.User.AffiliateId);
Assert.AreEqual(affiliateUser.FirstName, sessionDataDeserialized.User.FirstName);
Assert.AreEqual(affiliateUser.LastName, sessionDataDeserialized.User.LastName);
Assert.AreEqual(affiliateUser.GetDisplayName(), sessionDataDeserialized.User.DisplayName);
// Organisation details.
Assert.AreEqual(affiliateOrganisation.Id, sessionDataDeserialized.Organisation.AffiliateId);
Assert.AreEqual(associationOrganisation.Id, sessionDataDeserialized.Organisation.AssociationId);
Assert.AreEqual(affiliateOrganisation.Name, sessionDataDeserialized.Organisation.DisplayName);
// User profile.
Assert.IsTrue(SysId.ToLong(sessionData.Profile.Filter.AssociationId) >= 1000);
Assert.AreEqual(sessionData.Profile.Filter.AssociationId, sessionDataDeserialized.Profile.Filter.AssociationId);
}
}
}
//=======================================================================
}
@@ -1,16 +1,22 @@
using Microsoft.AspNetCore.Hosting;
using DocumentFormat.OpenXml.EMMA;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Moq;
using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Net.Standard.Base.Core;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control;
using Sarand.BusinessMgr.Web.Portal.App;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Dbas;
using System;
namespace Sarand.BusinessMgr.Test.Web.Portal.App
{
//=======================================================================
public class SbmPortalApp_Tester_Base
public class SbmApplication_Tester_Base : SacsDisposable
{
//-------------------------------------------------------------------
// Application.
@@ -28,38 +34,45 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App
//-------------------------------------------------------------------
// Construction.
protected SbmPortalApp_Tester_Base()
protected SbmApplication_Tester_Base()
{
// Application.
Mock<IConfiguration> mockConfiguration = new Mock<IConfiguration>();
Mock<IWebHostEnvironment> mockEnvironment = new Mock<IWebHostEnvironment>();
mockEnvironment.Setup(m => m.EnvironmentName).Returns(Environments.Development);
mockEnvironment.Setup(m => m.ContentRootPath).Returns(@"D:\Sarand\Projects\Users\AHoward\VS2022\BusinessMgr\Workspace\SaBusinessMgrCoreWebPortal");
App = new SbmApplication_Portal_Test(mockConfiguration.Object, mockEnvironment.Object);
AppPortal = new SbmApplication_Portal_Test(mockConfiguration.Object, mockEnvironment.Object);
Internals_Control = new SbmInternals_Control();
}
// Session configuration.
SessionContextIdx = App.GetSessionContextIdxs()[0];
SessionContext = App.GetSessionContextByIndex(SessionContextIdx);
Internals = new SbmInternals(GetUserContext(SessionContext));
UserContext = GetUserContext(SessionContext);
protected override void Dispose(bool disposing)
{
if (disposing)
{
Internals_Control.Dispose();
}
}
//-------------------------------------------------------------------
// Properties.
protected ushort SessionContextIdx { get; }
protected SbmApplication_Portal App { get; }
protected SbmSessionContext SessionContext { get; }
protected ISacsDatabase BusMgrDatabase { get { return App.GetBusMgrDatabase(SessionContext); } }
protected SbmInternals Internals { get; }
protected SbmUserContext UserContext { get; }
protected SbmApplication App { get { return AppPortal; } }
protected SbmApplication_Web AppWeb { get { return AppPortal; } }
protected SbmApplication_Portal AppPortal { get; }
protected SbmInternals_Control Internals_Control { get; }
//-------------------------------------------------------------------
// User Context.
public static SbmUserContext GetUserContext(SbmSessionContext sessionContext)
public static SbmSessionData_Portal GetSessionData(SbmSessionContext sessionContext, String repositoryContext)
{
SbmUserContext userContext = new SbmUserContext_Web(sessionContext);
SbmSessionData_Portal sessionData = new SbmSessionData_Portal(sessionContext, repositoryContext, null, null, null, null);
return sessionData;
}
return userContext;
//-------------------------------------------------------------------
// Session Context.
protected SbmSessionContext CreateCoreInstanceConsole(String instanceContext)
{
return AppPortal.GetControlSessionContextByRepositoryContext(instanceContext);
}
//-------------------------------------------------------------------
@@ -1,149 +0,0 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using Sarand.BusinessMgr.Net.Core.Web.Controllers;
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Consoles;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Web.Portal.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Helpers;
using Sarand.Net.Standard.Base.Security;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
namespace Sarand.BusinessMgr.Test.Web.Portal.App
{
//=======================================================================
[TestClass]
public class SbmSessionData_Portal_Test : SbmPortalApp_Tester_Base
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
public SbmSessionData_Portal_Test()
{
}
//-------------------------------------------------------------------
[TestMethod]
public void Test_SbmSessionData_Portal_Serialization()
{
// Internals.
SaSecurityConsole securityConsole = App.CreateSecurityConsole(UserContext);
Assert.IsNotNull(securityConsole);
securityConsole.RegisterSecurityRights();
SbmAccountMgr accountMgr = Internals.AccountMgr;
Assert.IsNotNull(accountMgr);
// Session Console.
SbmSessionConsole sessionConsole = SbmSessionConsole.CreateConsole(UserContext);
// Database context.
string repositoryContext = "SBMDB4321";
// Security item.
SaSecurityItem securityItemUser = securityConsole.GetUserByEmail("andy@sarand.com");
Assert.IsNotNull(securityItemUser);
// Security profile.
// User account.
SbmAffiliate affiliateUser = accountMgr.GetAffiliateByUserId(securityItemUser.Id);
Assert.IsNotNull(affiliateUser);
// Organisations.
List<SysIdString> supervisedOrganisations = accountMgr.GetAffiliatesSupervisedBy(affiliateUser.Id);
Assert.IsNotNull(supervisedOrganisations);
Assert.IsTrue(supervisedOrganisations.Count > 0);
SysId affiliateIdOrganisation = supervisedOrganisations[0].Id;
SbmAssociation associationOrganisation = accountMgr.GetAssociationByOwnerTypeTarget(affiliateIdOrganisation, Sbm.AssociationType.Internal, affiliateIdOrganisation);
Assert.IsNotNull(associationOrganisation);
SbmAffiliate affiliateOrganisation = accountMgr.GetAffiliateById(affiliateIdOrganisation);
Assert.IsNotNull(affiliateOrganisation);
// Populate User Session.
SbmSessionData_Portal sessionData = new SbmSessionData_Portal(SessionContext, repositoryContext, securityItemUser, affiliateUser, supervisedOrganisations, associationOrganisation, affiliateOrganisation);
Assert.IsNotNull(sessionData);
// Validate user session.
Assert.IsNotNull(sessionData.User);
// Security item.
Assert.AreEqual(securityItemUser.Id, sessionData.User.SecurityItemId);
Assert.AreEqual(securityItemUser.EmailAddress, sessionData.User.EmailAddress);
// Security profile.
sessionData.SecurityProfile_Core.RefreshProfile(sessionConsole, securityConsole, securityItemUser.Id, securityConsole.GetRegisteredRights());
Assert.IsTrue(sessionData.SecurityProfile_Core.UserCanCreateContacts());
Assert.IsTrue(sessionData.SecurityProfile_Core.UserCanViewFinancials());
// User details.
Assert.AreEqual(affiliateUser.Id, sessionData.User.AffiliateId);
Assert.AreEqual(affiliateUser.FirstName, sessionData.User.FirstName);
Assert.AreEqual(affiliateUser.LastName, sessionData.User.LastName);
Assert.AreEqual(affiliateUser.GetDisplayName(), sessionData.User.DisplayName);
// Organisation details.
Assert.AreEqual(affiliateOrganisation.Id, sessionData.OrganisationAffiliateId);
Assert.AreEqual(associationOrganisation.Id, sessionData.OrganisationAssociationId);
// User profile.
sessionData.Profile.Filter.AssociationId = new SysId(SacsRandomHelper.GetInt32(1000, 1999));
// Serialise data.
string sessionDataJson = JsonConvert.SerializeObject(sessionData);
Assert.IsNotNull(sessionDataJson);
// Deserialise data.
SbmSessionData_Portal sessionDataDeserialized = JsonConvert.DeserializeObject<SbmSessionData_Portal>(sessionDataJson, SbmController_Web.SbmSessionDataJsonSerializerSettings);
Assert.IsNotNull(sessionDataDeserialized);
string sessionDataJsonDeserialized = JsonConvert.SerializeObject(sessionDataDeserialized);
// Validate deserialised data.
Assert.IsTrue(!StringUtil.IsBlank(sessionData.Base64IV_PortalApp));
Assert.IsTrue(!StringUtil.IsBlank(sessionDataDeserialized.Base64IV_PortalApp));
Assert.AreEqual(sessionData.Base64IV_PortalApp, sessionDataDeserialized.Base64IV_PortalApp);
Assert.IsTrue(sessionData.SessionIdx >= 1000);
Assert.AreEqual(sessionData.SessionIdx, sessionDataDeserialized.SessionIdx);
Assert.IsTrue(sessionData.ItemIdx >= 1000);
Assert.AreEqual(sessionData.ItemIdx, sessionDataDeserialized.ItemIdx);
Assert.AreEqual(repositoryContext, sessionDataDeserialized.RepositoryContext);
// Security item.
Assert.IsNotNull(sessionDataDeserialized.User);
Assert.AreEqual(securityItemUser.Id, sessionDataDeserialized.User.SecurityItemId);
Assert.AreEqual(securityItemUser.EmailAddress, sessionDataDeserialized.User.EmailAddress);
// Security profile.
sessionData.SecurityProfile_Core.RefreshProfile(sessionConsole, securityConsole, securityItemUser.Id, securityConsole.GetRegisteredRights());
Assert.IsNotNull(sessionDataDeserialized.SecurityProfile_Core);
Assert.AreEqual(sessionData.SecurityProfile_Core.UserCanCreateContacts(), sessionDataDeserialized.SecurityProfile_Core.UserCanCreateContacts());
Assert.IsTrue(sessionDataDeserialized.SecurityProfile_Core.UserCanCreateContacts());
Assert.AreEqual(sessionData.SecurityProfile_Core.UserCanViewFinancials(), sessionDataDeserialized.SecurityProfile_Core.UserCanViewFinancials());
Assert.IsTrue(sessionDataDeserialized.SecurityProfile_Core.UserCanViewFinancials());
// User details.
Assert.AreEqual(affiliateUser.Id, sessionDataDeserialized.User.AffiliateId);
Assert.AreEqual(affiliateUser.FirstName, sessionDataDeserialized.User.FirstName);
Assert.AreEqual(affiliateUser.LastName, sessionDataDeserialized.User.LastName);
Assert.AreEqual(affiliateUser.GetDisplayName(), sessionDataDeserialized.User.DisplayName);
// Organisation details.
Assert.AreEqual(affiliateOrganisation.Id, sessionDataDeserialized.Organisation.AffiliateId);
Assert.AreEqual(associationOrganisation.Id, sessionDataDeserialized.Organisation.AssociationId);
Assert.AreEqual(affiliateOrganisation.Name, sessionDataDeserialized.Organisation.DisplayName);
// User profile.
Assert.IsTrue(SysId.ToLong(sessionData.Profile.Filter.AssociationId) >= 1000);
Assert.AreEqual(sessionData.Profile.Filter.AssociationId, sessionDataDeserialized.Profile.Filter.AssociationId);
}
}
//=======================================================================
}