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.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.Security; using Sarand.Net.Standard.Base.Utils; using System; using System.Collections.Generic; namespace Sarand.BusinessMgr.Test.Web.Control.App { //======================================================================= [TestClass] public class SbmSessionData_Control_Test : SbmControlApp_Tester_Base { //------------------------------------------------------------------- // Data members. //------------------------------------------------------------------- // Construction. public SbmSessionData_Control_Test() { } //------------------------------------------------------------------- [TestMethod] public void Test_SbmSessionData_Control_Serialization() { // Internals. SaSecurityConsole securityConsole = App.CreateSecurityConsole(UserContext); Assert.IsNotNull(securityConsole); SbmcAccountMgr accountMgr = Internals_Control.ControlAccountMgr; Assert.IsNotNull(accountMgr); // User account. SbmcUserAccount userAccount = accountMgr.GetUserAccountByEmailAddress("andy@sarand.com"); Assert.IsNotNull(userAccount); // Populate User Session. SbmSessionData_Control sessionData = new SbmSessionData_Control(SessionContext, userAccount); Assert.IsNotNull(sessionData); // 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); Assert.IsNotNull(sessionDataJson); // Deserialise data. SbmSessionData_Control? sessionDataDeserialized = JsonConvert.DeserializeObject(sessionDataJson, SbmController_Web.SbmSessionDataJsonSerializerSettings); Assert.IsNotNull(sessionDataDeserialized); // Validate deserialised data. Assert.IsTrue(!StringUtil.IsBlank(sessionData.Base64IV_ControlApp)); Assert.IsTrue(!StringUtil.IsBlank(sessionDataDeserialized.Base64IV_ControlApp)); Assert.AreEqual(sessionData.Base64IV_ControlApp, sessionDataDeserialized.Base64IV_ControlApp); Assert.IsTrue(sessionData.SessionIdx >= 1000); Assert.AreEqual(sessionData.SessionIdx, sessionDataDeserialized.SessionIdx); Assert.IsTrue(sessionData.ItemIdx >= 1000); Assert.AreEqual(sessionData.ItemIdx, sessionDataDeserialized.ItemIdx); // 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); } } //======================================================================= }