public void Save_NullSession_EmptyDictionary_DoesNotThrow() {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();

            // Act
            testProvider.SaveTempData(GetControllerContext(), new Dictionary<string, object>());
        }
        public void Save_NullSession_NullDictionary_DoesNotThrow() {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();

            // Act
            testProvider.SaveTempData(GetControllerContext(), null);
        }
        public static ITempDataProvider GetProvider(long type)
        {
            ITempDataProvider tempDataProvider = null;

            switch (type)
            {
            case 1:
            {
                tempDataProvider = new CacheTempDataProvider();
                break;
            }

            case 2:
            {
                tempDataProvider = new TokenCacheTempDataProvider();
                break;
            }

            case 3:
            {
                tempDataProvider = new MemcachedTempDataProvider();
                break;
            }

            default:
                tempDataProvider = new SessionStateTempDataProvider();
                break;
            }

            return(tempDataProvider);
        }
Exemple #4
0
        public void Save_NonNullSession_TempDataIsNotDirty_KeyExistsInSession_KeyRemovedFromSession()
        {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();
            Dictionary <string, object>  tempData     = new Dictionary <string, object>();

            Mock <ControllerContext> mockControllerContext = new Mock <ControllerContext>(
                MockBehavior.Strict
                );

            mockControllerContext
            .Setup(
                o => o.HttpContext.Session[SessionStateTempDataProvider.TempDataSessionStateKey]
                )
            .Returns(new object());
            mockControllerContext
            .Setup(
                o =>
                o.HttpContext.Session.Remove(
                    SessionStateTempDataProvider.TempDataSessionStateKey
                    )
                )
            .Verifiable();

            // Act
            testProvider.SaveTempData(mockControllerContext.Object, tempData);

            // Assert
            mockControllerContext.Verify();
        }
