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 disposables = new DisposableCollection()) { // 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(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(sessionDataJson, SbmController_Web.SessionDataJsonDeserializerSettings); Assert.That(sessionDataDeserialized, Is.Not.Null); // Validate deserialised data. 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 --- } }