def test_example_config_to_string(self): """ test converting the example config to a string """ fpath = os.path.abspath("dnstest.ini.example") with open(fpath, 'r') as fh: expected = fh.read() dc = DnstestConfig() dc.server_prod = '1.2.3.4' dc.server_test = '1.2.3.5' dc.default_domain = '.example.com' dc.have_reverse_dns = True dc.ignore_ttl = False dc.sleep = 0.0 result = dc.to_string() assert result == expected
def setup_ignorettl(self): """ Sets up test environment for tests of check methods, including redefining resolve_name and lookup_reverse to the appropriate methods in this class """ config = DnstestConfig() config.server_test = "test" config.server_prod = "prod" config.default_domain = ".example.com" config.have_reverse_dns = True config.ignore_ttl = True chk = DNStestChecks(config) # stub chk.DNS.resolve_name = self.stub_resolve_name # stub chk.DNS.lookup_reverse = self.stub_lookup_reverse return chk
def setup_verifies(self): """ Sets up test environment for tests of verify methods, including redefining resolve_name and lookup_reverse to the appropriate methods in this class """ config = DnstestConfig() config.server_test = "test" config.server_prod = "prod" config.default_domain = ".example.com" config.have_reverse_dns = True config.ignore_ttl = False parser = DnstestParser() pydnstest.parser = parser chk = DNStestChecks(config) # stub chk.DNS.resolve_name = self.stub_resolve_name_verify # stub chk.DNS.lookup_reverse = self.stub_lookup_reverse_verify return (parser, chk)
def main(options): """ main function - does everything... split this out this way for testing...p """ # read in config, set variable config = DnstestConfig() if options.exampleconf: config.set_example_values() print(config.to_string()) raise SystemExit(0) if options.promptconfig: # interactively build a configuration file config.prompt_config() raise SystemExit(0) if options.config_file: conf_file = options.config_file else: conf_file = config.find_config_file() if conf_file is None: print("ERROR: no configuration file found. Run with --promptconfig to build one interactively, or --example-config for an example.") raise SystemExit(1) config.load_config(conf_file) if options.ignorettl: config.ignore_ttl = True if options.configprint: print("# {fname}".format(fname=config.conf_file)) print(config.to_string()) raise SystemExit(0) parser = DnstestParser() chk = DNStestChecks(config) if options.sleep: config.sleep = options.sleep print("Note - will sleep %g seconds between lines" % options.sleep) # if no other options, read from stdin if options.testfile: if not os.path.exists(options.testfile): print("ERROR: test file '%s' does not exist." % options.testfile) raise SystemExit(1) fh = open(options.testfile, 'r') else: # read from stdin sys.stderr.write("WARNING: reading from STDIN. Run with '-f filename' to read tests from a file.\n") fh = sys.stdin # read input line by line, handle each line as we're given it passed = 0 failed = 0 for line in fh: line = line.strip() if not line: continue if line[:1] == "#": continue if options.verify: r = run_verify_line(line, parser, chk) else: r = run_check_line(line, parser, chk) if r is False: continue elif r['result']: passed = passed + 1 else: failed = failed + 1 format_test_output(r) if config.sleep is not None and config.sleep > 0.0: sleep(config.sleep) msg = "" if failed == 0: msg = "All %d tests passed. (pydnstest %s)" % (passed, VERSION) else: msg = "%d passed / %d FAILED. (pydnstest %s)" % (passed, failed, VERSION) print("++++ %s" % msg) if options.testfile: # we were reading a file, close it fh.close()
def main(options): """ main function - does everything... split this out this way for testing...p """ # read in config, set variable config = DnstestConfig() if options.exampleconf: config.set_example_values() print(config.to_string()) raise SystemExit(0) if options.promptconfig: # interactively build a configuration file config.prompt_config() raise SystemExit(0) if options.config_file: conf_file = options.config_file else: conf_file = config.find_config_file() if conf_file is None: print( "ERROR: no configuration file found. Run with --promptconfig to build one interactively, or --example-config for an example." ) raise SystemExit(1) config.load_config(conf_file) if options.ignorettl: config.ignore_ttl = True if options.configprint: print("# {fname}".format(fname=config.conf_file)) print(config.to_string()) raise SystemExit(0) parser = DnstestParser() chk = DNStestChecks(config) if options.sleep: config.sleep = options.sleep print("Note - will sleep %g seconds between lines" % options.sleep) # if no other options, read from stdin if options.testfile: if not os.path.exists(options.testfile): print("ERROR: test file '%s' does not exist." % options.testfile) raise SystemExit(1) fh = open(options.testfile, 'r') else: # read from stdin sys.stderr.write( "WARNING: reading from STDIN. Run with '-f filename' to read tests from a file.\n" ) fh = sys.stdin # read input line by line, handle each line as we're given it passed = 0 failed = 0 for line in fh: line = line.strip() if not line: continue if line[:1] == "#": continue if options.verify: r = run_verify_line(line, parser, chk) else: r = run_check_line(line, parser, chk) if r is False: continue elif r['result']: passed = passed + 1 else: failed = failed + 1 format_test_output(r) if config.sleep is not None and config.sleep > 0.0: sleep(config.sleep) msg = "" if failed == 0: msg = "All %d tests passed. (pydnstest %s)" % (passed, VERSION) else: msg = "%d passed / %d FAILED. (pydnstest %s)" % (passed, failed, VERSION) print("++++ %s" % msg) if options.testfile: # we were reading a file, close it fh.close()