Exemple #5
0
 public void CreateTest345()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         TipoPagoController           tipoPagoController;
         ActionResult                 actionResult;
         SessionStateTempDataProvider s0 = new SessionStateTempDataProvider();
         tipoPagoController = new TipoPagoController();
         ((Controller)tipoPagoController).Resolver         = (IDependencyResolver)null;
         ((Controller)tipoPagoController).ActionInvoker    = (IActionInvoker)null;
         ((Controller)tipoPagoController).TempDataProvider = (ITempDataProvider)s0;
         ((Controller)tipoPagoController).Url = (UrlHelper)null;
         ((Controller)tipoPagoController).ViewEngineCollection =
             (ViewEngineCollection)null;
         ((ControllerBase)tipoPagoController).ControllerContext =
             (ControllerContext)null;
         ((ControllerBase)tipoPagoController).TempData        = (TempDataDictionary)null;
         ((ControllerBase)tipoPagoController).ValidateRequest = false;
         ((ControllerBase)tipoPagoController).ValueProvider   = (IValueProvider)null;
         ((ControllerBase)tipoPagoController).ViewData        = (ViewDataDictionary)null;
         disposables.Add((IDisposable)tipoPagoController);
         actionResult = this.CreateTest(tipoPagoController);
         disposables.Dispose();
     }
 }
        public void Save_NullSession_NullDictionary_DoesNotThrow()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();

            // Act & Assert (does not throw)
            testProvider.SaveTempData(GetHttpContext(session: null, sessionEnabled: false), null);
        }
        public void Save_NullSession_NullDictionary_DoesNotThrow()
        {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();

            // Act
            testProvider.SaveTempData(GetControllerContext(), null);
        }
        public void Save_NullSession_EmptyDictionary_DoesNotThrow()
        {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();

            // Act
            testProvider.SaveTempData(GetControllerContext(), new Dictionary <string, object>());
        }
        public void Load_NullSession_ReturnsEmptyDictionary() {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();

            // Act
            IDictionary<string, object> tempDataDictionary = testProvider.LoadTempData(GetControllerContext());

            // Assert
            Assert.AreEqual(0, tempDataDictionary.Count);
        }
        public void Load_NullSession_ReturnsEmptyDictionary()
        {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();

            // Act
            IDictionary <string, object> tempDataDictionary = testProvider.LoadTempData(GetControllerContext());

            // Assert
            Assert.Empty(tempDataDictionary);
        }
        public void SessionProviderSaveThrowsOnDisabledSessionState() {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();

            // Act & Assert
            ExceptionHelper.ExpectInvalidOperationException(
                delegate {
                    testProvider.SaveTempData(GetControllerContext(), new Dictionary<string, object>());
                },
                "The SessionStateTempDataProvider requires SessionState to be enabled.");
        }
        public void Load_ReturnsEmptyDictionary_WhenNoSessionDataIsAvailable()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();

            // Act
            var tempDataDictionary = testProvider.LoadTempData(GetHttpContext());

            // Assert
            Assert.Empty(tempDataDictionary);
        }
        public void Load_ThrowsException_WhenSessionIsNotEnabled()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();

            // Act & Assert
            Assert.Throws<InvalidOperationException>(() =>
            {
                testProvider.LoadTempData(GetHttpContext(sessionEnabled: false));
            });
        }
        public void Save_NullSession_NonEmptyDictionary_Throws()
        {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();

            // Act & Assert
            Assert.Throws <InvalidOperationException>(
                delegate { testProvider.SaveTempData(GetControllerContext(), new Dictionary <string, object> {
                    { "foo", "bar" }
                }); },
                "The SessionStateTempDataProvider class requires session state to be enabled.");
        }
        public void SessionProviderSaveThrowsOnDisabledSessionState()
        {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();

            // Act & Assert
            ExceptionHelper.ExpectInvalidOperationException(
                delegate {
                testProvider.SaveTempData(GetControllerContext(), new Dictionary <string, object>());
            },
                "The SessionStateTempDataProvider requires SessionState to be enabled.");
        }
        public void Load_NonNullSession_NoSessionData_ReturnsEmptyDictionary()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();

            // Act
            var tempDataDictionary = testProvider.LoadTempData(
                GetHttpContext(Mock.Of<ISession>()));

            // Assert
            Assert.Empty(tempDataDictionary);
        }
        public void Load_NullSession_ReturnsEmptyDictionary()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();

            // Act
            var tempDataDictionary = testProvider.LoadTempData(
                GetHttpContext(session: null, sessionEnabled: true));

            // Assert
            Assert.Null(tempDataDictionary);
        }
        public void Save_ThrowsException_WhenSessionIsNotEnabled()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();
            var values = new Dictionary<string, object>();
            values.Add("key1", "value1");

            // Act & Assert
            Assert.Throws<InvalidOperationException>(() =>
            {
                testProvider.SaveTempData(GetHttpContext(sessionEnabled: false), values);
            });
        }
        public void Load_NonNullSession_NoSessionData_ReturnsEmptyDictionary() {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();
            Mock<ControllerContext> mockControllerContext = new Mock<ControllerContext>();
            Mock<HttpSessionStateBase> mockSessionStateBase = new Mock<HttpSessionStateBase>();
            mockControllerContext.Expect(c => c.HttpContext.Session).Returns(mockSessionStateBase.Object);

            // Act
            var result = testProvider.LoadTempData(mockControllerContext.Object);

            // Assert
            Assert.AreEqual(0, result.Count);
        }
        public void Save_NullSession_NonEmptyDictionary_Throws()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();

            // Act & Assert
            Assert.Throws<InvalidOperationException>(() =>
            {
                testProvider.SaveTempData(
                    GetHttpContext(session: null, sessionEnabled: false),
                    new Dictionary<string, object> { { "foo", "bar" } }
                );
            });
        }
        public void Load_NonNullSession_NoSessionData_ReturnsEmptyDictionary()
        {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();
            Mock<ControllerContext> mockControllerContext = new Mock<ControllerContext>();
            Mock<HttpSessionStateBase> mockSessionStateBase = new Mock<HttpSessionStateBase>();
            mockControllerContext.Setup(c => c.HttpContext.Session).Returns(mockSessionStateBase.Object);

            // Act
            IDictionary<string, object> result = testProvider.LoadTempData(mockControllerContext.Object);

            // Assert
            Assert.Empty(result);
        }
        public void EnsureObjectCanBeSerialized_ThrowsException_OnInvalidType(object value, Type type)
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();

            // Act & Assert
            var exception = Assert.Throws<InvalidOperationException>(() =>
            {
                testProvider.EnsureObjectCanBeSerialized(value);
            });
            Assert.Equal($"The '{typeof(SessionStateTempDataProvider).FullName}' cannot serialize " +
                $"an object of type '{type}' to session state.",
                exception.Message);
        }
