digd.js/TESTS.md

2.2 KiB

Tests todo:

A - SERVFAIL - should return empty response, ra 0 A - NXDOMAIN - should return SOA A - NOERROR - should return A record - or delegated NS record

Record delegated to self should return SOA record rather than NS delegation

Casing should match on question section, always.

Casing should match on other sections if a direct match? (not required, but efficient for compression pointers)

  • www.EXample.COm + example.com = EXample.COm
  • EXample.COm + www.example.com = www.EXample.COm
  • (this should be taken care of by compression pointer logic, once implemented)

Send malformed packets (both as queries and as answers):

  • bad question count, answer count, etc
  • bad rdata (too long, too short)
  • proper packets, truncated
  • randomly twiddled bits
  • forward compression pointers
  • compression pointers to wrong bits (throw error on non-ascii / unsafe chars)

Test that ANY queries return records of all types matching the domain Test that A queries only return A records, not others matching the domain

# Sample Data:
#   no A records for delegated.daplie.me
#   two external NS records for delegted.daplie.me
#   zone daplie.me exists

# Test:
#   should return NS records in AUTHORITY section, nothing else
node bin/dig.js @localhost -p 65053 A delegated.daplie.me

#   should return NS records in ANSWER section, nothing else
node bin/dig.js @localhost -p 65053 NS delegated.daplie.me


# Sample Data:
#   two A records for daplie.me
#   no NS records

# Test:
#   should return A records in ANSWER section, nothing else
node bin/dig.js @localhost -p 65053 A daplie.me

#   should return SOA records in AUTHORITY section, nothing else
node bin/dig.js @localhost -p 65053 A doesntexist.daplie.me
node bin/dig.js @localhost -p 65053 NS doesntexist.daplie.me


# Sample Data:
#   two A records for a.daplie.me
#   has **internal** NS records

# Test:
#   should return A record in ANSWER section, nothing else
node bin/dig.js @localhost -p 65053 A a.daplie.me

#   should return SOA record in AUTHORITY section, nothing else
node bin/dig.js @localhost -p 65053 A doesntexist.a.daplie.me

#   should return NS records in ANSWER section, nothing else
node bin/dig.js @localhost -p 65053 NS a.daplie.me