public void GuardClauses()
        {
            // Arrange
            var serializer = new HoneypotDataSerializer();

            // Act & assert
            Assert.Throws<ArgumentNullException>(() => serializer.Serialize(null));

            Assert.Throws<ArgumentException>(() => serializer.Deserialize(null));

            Assert.Throws<ArgumentException>(() => serializer.Deserialize(String.Empty));

            Assert.Throws<InvalidOperationException>(() => serializer.Deserialize("Corrupted Base-64 Value"));
        }
        public void CanRoundTripData()
        {
            // Arrange
            var serializer = new HoneypotDataSerializer
            { Decoder = value => Convert.FromBase64String(value), Encoder = bytes => Convert.ToBase64String(bytes) };

            var input = new HoneypotData("input-name");

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

            // Assert
            Assert.NotNull(output);
            Assert.Equal(input.InputNameValue, output.InputNameValue);
            Assert.Equal(input.Key, output.Key);
            Assert.Equal(input.CreationDate, output.CreationDate);
        }