Exemple #23
0
        protected override void OnInit(EventArgs e)
        {
            using (DisposableTimer.DebugDuration <UmbracoDefault>("Init"))
            {
                base.OnInit(e);

                //This is a special case for webforms since in some cases we may be POSTing to an MVC controller, adding TempData there and then redirecting
                // to a webforms handler. In that case we need to manually clear out the tempdata ourselves since this is normally the function of the base
                // MVC controller instance and since that is not executing, we'll deal with that here.
                //Unfortunately for us though, we can never know which TempDataProvider was used for the previous controller, by default it is the sessionstateprovider
                // but since the tempdataprovider is not a global mvc thing, it is only a per-controller thing, we can only just assume it will be the sessionstateprovider
                var provider = new SessionStateTempDataProvider();
                //We create a custom controller context, the only thing that is referenced from this controller context in the sessionstateprovider is the HttpContext.Session
                // so we just need to ensure that is set
                var ctx = new ControllerContext(new HttpContextWrapper(Context), new RouteData(), new TempDataController());
                provider.LoadTempData(ctx);

                //This is only here for legacy if people arent' using master pages...
                //TODO: We need to test that this still works!! Or do we ??
                if (!UmbracoConfig.For.UmbracoSettings().Templates.UseAspNetMasterPages)
                {
                    var args = new RequestInitEventArgs()
                    {
                        Page    = _upage,
                        PageId  = _upage.PageID,
                        Context = Context
                    };
                    FireBeforeRequestInit(args);

                    //if we are cancelling then return and don't proceed
                    if (args.Cancel)
                    {
                        return;
                    }

                    var pageHolder = new umbraco.layoutControls.umbracoPageHolder
                    {
                        ID = "umbPageHolder"
                    };
                    Page.Controls.Add(pageHolder);
                    _upage.RenderPage(_upage.Template);
                    var umbPageHolder = (layoutControls.umbracoPageHolder)Page.FindControl("umbPageHolder");
                    umbPageHolder.Populate(_upage);

                    //fire the init finished event
                    FireAfterRequestInit(args);
                }
            }
        }
        public void Load_NonNullSession_NoSessionData_ReturnsEmptyDictionary()
        {
            // Arrange
            SessionStateTempDataProvider testProvider          = new SessionStateTempDataProvider();
            Mock <ControllerContext>     mockControllerContext = new Mock <ControllerContext>();
            Mock <HttpSessionStateBase>  mockSessionStateBase  = new Mock <HttpSessionStateBase>();

            mockControllerContext.Expect(c => c.HttpContext.Session).Returns(mockSessionStateBase.Object);

            // Act
            var result = testProvider.LoadTempData(mockControllerContext.Object);

            // Assert
            Assert.AreEqual(0, result.Count);
        }
        public void Load_NonNullSession_CorrectSessionDataType_ReturnsSessionData() {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();
            Dictionary<string, object> tempData = new Dictionary<string, object> { { "foo", "bar" } };
            Mock<ControllerContext> mockControllerContext = new Mock<ControllerContext>();
            Mock<HttpSessionStateBase> mockSessionStateBase = new Mock<HttpSessionStateBase>();
            mockControllerContext.Expect(c => c.HttpContext.Session).Returns(mockSessionStateBase.Object);
            mockSessionStateBase.ExpectGetItem<HttpSessionStateBase, string, object>(SessionStateTempDataProvider.TempDataSessionStateKey).Returns(tempData);

            // Act
            var result = testProvider.LoadTempData(mockControllerContext.Object);

            // Assert
            Assert.AreSame(tempData, result);
        }
        public void Load_NonNullSession_NoSessionData_ReturnsEmptyDictionary()
        {
            // Arrange
            SessionStateTempDataProvider testProvider          = new SessionStateTempDataProvider();
            Mock <ControllerContext>     mockControllerContext = new Mock <ControllerContext>();
            Mock <HttpSessionStateBase>  mockSessionStateBase  = new Mock <HttpSessionStateBase>();

            mockControllerContext.Setup(c => c.HttpContext.Session).Returns(mockSessionStateBase.Object);

            // Act
            IDictionary <string, object> result = testProvider.LoadTempData(mockControllerContext.Object);

            // Assert
            Assert.Empty(result);
        }
        public void Save_NonNullSession_TempDataIsNotDirty_KeyDoesNotExistInSession_SessionRemainsUntouched()
        {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();
            Dictionary <string, object>  tempData     = new Dictionary <string, object>();

            Mock <ControllerContext> mockControllerContext = new Mock <ControllerContext>(MockBehavior.Strict);

            mockControllerContext.Setup(o => o.HttpContext.Session[SessionStateTempDataProvider.TempDataSessionStateKey]).Returns(null);

            // Act
            testProvider.SaveTempData(mockControllerContext.Object, tempData);

            // Assert
            mockControllerContext.Verify();
        }
