public void Validate_ResponseStreamIsNotValidJson_ValidationFails()
        {
            // Arrange
            const string         content      = "Some non-JSON content";
            JsonContentValidator validator    = new JsonContentValidator();
            ResponseDataMock     responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsTrue(validationResult.HasFailures);
        }
        public void Validate_ValidatingBooleanPropertyWithNoExpectedValueAndNoExpectedStateKey_ValidationSucceeds()
        {
            // Arrange
            const string         content   = "{ propertyName: 'true' }";
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonBooleanPropertyValidator("propertyName", true, false, false, null));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsFalse(validationResult.HasFailures);
        }
        public void Validate_ValidatingStringPropertyWithIsRequiredSetToTrue_ValidationSucceeds()
        {
            // Arrange
            const string         content   = "{ propertyName: 'value' }";
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonStringPropertyValidator("propertyName", true, "value", false, null, null));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsFalse(validationResult.HasFailures);
        }
        public void Validate_ValidatingStringArrayPropertyWithActualValueAsEmptyArrayAndIsRequiredSetToTrue_ValidationFails()
        {
            // Arrange
            const string         content   = "{ propertyName: [] }";
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonArrayPropertyValidator("propertyName", true, "value", false, null));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsTrue(validationResult.HasFailures);
        }
        public void Validate_NotRequiredValidatingAbsoluteUrlPropertyWithNoValue_ValidationSucceeds()
        {
            // Arrange
            const string         content   = "{ }";
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonAbsoluteUrlPropertyValidator("propertyName", false, null));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsFalse(validationResult.HasFailures);
        }
Example #6
0
        public void Validate_ValidatingAbsoluteUrlPropertyWithCorrectValue_RequiresAccessToken_ValidationSucceeds()
        {
            // Arrange
            const string         content   = "{ propertyName: 'https://contoso.com/?access_token=abc123' }";
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonAbsoluteUrlPropertyValidator("propertyName", false, true, null));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsFalse(validationResult.HasFailures);
        }
        public void Validate_ValidatingStringArrayPropertyIgnoresCase_ValidationSucceeds()
        {
            // Arrange
            const string         content   = "{ propertyName: ['value', 'value2'] }";
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonArrayPropertyValidator("propertyName", true, "Value", false, null));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsFalse(validationResult.HasFailures);
        }
        public void Validate_ValidatingStringArrayPropertyWithExpectedValueNotPresent_ValidationFails()
        {
            // Arrange
            const string         content   = "{ propertyName: ['value', 'value2'] }";
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonArrayPropertyValidator("propertyName", true, "differentValue", true, null));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsTrue(validationResult.HasFailures);
        }
        public void Validate_ValidatingAbsoluteUrlPropertyWithIncorrectValue_ValidationFails()
        {
            // Arrange
            const string         content   = "{ propertyName: 'bing.com' }";
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonAbsoluteUrlPropertyValidator("propertyName", false, null));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsTrue(validationResult.HasFailures);
        }
        public void Validate_ValidatingIntegerPropertyWithIncorrectExpectedValueAndNoExpectedState_ValidationFails()
        {
            // Arrange
            const string         content   = "{ propertyName: '2' }";
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonIntegerPropertyValidator("propertyName", true, 3, true, null));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsTrue(validationResult.HasFailures);
        }
        public void Validate_ValidatingStringPropertyEndsWith_ValidationFails()
        {
            // Arrange
            const string         content   = "{ propertyName: 'propertyValueSuffix' }";
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonStringPropertyValidator("propertyName", true, "propertyValueSuffix", true, "Value", null));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsTrue(validationResult.HasFailures);
        }
        public void Validate_ValidatingBooleanPropertyWithNonBooleanActualValue_ValidationFails()
        {
            // Arrange
            const string         content   = "{ propertyName: 'value' }";
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonBooleanPropertyValidator("propertyName", true, true, true, null));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsTrue(validationResult.HasFailures);
        }
        public void Validate_ResponseStreamIsNull_ValidationFails()
        {
            // Arrange
            JsonContentValidator validator    = new JsonContentValidator();
            ResponseDataMock     responseData = new ResponseDataMock
            {
                ResponseStream = null
            };

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsTrue(validationResult.HasFailures);
        }
        public void Validate_ValidatingIntegerPropertyWithCorrectExpectedStateValue_ValidationSucceeds()
        {
            // Arrange
            const string content = "{ propertyName: '2' }";
            Dictionary <string, string> savedState = new Dictionary <string, string>()
            {
                { "StateKey", "2" }
            };
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonIntegerPropertyValidator("propertyName", true, 1, true, "StateKey"));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, savedState);

            // Assert
            Assert.IsFalse(validationResult.HasFailures);
        }
        public void Validate_ValidatingStringArrayPropertyWithExpectedValueNotPresentAndIncorrectExpectedStateValue_ValidationFails()
        {
            // Arrange
            const string content = "{ propertyName: ['value', 'value2'] }";
            Dictionary <string, string> savedState = new Dictionary <string, string>()
            {
                { "StateKey", "incorrect value" }
            };
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonArrayPropertyValidator("propertyName", true, "incorrect value", true, "StateKey"));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, savedState);

            // Assert
            Assert.IsTrue(validationResult.HasFailures);
        }
        public void Validate_ValidatingBooleanPropertyWithNoExpectedValueAndNonBooleanExpectedStateValue_ValidationFails()
        {
            // Arrange
            const string content = "{ propertyName: '2' }";
            Dictionary <string, string> savedState = new Dictionary <string, string>()
            {
                { "StateKey", "non boolean" }
            };
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonBooleanPropertyValidator("propertyName", true, false, false, "StateKey"));
            ResponseDataMock responseData = CreateDefaultResponseDataMock(content);

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, savedState);

            // Assert
            Assert.IsTrue(validationResult.HasFailures);
        }
        public void Validate_Null_Content_String_Validation_Fails()
        {
            // Arrange
            const string         content   = "";
            JsonContentValidator validator = new JsonContentValidator(
                new JsonContentValidator.JsonStringPropertyValidator("propertyName", true, "value", true, null, null));
            ResponseDataMock responseData = new ResponseDataMock
            {
                ResponseStream      = new MemoryStream(Encoding.UTF8.GetBytes(content)),
                ResponseContentText = null,
                IsTextResponse      = true
            };

            // Act
            ValidationResult validationResult = validator.Validate(responseData, null, null);

            // Assert
            Assert.IsTrue(validationResult.HasFailures);
        }