Files
BusinessMgr-2019/SaBusMgrTest_Control/Web/Control/App/SbmApplication_SessionData_Tester.cs
T

94 lines
3.7 KiB
C#

using NUnit.Framework;
using Newtonsoft.Json;
using Sarand.BusinessMgr.Net.Core.Web.Components;
using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.BusinessMgr.Net.Standard.Base.Bus;
using Sarand.BusinessMgr.Net.Standard.Base.Bus.Control;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr;
using Sarand.BusinessMgr.Net.Standard.Base.Mgr.Control;
using Sarand.BusinessMgr.Web.Control.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.Security;
using Sarand.Net.Standard.Base.Utils;
using System;
using System.Collections.Generic;
namespace Sarand.BusinessMgr.Test.Web.Control.App
{
[TestFixture]
public class SbmApplication_SessionData_Tester : SbmApplication_Tester_Base
{
// Construction.
// --- Construction ---
public SbmApplication_SessionData_Tester()
{
}
// --- Tests ---
[Test]
public void Test_Application_SessionData_Serialization()
{
using (DisposableCollection<ISacsDisposable> disposables = new DisposableCollection<ISacsDisposable>())
{
// Internals.
SbmcAccountMgr accountMgr = Internals_Control.ControlAccountMgr;
Assert.That(accountMgr, Is.Not.Null);
// User account.
SbmcUserAccount userAccount = accountMgr.GetUserAccountByEmailAddress("andy@sarand.com");
Assert.That(userAccount, Is.Not.Null);
// Session Context?
SbmSessionContext? sessionContext_Core = null;
// Populate User Session.
SbmSessionData_Control sessionData = new SbmSessionData_Control(sessionContext_Core, userAccount);
Assert.That(sessionData, Is.Not.Null);
Assert.That(!StringUtil.IsBlank(sessionData.Base64IV_ControlApp), Is.True);
Assert.That(sessionData.SessionIdx >= 100000, Is.True);
Assert.That(sessionData.DataIdx >= 1000000, Is.True);
// Validate user session.
Assert.That(sessionData.User, Is.Not.Null);
// User details.
Assert.That(sessionData.User.UserAccountId, Is.EqualTo(userAccount.Id));
Assert.That(sessionData.User.EmailAddress, Is.EqualTo(userAccount.EmailAddress));
Assert.That(sessionData.User.FirstName, Is.EqualTo(userAccount.FirstName));
Assert.That(sessionData.User.LastName, Is.EqualTo(userAccount.LastName));
Assert.That(sessionData.User.DisplayName, Is.EqualTo(userAccount.GetDisplayName()));
// Serialise data.
string sessionDataJson = JsonConvert.SerializeObject(sessionData, SbmController_Web.SessionDataJsonSerializerSettings);
Assert.That(sessionDataJson, Is.Not.Null);
// Deserialise data.
SbmSessionData_Control? sessionDataDeserialized = JsonConvert.DeserializeObject<SbmSessionData_Control>(sessionDataJson, SbmController_Web.SessionDataJsonDeserializerSettings);
Assert.That(sessionDataDeserialized, Is.Not.Null);
// Validate deserialised data.
Assert.That(!StringUtil.IsBlank(sessionDataDeserialized.Base64IV_ControlApp), Is.True);
Assert.That(sessionDataDeserialized.Base64IV_ControlApp, Is.EqualTo(sessionData.Base64IV_ControlApp));
Assert.That(sessionDataDeserialized.SessionIdx, Is.EqualTo(sessionData.SessionIdx));
Assert.That(sessionDataDeserialized.DataIdx > sessionData.DataIdx, Is.True);
// User details.
Assert.That(sessionDataDeserialized.User, Is.Not.Null);
Assert.That(sessionDataDeserialized.User.UserAccountId, Is.EqualTo(userAccount.Id));
Assert.That(sessionDataDeserialized.User.EmailAddress, Is.EqualTo(userAccount.EmailAddress));
Assert.That(sessionDataDeserialized.User.FirstName, Is.EqualTo(userAccount.FirstName));
Assert.That(sessionDataDeserialized.User.LastName, Is.EqualTo(userAccount.LastName));
Assert.That(sessionDataDeserialized.User.DisplayName, Is.EqualTo(userAccount.GetDisplayName()));
}
}
// --- The End ---
}
}