Exemple #28
0
 public void CreateTest019902()
 {
     using (PexDisposableContext disposables = PexDisposableContext.Create())
     {
         RouteData          routeData;
         TipoPagoController tipoPagoController;
         ActionResult       actionResult;
         routeData = new RouteData((RouteBase)null, (IRouteHandler)null);
         SessionStateTempDataProvider s0 = new SessionStateTempDataProvider();
         ControllerContext            s1 = new ControllerContext();
         s1.Controller  = (ControllerBase)null;
         s1.HttpContext = (HttpContextBase)null;
         RequestContext s2 = new RequestContext();
         s2.HttpContext     = (HttpContextBase)null;
         s2.RouteData       = routeData;
         s1.RequestContext  = s2;
         s1.RouteData       = (RouteData)null;
         tipoPagoController = new TipoPagoController();
         ((Controller)tipoPagoController).Resolver         = (IDependencyResolver)null;
         ((Controller)tipoPagoController).ActionInvoker    = (IActionInvoker)null;
         ((Controller)tipoPagoController).TempDataProvider = (ITempDataProvider)s0;
         ((Controller)tipoPagoController).Url = (UrlHelper)null;
         ((Controller)tipoPagoController).ViewEngineCollection =
             (ViewEngineCollection)null;
         ((ControllerBase)tipoPagoController).ControllerContext = s1;
         ((ControllerBase)tipoPagoController).TempData          = (TempDataDictionary)null;
         ((ControllerBase)tipoPagoController).ValidateRequest   = false;
         ((ControllerBase)tipoPagoController).ValueProvider     = (IValueProvider)null;
         ((ControllerBase)tipoPagoController).ViewData          = (ViewDataDictionary)null;
         disposables.Add((IDisposable)tipoPagoController);
         actionResult = this.CreateTest01(tipoPagoController, (tbTipoPago)null);
         disposables.Dispose();
         Assert.IsNotNull((object)tipoPagoController);
         Assert.IsNotNull(((Controller)tipoPagoController).AsyncManager);
         Assert.IsNotNull
             (((Controller)tipoPagoController).AsyncManager.OutstandingOperations);
         Assert.IsNotNull(((Controller)tipoPagoController).AsyncManager.Parameters);
         Assert.AreEqual <int>
             (45000, ((Controller)tipoPagoController).AsyncManager.Timeout);
         Assert.IsNull(((Controller)tipoPagoController).Url);
         Assert.IsNotNull(((ControllerBase)tipoPagoController).ControllerContext);
         Assert.IsNull
             (((ControllerBase)tipoPagoController).ControllerContext.Controller);
         Assert.AreEqual <bool>
             (false, ((ControllerBase)tipoPagoController).ValidateRequest);
     }
 }
