public void BinderReturnsDeserializedValue()
        {
            // Arrange
            Mock <MvcSerializer> mockSerializer = new Mock <MvcSerializer>();

            mockSerializer.Setup(o => o.Deserialize("some-value", SerializationMode.EncryptedAndSigned)).Returns(42);
            DeserializeAttribute attr = new DeserializeAttribute(SerializationMode.EncryptedAndSigned)
            {
                Serializer = mockSerializer.Object
            };

            IModelBinder        binder    = attr.GetBinder();
            ModelBindingContext mbContext = new ModelBindingContext
            {
                ModelName     = "someKey",
                ValueProvider = new SimpleValueProvider
                {
                    { "someKey", "some-value" }
                }
            };

            // Act
            object retVal = binder.BindModel(null, mbContext);

            // Assert
            Assert.Equal(42, retVal);
        }
예제 #2
0
        public void BinderThrowsIfDataCorrupt()
        {
            // Arrange
            Mock <MvcSerializer> mockSerializer = new Mock <MvcSerializer>();

            mockSerializer.Setup(o => o.Deserialize(It.IsAny <string>(), It.IsAny <SerializationMode>())).Throws(new SerializationException());
            DeserializeAttribute attr = new DeserializeAttribute()
            {
                Serializer = mockSerializer.Object
            };

            IModelBinder        binder    = attr.GetBinder();
            ModelBindingContext mbContext = new ModelBindingContext()
            {
                ModelName     = "someKey",
                ValueProvider = new SimpleValueProvider()
                {
                    { "someKey", "This data is corrupted." }
                }
            };

            // Act & assert
            Exception exception = ExceptionHelper.ExpectException <SerializationException>(
                delegate {
                binder.BindModel(null, mbContext);
            });
        }
예제 #3
0
        public void GetBinder_ReturnsInstanceOfDeserializeAttribute()
        {
            var binder      = new DeserializeAttribute("ids", RequestStore.All);
            var modelBinder = binder.GetBinder();

            Assert.IsNotNull(modelBinder);
            Assert.AreEqual(modelBinder, binder);
        }
예제 #4
0
        public void CanDeserializeFromAll()
        {
            var attr = new DeserializeAttribute("ids", RequestStore.All);

            var ids = (int[])attr.BindModel(_controllerContext, CreateContext(typeof(int[])));

            Assert.IsNotNull(ids);
            Assert.AreEqual(6, ids.Length);
        }
예제 #5
0
        public void Duplicates_Create_CSV_In_QString_Form_Cookies_SvrVars_TempData_RouteData_Order()
        {
            var attr = new DeserializeAttribute("dupe", RequestStore.All);

            var dupe = (string[])attr.BindModel(_controllerContext, CreateContext(typeof(string[])));

            Assert.IsNotNull(dupe);
            Assert.AreEqual("1,2,3,4,5,6", dupe[0]);
        }
        public void BinderThrowsIfBindingContextIsNull()
        {
            // Arrange
            DeserializeAttribute attr = new DeserializeAttribute();
            IModelBinder binder = attr.GetBinder();

            // Act & assert
            Assert.ThrowsArgumentNull(
                delegate { binder.BindModel(null, null); }, "bindingContext");
        }
        public void BinderThrowsIfBindingContextIsNull()
        {
            // Arrange
            DeserializeAttribute attr   = new DeserializeAttribute();
            IModelBinder         binder = attr.GetBinder();

            // Act & assert
            Assert.ThrowsArgumentNull(
                delegate { binder.BindModel(null, null); }, "bindingContext");
        }
        public void ModeDefaultsToSigned()
        {
            // Arrange
            DeserializeAttribute attr = new DeserializeAttribute();

            // Act
            SerializationMode defaultMode = attr.Mode;

            // Assert
            Assert.Equal(SerializationMode.Signed, defaultMode);
        }
        public void ModeDefaultsToPlaintext()
        {
            // Arrange
            DeserializeAttribute attr = new DeserializeAttribute();

            // Act
            SerializationMode defaultMode = attr.Mode;

            // Assert
            Assert.AreEqual(SerializationMode.Plaintext, defaultMode);
        }
        public void BinderReturnsNullIfValueProviderDoesNotContainKey()
        {
            // Arrange
            DeserializeAttribute attr      = new DeserializeAttribute();
            IModelBinder         binder    = attr.GetBinder();
            ModelBindingContext  mbContext = new ModelBindingContext
            {
                ModelName     = "someKey",
                ValueProvider = new SimpleValueProvider()
            };

            // Act
            object retVal = binder.BindModel(null, mbContext);

            // Assert
            Assert.Null(retVal);
        }
        public void BinderReturnsNullIfValueProviderDoesNotContainKey()
        {
            // Arrange
            DeserializeAttribute attr = new DeserializeAttribute();
            IModelBinder binder = attr.GetBinder();
            ModelBindingContext mbContext = new ModelBindingContext
            {
                ModelName = "someKey",
                ValueProvider = new SimpleValueProvider()
            };

            // Act
            object retVal = binder.BindModel(null, mbContext);

            // Assert
            Assert.Null(retVal);
        }
