dnscontrol/providers/octodns/TESTING.md

105 lines
1.8 KiB
Markdown
Raw Normal View History

# Testing:
## Create the environment.
These variables are used in all other sections of this doc.
```bash
export DNSCONFIGDIR=~/gitwork/fakeroot/ExternalDNS
export OCTCONFIGDIR=~/gitwork/octodns/dns
export SRCDIR=~/src/github.com/StackExchange/dnscontrol
```
## Code tests
Unit tests:
```bash
cd $SRCDIR/providers/octodns/octoyaml
go test -v
```
Integration tests:
```bash
cd $SRCDIR/integrationTest
go test -v -verbose -provider OCTODNS
```
## Test against OctoDNS-Validate
### Download OctoDNS:
```bash
cd $DNSCONFIGDIR
mkdir dns
cd dns
virtualenv env
source env/bin/activate
pip install octodns
ln -s ~/gitwork/fakeroot/ExternalDNS/config config
```
### Modify dnsconfig.js
Make a copy of dnsconfig.js and modify it to use OCTODNS as a provider. We did it this way:
```bash
cd $DNSCONFIGDIR/dns
cp ../dnsconfig.js .
cp ../creds.json .
```
Add:
```js
var OCT = NewDnsProvider("octodns", "OCTODNS");
```
Add:
```diff
DEFAULTS(
DnsProvider(SERVERFAULT, 0),
+ DnsProvider(OCT, 0),
NAMESERVER_TTL("2d"),
END);
```
Add:
```diff
var NO_BIND = function(d) {
delete d.dnsProviders[SERVERFAULT];
+ delete d.dnsProviders[OCT];
};
```
## Run the tests:
### Step 1: Generate the files
This builds the software then generates the yaml files in the config directory:
```bash
(cd $SRCDIR && go install ) && cd $DNSCONFIGDIR/dns && rm -f config/*.yaml && dnscontrol push -providers=octodns
```
### Step 2: Run the validator:
This runs octodns-validate against the YAMl files we generated. production.yaml should
list each domain.
We create production.yaml like this:
```bash
cd $DNSCONFIGDIR/dns && $SRCDIR/providers/octodns/mkprodyaml.sh
```
Now we can run the validation:
```bash
cd $DNSCONFIGDIR/dns
cp $SRCDIR/providers/octodns/testdata/production.yaml config/. && env/bin/octodns-validate --log-stream-stdout
```