Exemple #29
0
        protected override void OnInit(EventArgs e)
        {
            using (Current.ProfilingLogger.DebugDuration <UmbracoDefault>("Init"))
            {
                base.OnInit(e);

                //This is a special case for webforms since in some cases we may be POSTing to an MVC controller, adding TempData there and then redirecting
                // to a webforms handler. In that case we need to manually clear out the tempdata ourselves since this is normally the function of the base
                // MVC controller instance and since that is not executing, we'll deal with that here.
                //Unfortunately for us though, we can never know which TempDataProvider was used for the previous controller, by default it is the sessionstateprovider
                // but since the tempdataprovider is not a global mvc thing, it is only a per-controller thing, we can only just assume it will be the sessionstateprovider
                var provider = new SessionStateTempDataProvider();
                //We create a custom controller context, the only thing that is referenced from this controller context in the sessionstateprovider is the HttpContext.Session
                // so we just need to ensure that is set
                var ctx = new ControllerContext(new HttpContextWrapper(Context), new RouteData(), new TempDataController());
                provider.LoadTempData(ctx);
            }
        }
        public void Load_NonNullSession_CorrectSessionDataType_ReturnsSessionData()
        {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();
            Dictionary <string, object>  tempData     = new Dictionary <string, object> {
                { "foo", "bar" }
            };
            Mock <ControllerContext>    mockControllerContext = new Mock <ControllerContext>();
            Mock <HttpSessionStateBase> mockSessionStateBase  = new Mock <HttpSessionStateBase>();

            mockControllerContext.Setup(c => c.HttpContext.Session).Returns(mockSessionStateBase.Object);
            mockSessionStateBase.Setup(ssb => ssb[SessionStateTempDataProvider.TempDataSessionStateKey]).Returns(tempData);

            // Act
            var result = testProvider.LoadTempData(mockControllerContext.Object);

            // Assert
            Assert.Same(tempData, result);
        }
        public void Save_NonNullSession_TempDataIsDirty_AssignsTempDataDictionaryIntoSession()
        {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();
            Dictionary <string, object>  tempData     = new Dictionary <string, object> {
                { "foo", "bar" }
            };
            Mock <ControllerContext>    mockControllerContext = new Mock <ControllerContext>();
            Mock <HttpSessionStateBase> mockSessionStateBase  = new Mock <HttpSessionStateBase>();

            mockControllerContext.Setup(c => c.HttpContext.Session).Returns(mockSessionStateBase.Object);
            mockSessionStateBase.SetupSet(ssb => ssb[SessionStateTempDataProvider.TempDataSessionStateKey] = tempData);

            // Act
            testProvider.SaveTempData(mockControllerContext.Object, tempData);

            // Assert
            mockSessionStateBase.VerifyAll();
        }
        public void SaveAndLoad_DictionaryCanBeStoredAndLoaded()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();
            var inputDictionary = new Dictionary<string, string>
            {
                { "Hello", "World" },
            };
            var input = new Dictionary<string, object>
            {
                { "Dictionary", inputDictionary }
            };
            var context = GetHttpContext();

            // Act
            testProvider.SaveTempData(context, input);
            var TempData = testProvider.LoadTempData(context);

            // Assert
            var dictionary = Assert.IsType<Dictionary<string, string>>(TempData["Dictionary"]);
            Assert.Equal("World", dictionary["Hello"]);
        }
        public void SaveAndLoad_EmptyDictionary_RoundTripsAsNull()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();
            var input = new Dictionary<string, object>
            {
                { "EmptyDictionary", new Dictionary<string, int>() }
            };
            var context = GetHttpContext();

            // Act
            testProvider.SaveTempData(context, input);
            var TempData = testProvider.LoadTempData(context);

            // Assert
            var emptyDictionary = (IDictionary<string, int>)TempData["EmptyDictionary"];
            Assert.Null(emptyDictionary);
        }
        public void Save_NonNullSession_TempDataIsNotDirty_KeyDoesNotExistInSession_SessionRemainsUntouched() {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();
            Dictionary<string, object> tempData = new Dictionary<string, object>();

            Mock<ControllerContext> mockControllerContext = new Mock<ControllerContext>(MockBehavior.Strict);
            mockControllerContext.Expect(o => o.HttpContext.Session[SessionStateTempDataProvider.TempDataSessionStateKey]).Returns(null);

            // Act
            testProvider.SaveTempData(mockControllerContext.Object, tempData);

            // Assert
            mockControllerContext.Verify();
        }
        public void SaveAndLoad_ListCanBeStoredAndLoaded()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();
            var input = new Dictionary<string, object>
            {
                { "List`string", new List<string> { "one", "two" } }
            };
            var context = GetHttpContext();

            // Act
            testProvider.SaveTempData(context, input);
            var TempData = testProvider.LoadTempData(context);

            // Assert
            var list = (IList<string>)TempData["List`string"];
            Assert.Equal(2, list.Count);
            Assert.Equal("one", list[0]);
            Assert.Equal("two", list[1]);
        }
        public void SaveAndLoad_EnumCanBeSavedAndLoaded()
        {
            // Arrange
            var key = "EnumValue";
            var testProvider = new SessionStateTempDataProvider();
            var expected = DayOfWeek.Friday;
            var input = new Dictionary<string, object>
            {
                { key, expected }
            };
            var context = GetHttpContext();

            // Act
            testProvider.SaveTempData(context, input);
            var TempData = testProvider.LoadTempData(context);
            var result = TempData[key];

            // Assert
            var actual = (DayOfWeek)result;
            Assert.Equal(expected, actual);
        }
        public void SaveAndLoad_LongCanBeSavedAndLoaded(long expected)
        {
            // Arrange
            var key = "LongValue";
            var testProvider = new SessionStateTempDataProvider();
            var input = new Dictionary<string, object>
            {
                { key, expected }
            };
            var context = GetHttpContext();

            // Act
            testProvider.SaveTempData(context, input);
            var TempData = testProvider.LoadTempData(context);
            var result = TempData[key];

            // Assert
            var actual = Assert.IsType<long>(result);
            Assert.Equal(expected, actual);
        }
        public void SaveAndLoad_DateTimeCanBeStoredAndLoaded()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();
            var inputDatetime = new DateTime(2010, 12, 12, 1, 2, 3, DateTimeKind.Local);
            var input = new Dictionary<string, object>
            {
                { "DateTime", inputDatetime }
            };
            var context = GetHttpContext();

            // Act
            testProvider.SaveTempData(context, input);
            var TempData = testProvider.LoadTempData(context);

            // Assert
            var datetime = Assert.IsType<DateTime>(TempData["DateTime"]);
            Assert.Equal(inputDatetime, datetime);
        }
        public void SaveAndLoad_GuidCanBeStoredAndLoaded()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();
            var inputGuid = Guid.NewGuid();
            var input = new Dictionary<string, object>
            {
                { "Guid", inputGuid }
            };
            var context = GetHttpContext();

            // Act
            testProvider.SaveTempData(context, input);
            var TempData = testProvider.LoadTempData(context);

            // Assert
            var guidVal = Assert.IsType<Guid>(TempData["Guid"]);
            Assert.Equal(inputGuid, guidVal);
        }
        public void SaveAndLoad_BoolCanBeStoredAndLoaded(bool value)
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();
            var input = new Dictionary<string, object>
            {
                { "bool", value }
            };
            var context = GetHttpContext();

            // Act
            testProvider.SaveTempData(context, input);
            var TempData = testProvider.LoadTempData(context);

            // Assert
            var boolVal = Assert.IsType<bool>(TempData["bool"]);
            Assert.Equal(value, boolVal);
        }
        public void Save_NullSession_NonEmptyDictionary_Throws() {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();

            // Act & Assert
            ExceptionHelper.ExpectInvalidOperationException(
                delegate {
                    testProvider.SaveTempData(GetControllerContext(), new Dictionary<string, object> { { "foo", "bar" } });
                },
                "The SessionStateTempDataProvider class requires session state to be enabled.");
        }
        public void Save_NonNullSession_TempDataIsNotDirty_KeyExistsInSession_KeyRemovedFromSession() {
            // Arrange
            SessionStateTempDataProvider testProvider = new SessionStateTempDataProvider();
            Dictionary<string, object> tempData = new Dictionary<string, object>();

            Mock<ControllerContext> mockControllerContext = new Mock<ControllerContext>(MockBehavior.Strict);
            mockControllerContext.Expect(o => o.HttpContext.Session[SessionStateTempDataProvider.TempDataSessionStateKey]).Returns(new object());
            mockControllerContext.Expect(o => o.HttpContext.Session.Remove(SessionStateTempDataProvider.TempDataSessionStateKey)).Verifiable();

            // Act
            testProvider.SaveTempData(mockControllerContext.Object, tempData);

            // Assert
            mockControllerContext.Verify();
        }
        public void SaveAndLoad_StringCanBeStoredAndLoaded()
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();
            var input = new Dictionary<string, object>
            {
                { "string", "value" }
            };
            var context = GetHttpContext();

            // Act
            testProvider.SaveTempData(context, input);
            var TempData = testProvider.LoadTempData(context);

            // Assert
            var stringVal = Assert.IsType<string>(TempData["string"]);
            Assert.Equal("value", stringVal);
        }
        public void EnsureObjectCanBeSerialized_DoesNotThrow_OnValidType(object value)
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();

            // Act & Assert (Does not throw)
            testProvider.EnsureObjectCanBeSerialized(value);
        }
        public void SaveAndLoad_IntCanBeStoredAndLoaded(int expected)
        {
            // Arrange
            var testProvider = new SessionStateTempDataProvider();
            var input = new Dictionary<string, object>
            {
                { "int", expected }
            };
            var context = GetHttpContext();

            // Act
            testProvider.SaveTempData(context, input);
            var TempData = testProvider.LoadTempData(context);

            // Assert
            var intVal = Assert.IsType<int>(TempData["int"]);
            Assert.Equal(expected, intVal);
        }
        private static IServiceProvider GetServiceProvider()
        {
            var httpContext = new DefaultHttpContext();
            var serviceCollection = new ServiceCollection();
            serviceCollection.AddSingleton<IModelMetadataProvider>(new EmptyModelMetadataProvider());
            var tempDataProvider = new SessionStateTempDataProvider();
            serviceCollection.AddSingleton<ITempDataDictionary>(new TempDataDictionary(httpContext, tempDataProvider));

            return serviceCollection.BuildServiceProvider();
        }