Portal signin via Control Instance

This commit is contained in:
Andy Howard
2024-10-29 08:40:47 +00:00
parent bf6bb966bc
commit c5ee285e27
467 changed files with 25771 additions and 3347 deletions
@@ -11,11 +11,11 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<IsPackable>false</IsPackable>
<RootNamespace>Sarand.BusinessMgr</RootNamespace>
<RootNamespace>Sarand.BusinessMgr.Test</RootNamespace>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageReference Include="Moq" Version="4.20.70" />
<PackageReference Include="Moq" Version="4.20.72" />
<PackageReference Include="MSTest.TestAdapter" Version="3.4.3" />
<PackageReference Include="MSTest.TestFramework" Version="3.4.3" />
<PackageReference Include="coverlet.collector" Version="6.0.2">
@@ -39,7 +39,6 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Common-VS\Workspace\SacsCoreWeb\SacsCoreWeb.csproj" />
<ProjectReference Include="..\..\..\Common-VS\Workspace\SacsStandardAccounts\SacsStandardAccounts.csproj" />
<ProjectReference Include="..\..\..\Common-VS\Workspace\SacsStandardBase\SacsStandardBase.csproj" />
<ProjectReference Include="..\..\..\Common-VS\Workspace\SacsStandardDbas\SacsStandardDbas.csproj" />
<ProjectReference Include="..\..\..\Common-VS\Workspace\SacsStandardProc\SacsStandardProc.csproj" />
@@ -1,29 +0,0 @@
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Core.Web.Portal.App;
using Sarand.BusinessMgr.Net.Standard.Base.App;
using System;
using System.Collections.Generic;
using System.Text;
namespace Sarand.BusinessMgr.Test.Net.Core.Web.Portal.App
{
//=======================================================================
[TestClass]
class SbmApplication_Portal_Tester : SbmPortalApp_Tester_Base
{
//-------------------------------------------------------------------
[TestMethod]
public void Test_SbmApplication_Portal_CTR()
{
Assert.IsNotNull(App);
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -1,71 +0,0 @@
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.Core.Web.Portal.App;
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Dbas;
using System;
using System.Collections.Generic;
using System.Text;
namespace Sarand.BusinessMgr.Test.Net.Core.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 = SbmApplication_Portal_Tester.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,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;
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -1,20 +1,18 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json;
using Sarand.BusinessMgr.Net.Core.Web.App;
using Sarand.BusinessMgr.Net.Core.Web.Consoles;
using Sarand.BusinessMgr.Net.Core.Web.Controllers;
using Sarand.BusinessMgr.Net.Core.Web.Portal.App;
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;
using System.Text;
namespace Sarand.BusinessMgr.Test.Net.Core.Web.Portal.App
namespace Sarand.BusinessMgr.Test.Web.Portal.App
{
//=======================================================================
[TestClass]
@@ -31,7 +29,7 @@ namespace Sarand.BusinessMgr.Test.Net.Core.Web.Portal.App
//-------------------------------------------------------------------
[TestMethod]
public void Test_SmmSessionData_Online_Serialization()
public void Test_SbmSessionData_Portal_Serialization()
{
// Internals.
@@ -41,7 +39,7 @@ namespace Sarand.BusinessMgr.Test.Net.Core.Web.Portal.App
Assert.IsNotNull(accountMgr);
// Database context.
String dbIdentifier = "SBMDB4321";
string dbIdentifier = "SBMDB4321";
// Security item.
SaSecurityItem securityItemUser = securityConsole.GetUserByEmail("andy@sarand.com");
@@ -61,8 +59,6 @@ namespace Sarand.BusinessMgr.Test.Net.Core.Web.Portal.App
SbmAffiliate affiliateOrganisation = accountMgr.GetAffiliateById(affiliateIdOrganisation);
Assert.IsNotNull(affiliateOrganisation);
// Profile.
// Populate User Session.
SbmSessionData_Portal sessionData = new SbmSessionData_Portal(SessionContext, dbIdentifier, securityItemUser, affiliateUser, supervisedOrganisations, associationOrganisation, affiliateOrganisation);
@@ -82,12 +78,15 @@ namespace Sarand.BusinessMgr.Test.Net.Core.Web.Portal.App
Assert.AreEqual(affiliateUser.GetDisplayName(), sessionData.User.DisplayName);
// Organisation details.
Assert.AreEqual(affiliateOrganisation.Id, sessionData.Organisation.AffiliateId);
Assert.AreEqual(associationOrganisation.Id, sessionData.Organisation.AssociationId);
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);
string sessionDataJson = JsonConvert.SerializeObject(sessionData);
Assert.IsNotNull(sessionDataJson);
// Deserialise data.
@@ -95,13 +94,17 @@ namespace Sarand.BusinessMgr.Test.Net.Core.Web.Portal.App
Assert.IsNotNull(sessionDataDeserialized);
// Validate deserialised data.
Assert.IsNotNull(sessionDataDeserialized.User);
// Database context.
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);
@@ -115,6 +118,10 @@ namespace Sarand.BusinessMgr.Test.Net.Core.Web.Portal.App
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);
}
}
//=======================================================================