using Microsoft.VisualStudio.TestTools.UnitTesting; using Newtonsoft.Json; using Sarand.Net.Standard.Base.Bus; using Saxonite.Net.Core.Web.Online.App; using Saxonite.Net.Core.Web.Base.Controllers; using Saxonite.Net.Standard.Base.App; using Saxonite.Net.Standard.Base.Bus; using Saxonite.Net.Standard.Base.Mgr; using System; using System.Collections.Generic; using System.Text; using Sarand.Net.Standard.Base.Helpers; namespace Saxonite.Net.Core.UnitTests.Web.Online.App { //======================================================================= [TestClass] public class SaxSessionData_Tester { //------------------------------------------------------------------- // Properties. public static SaxApplication_Online App { get { return SaxApplication_Online_Tester.App; } } public static SaxInternals Internals { get { return SaxApplication_Online_Tester.Internals; } } //------------------------------------------------------------------- [TestMethod] public void Test_SmmSessionData_Serialization() { // User account. SaxAccountMgr accountMgr = Internals.AccountMgr; // User account. SaxUserAccount userAccount = accountMgr.CreateUserAccount(); userAccount.Id = new SysId(45678); userAccount.EmailAddress = "john.smith@acme.co.uk"; userAccount.FirstName = "John"; userAccount.LastName = "Smith"; // User Roles. List userRoles = new List(); SaxUserRole userRole = accountMgr.CreateUserRole(userAccount.Id, Sax.UserRole.Journalist); userRoles.Add(userRole); // Create user session and verify user id. SaxSessionData_Online sessionData = new SaxSessionData_Online(App.SessionContext, userAccount, userRoles); Assert.AreEqual(SysId.ToInt(sessionData.User.UserAccountId), SysId.ToInt(sessionData.User.UserAccountId)); Assert.AreEqual(userAccount.FirstName, sessionData.User.FirstName); Assert.AreEqual(userAccount.LastName, sessionData.User.LastName); Assert.IsTrue(sessionData.ValidUserSession); Assert.AreNotEqual("", sessionData.User.DisplayName); // Filter properties. SysId filterOrganisationId = new SysId(SacsRandomHelper.GetInt32(Int32.MaxValue)); String filterOrganisationCaption= "Filter organisation caption"; sessionData.Filter.OrganisationId = filterOrganisationId; sessionData.Filter.OrganisationCaption = filterOrganisationCaption; SysId filterOrganisationIdMember = new SysId(SacsRandomHelper.GetInt32(Int32.MaxValue)); String filterOrganisationCaptionMember = "Filter member organisation caption"; sessionData.Filter.OrganisationIdMember = filterOrganisationIdMember; sessionData.Filter.OrganisationCaptionMember = filterOrganisationCaptionMember; // Serialise session data using same method as base controller. String sessionDataJson = JsonConvert.SerializeObject(sessionData); Assert.AreNotEqual("", sessionDataJson); // Deserialise session data using same method as base controller. SaxSessionData_Online sessionDataDeserialized = JsonConvert.DeserializeObject( sessionDataJson, new JsonSerializerSettings { ContractResolver = new SaxController_Base.SessionStorage.SaxSessionDataContractResolver() } ); Assert.IsNotNull(sessionDataDeserialized); // Validate deserialised values. Assert.AreEqual(App.SessionContext.Index, sessionDataDeserialized.SessionContext.Index); Assert.AreEqual(Sax.Application.Online, sessionDataDeserialized.SessionContext.Application); Assert.AreEqual(SysId.ToInt(sessionDataDeserialized.User.UserAccountId), SysId.ToInt(sessionDataDeserialized.User.UserAccountId)); Assert.AreEqual(SysId.ToInt(sessionData.User.UserAccountId), SysId.ToInt(sessionDataDeserialized.User.UserAccountId)); Assert.AreEqual(sessionData.User.EmailAddress, sessionDataDeserialized.User.EmailAddress); Assert.AreEqual(sessionData.User.FirstName, sessionDataDeserialized.User.FirstName); Assert.AreEqual(sessionData.User.LastName, sessionDataDeserialized.User.LastName); Assert.AreEqual(sessionData.User.DisplayName, sessionDataDeserialized.User.DisplayName); // User roles. Assert.AreEqual(userRoles.Count, sessionDataDeserialized.User.Roles.Count); // Filter properties. Assert.IsNotNull(sessionDataDeserialized.Filter); Assert.IsNotNull(sessionDataDeserialized.Filter.OrganisationId); Assert.IsTrue(SysId.IsValid(sessionDataDeserialized.Filter.OrganisationId)); Assert.AreEqual(filterOrganisationId, sessionDataDeserialized.Filter.OrganisationId); Assert.AreEqual(filterOrganisationCaption, sessionDataDeserialized.Filter.OrganisationCaption); Assert.IsNotNull(sessionDataDeserialized.Filter.OrganisationIdMember); Assert.IsTrue(SysId.IsValid(sessionDataDeserialized.Filter.OrganisationIdMember)); Assert.AreEqual(filterOrganisationIdMember, sessionDataDeserialized.Filter.OrganisationIdMember); Assert.AreEqual(filterOrganisationCaptionMember, sessionDataDeserialized.Filter.OrganisationCaptionMember); } //------------------------------------------------------------------- } //======================================================================= }