dnscontrol/docs/unittests.md

39 lines
1 KiB
Markdown
Raw Normal View History

---
layout: default
title: Unit Testing DNS Data
---
2017-05-28 04:13:55 +08:00
# Unit Testing DNS Data
## Built-in Tests
2017-05-28 04:13:55 +08:00
DNSControl performs a number of tests during the validation stage.
You can find them in `pkg/normalize/validate.go`.
## External tests
Tests specific to your environment may be added as external tests.
Output the intermediate representation as a JSON file and perform
tests on this data.
Output the intermediate representation:
dnscontrol -debugjson foo.json print
Here is a sample test written in `bash` using the [jq](https://stedolan.github.io/jq/) command. This fails if the number of MX records in the `stackex.com` domain is not exactly 5:
COUNTMX=$(jq --raw-output <foo.json '.domains[] | select(.name == "stackex.com") | .records[] | select(.type == "MX") | .target' | wc -l)
echo COUNT=:"$COUNTMX":
if [[ "$COUNTMX" -eq "5" ]]; then
echo GOOD
else
echo BAD
fi
## Future directions
Manipulting JSON data is difficult. If you implement ways to make it easier, we'd
gladly accept contributions.