コード例 #1
0
        public void SerializerProperty() {
            // Arrange
            ValidateAntiForgeryTokenAttribute attribute = new ValidateAntiForgeryTokenAttribute();
            AntiForgeryDataSerializer newSerializer = new AntiForgeryDataSerializer();

            // Act & Assert
            MemberHelper.TestPropertyWithDefaultInstance(attribute, "Serializer", newSerializer);
        }
        public void DeserializeThrowsIfSerializedTokenIsNull() {
            // Arrange
            AntiForgeryDataSerializer serializer = new AntiForgeryDataSerializer();

            // Act & assert
            ExceptionHelper.ExpectArgumentExceptionNullOrEmpty(
                delegate {
                    serializer.Deserialize(null);
                }, "serializedToken");
        }
        public void DeserializeReturnsDeserializedToken() {
            // Arrange
            Mock<IStateFormatter> mockFormatter = new Mock<IStateFormatter>();
            mockFormatter.Expect(f => f.Deserialize("serialized value")).Returns(new Triplet("the salt", "the value", new DateTime(2001, 1, 1)));

            AntiForgeryDataSerializer serializer = new AntiForgeryDataSerializer() {
                Formatter = mockFormatter.Object
            };

            // Act
            AntiForgeryData token = serializer.Deserialize("serialized value");

            // Assert
            Assert.IsNotNull(token);
            Assert.AreEqual(new DateTime(2001, 1, 1), token.CreationDate);
            Assert.AreEqual("the salt", token.Salt);
            Assert.AreEqual("the value", token.Value);
        }
        public void DeserializeThrowsIfFormatterThrows() {
            // Arrange
            Exception innerException = new Exception();

            Mock<IStateFormatter> mockFormatter = new Mock<IStateFormatter>();
            mockFormatter.Expect(f => f.Deserialize("bad value")).Throws(innerException);

            AntiForgeryDataSerializer serializer = new AntiForgeryDataSerializer() {
                Formatter = mockFormatter.Object
            };

            // Act
            HttpAntiForgeryException ex = ExceptionHelper.ExpectException<HttpAntiForgeryException>(
                delegate {
                    serializer.Deserialize("bad value");
                }, "A required anti-forgery token was not supplied or was invalid.");

            // Assert
            Assert.AreEqual(innerException, ex.InnerException);
        }
コード例 #5
0
        public void GuardClauses() {
            // Arrange
            AntiForgeryDataSerializer serializer = new AntiForgeryDataSerializer();

            // Act & assert
            ExceptionAssert.ThrowsArgNull(
                () => serializer.Serialize(null),
                "token"
            );
            ExceptionAssert.ThrowsArgNullOrEmpty(
                () => serializer.Deserialize(null),
                "serializedToken"
            );
            ExceptionAssert.ThrowsArgNullOrEmpty(
                () => serializer.Deserialize(String.Empty),
                "serializedToken"
            );
            ExceptionAssert.Throws<HttpAntiForgeryException>(
                () => serializer.Deserialize("Corrupted Base-64 Value"),
                "A required anti-forgery token was not supplied or was invalid."
            );
        }
コード例 #6
0
        public void CanRoundTripData() {
            // Arrange
            AntiForgeryDataSerializer serializer = new AntiForgeryDataSerializer {
                Decoder = value => Convert.FromBase64String(value),
                Encoder = bytes => Convert.ToBase64String(bytes),
            };
            AntiForgeryData input = new AntiForgeryData {
                Salt = "The Salt",
                Username = "******",
                Value = "The Value",
                CreationDate = DateTime.Now,
            };

            // Act
            AntiForgeryData output = serializer.Deserialize(serializer.Serialize(input));

            // Assert
            Assert.IsNotNull(output);
            Assert.AreEqual(input.Salt, output.Salt);
            Assert.AreEqual(input.Username, output.Username);
            Assert.AreEqual(input.Value, output.Value);
            Assert.AreEqual(input.CreationDate, output.CreationDate);
        }
        public void SerializeReturnsSerializedString() {
            // Arrange
            AntiForgeryData token = new AntiForgeryData() {
                CreationDate = new DateTime(2001, 1, 1),
                Salt = "the salt",
                Value = "the value"
            };

            Mock<IStateFormatter> mockFormatter = new Mock<IStateFormatter>();
            mockFormatter
                .Expect(f => f.Serialize(It.IsAny<object>()))
                .Returns(
                    delegate(object state) {
                        Triplet t = state as Triplet;
                        Assert.IsNotNull(t);
                        Assert.AreEqual("the salt", t.First);
                        Assert.AreEqual("the value", t.Second);
                        Assert.AreEqual(new DateTime(2001, 1, 1), t.Third);
                        return "serialized value";
                    }
                );

            AntiForgeryDataSerializer serializer = new AntiForgeryDataSerializer() {
                Formatter = mockFormatter.Object
            };

            // Act
            string serializedValue = serializer.Serialize(token);

            // Assert
            Assert.AreEqual("serialized value", serializedValue);
        }
        public void SerializeThrowsIfTokenIsNull() {
            // Arrange
            AntiForgeryDataSerializer serializer = new AntiForgeryDataSerializer();

            // Act & assert
            ExceptionHelper.ExpectArgumentNullException(
                delegate {
                    serializer.Serialize(null);
                }, "token");
        }