Portal signin via Control Instance
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
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.Web.Portal.App;
|
||||
using Sarand.Net.Standard.Base.Dbas;
|
||||
|
||||
namespace Sarand.BusinessMgr.Test.Web.Portal.App
|
||||
{
|
||||
//=======================================================================
|
||||
public class SbmPortalApp_Tester_Base
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Application.
|
||||
private class SbmApplication_Portal_Test : SbmApplication_Portal
|
||||
{
|
||||
public SbmApplication_Portal_Test(IConfiguration configuration, IWebHostEnvironment env) :
|
||||
base(configuration)
|
||||
{
|
||||
InitEnvironment(env);
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Data members.
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Construction.
|
||||
protected SbmPortalApp_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);
|
||||
|
||||
// Session configuration.
|
||||
SessionContextIdx = App.GetSessionContextIdxs()[0];
|
||||
SessionContext = App.GetSessionContext(SessionContextIdx);
|
||||
Internals = new SbmInternals(GetUserContext(SessionContext));
|
||||
UserContext = GetUserContext(SessionContext);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// 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; }
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// User Context.
|
||||
public static SbmUserContext GetUserContext(SbmSessionContext sessionContext)
|
||||
{
|
||||
SbmUserContext userContext = new SbmUserContext_Web(sessionContext);
|
||||
|
||||
return userContext;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
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.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);
|
||||
SbmAccountMgr accountMgr = Internals.AccountMgr;
|
||||
Assert.IsNotNull(accountMgr);
|
||||
|
||||
// Database context.
|
||||
string dbIdentifier = "SBMDB4321";
|
||||
|
||||
// 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);
|
||||
|
||||
|
||||
// Populate User Session.
|
||||
SbmSessionData_Portal sessionData = new SbmSessionData_Portal(SessionContext, dbIdentifier, 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);
|
||||
|
||||
// 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);
|
||||
|
||||
// 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(dbIdentifier, sessionDataDeserialized.DbIdentifier);
|
||||
|
||||
// Security item.
|
||||
Assert.IsNotNull(sessionDataDeserialized.User);
|
||||
Assert.AreEqual(securityItemUser.Id, sessionDataDeserialized.User.SecurityItemId);
|
||||
Assert.AreEqual(securityItemUser.EmailAddress, sessionDataDeserialized.User.EmailAddress);
|
||||
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
Reference in New Issue
Block a user