예제 #12
0
        public void BinderReturnsDeserializedValue()
        {
            // Arrange
            DeserializeAttribute attr      = new DeserializeAttribute();
            IModelBinder         binder    = attr.GetBinder();
            ModelBindingContext  mbContext = new ModelBindingContext()
            {
                ModelName     = "someKey",
                ValueProvider = new SimpleValueProvider()
                {
                    { "someKey", "/wECKg==" }
                }
            };

            // Act
            object retVal = binder.BindModel(null, mbContext);

            // Assert
            Assert.AreEqual(42, retVal, "Object was not properly deserialized.");
        }
        public void BinderThrowsIfDataCorrupt()
        {
            // Arrange
            Mock<MvcSerializer> mockSerializer = new Mock<MvcSerializer>();
            mockSerializer.Setup(o => o.Deserialize(It.IsAny<string>(), It.IsAny<SerializationMode>())).Throws(new SerializationException());
            DeserializeAttribute attr = new DeserializeAttribute { Serializer = mockSerializer.Object };

            IModelBinder binder = attr.GetBinder();
            ModelBindingContext mbContext = new ModelBindingContext
            {
                ModelName = "someKey",
                ValueProvider = new SimpleValueProvider
                {
                    { "someKey", "This data is corrupted." }
                }
            };

            // Act & assert
            Exception exception = Assert.Throws<SerializationException>(
                delegate { binder.BindModel(null, mbContext); });
        }
예제 #14
0
        public void BinderThrowsIfDataCorrupt()
        {
            // Arrange
            DeserializeAttribute attr      = new DeserializeAttribute();
            IModelBinder         binder    = attr.GetBinder();
            ModelBindingContext  mbContext = new ModelBindingContext()
            {
                ModelName     = "someKey",
                ValueProvider = new SimpleValueProvider()
                {
                    { "someKey", "This data is corrupted." }
                }
            };

            // Act & assert
            Exception exception = ExceptionHelper.ExpectException <SerializationException>(
                delegate {
                binder.BindModel(null, mbContext);
            },
                @"Deserialization failed. Verify that the data is being deserialized using the same SerializationMode with which it was serialized. Otherwise see the inner exception.");

            Assert.IsNotNull(exception.InnerException, "Inner exception was not propagated correctly.");
        }
        public void BinderReturnsDeserializedValue()
        {
            // Arrange
            Mock<MvcSerializer> mockSerializer = new Mock<MvcSerializer>();
            mockSerializer.Setup(o => o.Deserialize("some-value", SerializationMode.EncryptedAndSigned)).Returns(42);
            DeserializeAttribute attr = new DeserializeAttribute(SerializationMode.EncryptedAndSigned) { Serializer = mockSerializer.Object };

            IModelBinder binder = attr.GetBinder();
            ModelBindingContext mbContext = new ModelBindingContext
            {
                ModelName = "someKey",
                ValueProvider = new SimpleValueProvider
                {
                    { "someKey", "some-value" }
                }
            };

            // Act
            object retVal = binder.BindModel(null, mbContext);

            // Assert
            Assert.Equal(42, retVal);
        }
        public void ModeDefaultsToSigned()
        {
            // Arrange
            DeserializeAttribute attr = new DeserializeAttribute();

            // Act
            SerializationMode defaultMode = attr.Mode;

            // Assert
            Assert.Equal(SerializationMode.Signed, defaultMode);
        }
예제 #17
0
        public void ForCompletenessNoPrefix()
        {
            var attribute = new DeserializeAttribute();

            Assert.IsNull(attribute.Prefix);
        }
예제 #18
0
 public void CanCreateAttribute()
 {
     var attr = new DeserializeAttribute("ids", RequestStore.Params);
 }
예제 #19
0
        public void ForCompleteness()
        {
            var attribute = new DeserializeAttribute("test");

            Assert.AreEqual("test", attribute.Prefix);
        }