dnscontrol/integrationTest
Brice Figureau 2fc55dfdc4 Add IGNORE(label) which ignores label at the provider (#183) (#300)
* Add support for the IGNORE(name) directive (#183)

IGNORE is like NO_PURGE but for a spefic record instead of the whole
zone. This is very useful for instance if you have a zone where
only some records are managed externally from dnscontrol (for instance
using kubernetes external dns system).

Adding IGNORE("foo") in the zone will make dnscontrol not trying
to manage the "foo" record (and especially not deleting it).
dnscontrol will error out if the "foo" record is both ignored and
managed in dnscontrol.

This can be seen as a generic Cloudflare's ignored label.

Signed-off-by: Brice Figureau <brice@daysofwonder.com>

* Deprecate CloudFlare ignoredLabels in favor of IGNORE (#183)

Since IGNORE implements a generic `ignoredLabels` system, let
the user know CF `ignoredLabels` are deprecated.

Signed-off-by: Brice Figureau <brice@daysofwonder.com>
2018-01-15 15:39:29 -05:00
..
zones Add support for TXT records with multiple strings (BIND, ROUTE53) (#293) 2018-01-04 19:19:35 -05:00
integration_test.go Add IGNORE(label) which ignores label at the provider (#183) (#300) 2018-01-15 15:39:29 -05:00
providers.json New provider: Linode (#268) 2017-11-14 23:08:06 -05:00
readme.md Integration Testing framework (#46) 2017-03-16 22:42:53 -07:00

Integration Tests

This is a simple framework for testing dns providers by making real requests.

There is a sequence of changes that are defined in the test file that are run against your chosen provider.

For each step, it will run the config once and expect changes. It will run it again and expect no changes. This should give us much higher confidence that providers will work in real life.

Configuration

providers.json should have an object for each provider type under test. This is identical to the json expected in creds.json for dnscontrol, except it also has a "domain" field specified for the domain to test. The domain does not even need to be registered for most providers. Note that providers.json expects environment variables to be specified with the relevant info.

Running a test

  1. Define all environment variables expected for the provider you wish to run. I setup a local .env file with the appropriate values and use zoo to run my commands.
  2. run go test -v -provider $NAME where $NAME is the name of the provider you wish to run.