using Microsoft.ApplicationInsights.Extensibility.Implementation; using Microsoft.VisualStudio.TestTools.UnitTesting; 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 { //======================================================================= [TestClass] public class SbmApplication_SessionData_Tester : SbmApplication_Tester_Base { //------------------------------------------------------------------- // Data members. //------------------------------------------------------------------- // Construction. public SbmApplication_SessionData_Tester() { } //------------------------------------------------------------------- [TestMethod] public void Test_Application_SessionData_Serialization() { using (DisposableCollection disposables = new DisposableCollection()) { // Internals. SbmcAccountMgr accountMgr = Internals_Control.ControlAccountMgr; Assert.IsNotNull(accountMgr); // User account. SbmcUserAccount userAccount = accountMgr.GetUserAccountByEmailAddress("andy@sarand.com"); disposables.Add(userAccount); Assert.IsNotNull(userAccount); // Session Context? SbmSessionContext? sessionContext_Core = null; // Populate User Session. SbmSessionData_Control sessionData = new SbmSessionData_Control(sessionContext_Core, userAccount); Assert.IsNotNull(sessionData); Assert.IsTrue(!StringUtil.IsBlank(sessionData.Base64IV_ControlApp)); Assert.IsTrue(sessionData.SessionIdx >= 100000); Assert.IsTrue(sessionData.DataIdx >= 1000000); // Validate user session. Assert.IsNotNull(sessionData.User); // User details. Assert.AreEqual(userAccount.Id, sessionData.User.UserAccountId); Assert.AreEqual(userAccount.EmailAddress, sessionData.User.EmailAddress); Assert.AreEqual(userAccount.FirstName, sessionData.User.FirstName); Assert.AreEqual(userAccount.LastName, sessionData.User.LastName); Assert.AreEqual(userAccount.GetDisplayName(), sessionData.User.DisplayName); // Serialise data. string sessionDataJson = JsonConvert.SerializeObject(sessionData, SbmController_Web.SessionDataJsonSerializerSettings); Assert.IsNotNull(sessionDataJson); // Deserialise data. SbmSessionData_Control? sessionDataDeserialized = JsonConvert.DeserializeObject(sessionDataJson, SbmController_Web.SessionDataJsonDeserializerSettings); Assert.IsNotNull(sessionDataDeserialized); // Validate deserialised data. Assert.IsTrue(!StringUtil.IsBlank(sessionDataDeserialized.Base64IV_ControlApp)); Assert.AreEqual(sessionData.Base64IV_ControlApp, sessionDataDeserialized.Base64IV_ControlApp); Assert.AreEqual(sessionData.SessionIdx, sessionDataDeserialized.SessionIdx); Assert.IsTrue(sessionDataDeserialized.DataIdx > sessionData.DataIdx); // User details. Assert.IsNotNull(sessionDataDeserialized.User); Assert.AreEqual(userAccount.Id, sessionDataDeserialized.User.UserAccountId); Assert.AreEqual(userAccount.EmailAddress, sessionDataDeserialized.User.EmailAddress); Assert.AreEqual(userAccount.FirstName, sessionDataDeserialized.User.FirstName); Assert.AreEqual(userAccount.LastName, sessionDataDeserialized.User.LastName); Assert.AreEqual(userAccount.GetDisplayName(), sessionDataDeserialized.User.DisplayName); } } } //======================================================================= }