Session persistent Security Profile
This commit is contained in:
@@ -41,11 +41,11 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App
|
||||
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.
|
||||
SbmInternals internals = new SbmInternals(GetSessionData(sessionContext, repositoryContext));
|
||||
disposables.Add(internals);
|
||||
SaSecurityConsole securityConsole = internals.SecurityConsole;
|
||||
Assert.IsNotNull(securityConsole);
|
||||
securityConsole.RegisterSecurityRights();
|
||||
@@ -88,9 +88,9 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App
|
||||
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());
|
||||
sessionData.SecurityProfile.RefreshProfile(sessionConsole, securityConsole, securityItemUser.Id, securityConsole.GetRegisteredRights());
|
||||
Assert.IsTrue(sessionData.SecurityProfile.UserCanCreateContacts());
|
||||
Assert.IsTrue(sessionData.SecurityProfile.UserCanViewFinancials());
|
||||
|
||||
// User details.
|
||||
Assert.AreEqual(affiliateUser.Id, sessionData.User.AffiliateId);
|
||||
@@ -107,11 +107,11 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App
|
||||
|
||||
|
||||
// Serialise data.
|
||||
string sessionDataJson = JsonConvert.SerializeObject(sessionData);
|
||||
string sessionDataJson = JsonConvert.SerializeObject(sessionData, SbmController_Web.SessionDataJsonSerializerSettings);
|
||||
Assert.IsNotNull(sessionDataJson);
|
||||
|
||||
// Deserialise data.
|
||||
SbmSessionData_Portal sessionDataDeserialized = JsonConvert.DeserializeObject<SbmSessionData_Portal>(sessionDataJson, SbmController_Web.SbmSessionDataJsonSerializerSettings);
|
||||
SbmSessionData_Portal sessionDataDeserialized = JsonConvert.DeserializeObject<SbmSessionData_Portal>(sessionDataJson, SbmController_Web.SessionDataJsonDeserializerSettings);
|
||||
Assert.IsNotNull(sessionDataDeserialized);
|
||||
string sessionDataJsonDeserialized = JsonConvert.SerializeObject(sessionDataDeserialized);
|
||||
|
||||
@@ -131,12 +131,11 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App
|
||||
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());
|
||||
Assert.IsNotNull(sessionDataDeserialized.SecurityProfile);
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserCanCreateContacts(), sessionDataDeserialized.SecurityProfile.UserCanCreateContacts());
|
||||
Assert.IsTrue(sessionDataDeserialized.SecurityProfile.UserCanCreateContacts());
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserCanViewFinancials(), sessionDataDeserialized.SecurityProfile.UserCanViewFinancials());
|
||||
Assert.IsTrue(sessionDataDeserialized.SecurityProfile.UserCanViewFinancials());
|
||||
|
||||
// User details.
|
||||
Assert.AreEqual(affiliateUser.Id, sessionDataDeserialized.User.AffiliateId);
|
||||
@@ -155,6 +154,141 @@ namespace Sarand.BusinessMgr.Test.Web.Portal.App
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
[TestMethod]
|
||||
public void Test_Application_SessionData_SecurityProfile()
|
||||
{
|
||||
// Record disposable items as they are created so all can be disposed when needed.
|
||||
using (DisposableCollection<SacsDisposable> disposables = new DisposableCollection<SacsDisposable>())
|
||||
{
|
||||
//-----------------------------------------------------------
|
||||
// Initialisation.
|
||||
|
||||
// Session configuration.
|
||||
string repositoryContext = "Mimo";
|
||||
SbmSessionContext sessionContext = CreateCoreInstanceConsole(repositoryContext);
|
||||
Assert.IsNotNull(sessionContext);
|
||||
ISacsDatabase busMgrDatabase = AppPortal.GetBusMgrDatabase(sessionContext);
|
||||
|
||||
// User Session.
|
||||
SbmSessionData_Portal sessionData = new SbmSessionData_Portal(sessionContext, repositoryContext, null, null, null, null);
|
||||
Assert.IsNotNull(sessionData);
|
||||
|
||||
// Internals.
|
||||
SbmInternals internals = new SbmInternals(GetSessionData(sessionContext, repositoryContext));
|
||||
disposables.Add(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);
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Quering.
|
||||
|
||||
// Security item.
|
||||
SaSecurityItem securityItemUser = securityConsole.GetUserByEmail("andy@sarand.com");
|
||||
Assert.IsNotNull(securityItemUser);
|
||||
|
||||
// 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);
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Population.
|
||||
|
||||
// Populate User Session.
|
||||
sessionData.Refresh(securityItemUser, affiliateUser, associationOrganisation, affiliateOrganisation);
|
||||
Assert.AreEqual(securityItemUser.Id, sessionData.UserSecurityItemId);
|
||||
Assert.AreEqual(affiliateUser.Id, sessionData.UserAffiliateId);
|
||||
|
||||
// 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.RefreshProfile(sessionConsole, securityConsole, securityItemUser.Id, securityConsole.GetRegisteredRights());
|
||||
Assert.IsTrue(sessionData.SecurityProfile.UserCanManageDatabase());
|
||||
Assert.IsTrue(sessionData.SecurityProfile.UserCanManageInterfaces());
|
||||
Assert.IsTrue(sessionData.SecurityProfile.UserCanCreateContacts());
|
||||
Assert.IsTrue(sessionData.SecurityProfile.UserCanViewFinancials());
|
||||
Assert.IsTrue(sessionData.SecurityProfile.UserCanUpdateItemType(Sbm.ItemType.Asset));
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Storing and Retrieving.
|
||||
|
||||
// Serialise data.
|
||||
string sessionDataJson = JsonConvert.SerializeObject(sessionData, SbmController_Web.SessionDataJsonSerializerSettings);
|
||||
Assert.IsNotNull(sessionDataJson);
|
||||
|
||||
// Deserialise data.
|
||||
SbmSessionData_Portal sessionDataDeserialized = JsonConvert.DeserializeObject<SbmSessionData_Portal>(sessionDataJson, SbmController_Web.SessionDataJsonDeserializerSettings);
|
||||
Assert.IsNotNull(sessionDataDeserialized);
|
||||
string sessionDataJsonDeserialized = JsonConvert.SerializeObject(sessionDataDeserialized);
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Verifing.
|
||||
|
||||
// User.
|
||||
Assert.AreEqual(securityItemUser.Id, sessionDataDeserialized.UserSecurityItemId);
|
||||
Assert.AreEqual(affiliateUser.Id, sessionDataDeserialized.UserAffiliateId);
|
||||
|
||||
// Security profile.
|
||||
Assert.IsNotNull(sessionDataDeserialized.SecurityProfile);
|
||||
Assert.IsTrue(sessionData.SecurityProfile.CompareProfiles(sessionDataDeserialized.SecurityProfile));
|
||||
|
||||
// User.
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserId, sessionDataDeserialized.SecurityProfile.UserId);
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserDisplayName, sessionDataDeserialized.SecurityProfile.UserDisplayName);
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserLocation, sessionDataDeserialized.SecurityProfile.UserLocation);
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserLastLogin, sessionDataDeserialized.SecurityProfile.UserLastLogin);
|
||||
|
||||
// Security groups.
|
||||
|
||||
// Admin.
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserCanManageSecurity(), sessionDataDeserialized.SecurityProfile.UserCanManageSecurity());
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserCanManageDatabase(), sessionDataDeserialized.SecurityProfile.UserCanManageDatabase());
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserCanManageReferenceData(), sessionDataDeserialized.SecurityProfile.UserCanManageReferenceData());
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserCanManageInterfaces(), sessionDataDeserialized.SecurityProfile.UserCanManageInterfaces());
|
||||
|
||||
// Manage.
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserCanManageTasks(), sessionDataDeserialized.SecurityProfile.UserCanManageTasks());
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserCanManageTimesheets(), sessionDataDeserialized.SecurityProfile.UserCanManageTimesheets());
|
||||
|
||||
// Hard-coded rules.
|
||||
|
||||
// Create Contacts.
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserCanCreateContacts(), sessionDataDeserialized.SecurityProfile.UserCanCreateContacts());
|
||||
|
||||
// View Financials.
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserCanViewFinancials(), sessionDataDeserialized.SecurityProfile.UserCanViewFinancials());
|
||||
|
||||
// Rules determined by security groups and rights.
|
||||
|
||||
// Item types.
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserCanCreateItemType(Sbm.ItemType.Asset), sessionDataDeserialized.SecurityProfile.UserCanCreateItemType(Sbm.ItemType.Asset));
|
||||
Assert.AreEqual(sessionData.SecurityProfile.UserCanUpdateItemType(Sbm.ItemType.Asset), sessionDataDeserialized.SecurityProfile.UserCanUpdateItemType(Sbm.ItemType.Asset));
|
||||
|
||||
//-----------------------------------------------------------
|
||||
}
|
||||
}
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user