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; } }
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; } }