public void SuspendRestore() { var mockHandler = new Mock <DummyHandler>(); var handler = new DummyHandler(); var primaryUa = new UserAccount() { Name = Guid.NewGuid().ToString() }; primaryUa.Save(); var secondaryUa = new UserAccount() { Name = Guid.NewGuid().ToString() }; secondaryUa.Save(); var primaryId = new IdentityInfo(primaryUa.Id, primaryUa.Name); var secondaryId = new IdentityInfo(secondaryUa.Id, secondaryUa.Name); var contextData = new RequestContextData(primaryId, RequestContext.GetContext().Tenant, "XYZ", secondaryId) { TimeZone = "XYZTZ" }; var oldContext = new RequestContextData(RequestContext.GetContext()); try { RequestContext.SetContext(contextData); using (new SecurityBypassContext()) { // Suspend IEntity suspendedtask; BackgroundTask bgTask; bgTask = handler.ToBackgroundTask(new DummyParams() { S = "SuspendRestore" }); suspendedtask = handler.CreateSuspendedTask(bgTask); suspendedtask.Save(); Assert.That(handler.annotateSuspendedTask_calls, Is.EqualTo(1)); var castTask = suspendedtask.As <SuspendedTask>(); Assert.That(castTask.StCulture, Is.EqualTo("XYZ")); Assert.That(castTask.StTimezone, Is.EqualTo("XYZTZ")); Assert.That(castTask.StIdentity.Id, Is.EqualTo(primaryUa.Id)); Assert.That(castTask.StSecondaryIdentity.Id, Is.EqualTo(secondaryUa.Id)); IEnumerable <BackgroundTask> restoredTasks; //Restore restoredTasks = handler.RestoreSuspendedTasks(); Assert.That(handler.restoreTaskData_Calls, Is.EqualTo(1)); Assert.That(restoredTasks.Count(), Is.EqualTo(1)); var context = restoredTasks.First().Context; Assert.That(context.Culture, Is.EqualTo("XYZ")); Assert.That(context.TimeZone, Is.EqualTo("XYZTZ")); Assert.That(context.Identity.Id, Is.EqualTo(primaryId.Id)); Assert.That(context.SecondaryIdentity.Id, Is.EqualTo(secondaryId.Id)); var parameter = restoredTasks.First().GetData <DummyParams>(); Assert.That(parameter.S, Is.EqualTo("restored")); } } finally { RequestContext.SetContext(oldContext); } }