コード例 #1
0
        private void RunSubCheck(SubCheck subCheck, string responseText, CheckResult result)
        {
            switch (subCheck.Type.Identifier)
            {
            case nameof(SubChecks.ResponseContains):
                var responseContainsOptions = subCheck.GetOptions <ResponseContains>();
                var text = responseContainsOptions.Text;
                if (responseText.Contains(text))
                {
                    _logger.Info($"Response contains '{text}'");
                }
                else
                {
                    throw new SubCheckException($"Response does not contain '{text}'");
                }
                break;

            case nameof(SubChecks.JsonProperty):
                var jsonPropertyOptions = subCheck.GetOptions <JsonProperty>();
                var fieldName           = jsonPropertyOptions.FieldName;
                var exists        = jsonPropertyOptions.Exists;
                var valueContains = jsonPropertyOptions.Value;
                var obj           = JObject.Parse(responseText);
                var value         = obj.SelectToken(fieldName)?.ToString();
                if (value == null && exists)
                {
                    throw new SubCheckException($"Field '{fieldName}' does not exist");
                }
                else if (value != null && !exists)
                {
                    throw new SubCheckException($"Field '{fieldName}' exists");
                }
                if (value != null)
                {
                    if (!string.IsNullOrWhiteSpace(valueContains))
                    {
                        if (value.Contains(valueContains))
                        {
                            _logger.Info($"Field '{fieldName}' contains '{valueContains}'");
                        }
                        else
                        {
                            throw new SubCheckException($"Field '{fieldName}' does not contain '{valueContains}'");
                        }
                    }
                }
                break;

            default:
                _logger.Warn($"Unknown sub-check type {subCheck.TypeID} - ignoring");
                break;
            }
        }
コード例 #2
0
        private void RunSubCheck(SubCheck subCheck, JArray jsonResult, CheckResult checkResult)
        {
            switch (subCheck.Type.Identifier)
            {
            case nameof(SubChecks.FieldEqualTo):
            case nameof(SubChecks.FieldNotEqualTo):
            case nameof(SubChecks.FieldGreaterThan):
            case nameof(SubChecks.FieldLessThan):
                var fieldCompareOptions = subCheck.GetOptions <FieldCompare>();
                var fieldName           = fieldCompareOptions.FieldName;
                var exists        = fieldCompareOptions.Exists;
                var actualValue   = GetFieldValue(fieldName, exists, jsonResult);
                var expectedValue = fieldCompareOptions.Value;
                switch (subCheck.Type.Identifier)
                {
                case nameof(SubChecks.FieldEqualTo):
                    VerifyAreEquals(expectedValue, actualValue, fieldName);
                    break;

                case nameof(SubChecks.FieldNotEqualTo):
                    VerifyAreNotEquals(expectedValue, actualValue, fieldName);
                    break;

                case nameof(SubChecks.FieldGreaterThan):
                    VerifyIsGreaterThan(expectedValue, actualValue, fieldName);
                    break;

                case nameof(SubChecks.FieldLessThan):
                    VerifyIsLessThan(expectedValue, actualValue, fieldName);
                    break;
                }
                break;

            default:
                _logger.Warn($"Unknown sub-check type {subCheck.TypeID} - ignoring");
                break;
            }
        }