diff --git a/src/bin/xfrin/unittest/xfrin_test.py b/src/bin/xfrin/unittest/xfrin_test.py index 71209889cf9e8e734f047d108bb1e1a5d3ca6777..195bbbb58541e2381e50c956517ae93cbfb9fd11 100644 --- a/src/bin/xfrin/unittest/xfrin_test.py +++ b/src/bin/xfrin/unittest/xfrin_test.py @@ -31,14 +31,25 @@ class TestXfrin(unittest.TestCase): args['zone_name'] = 'sd.cn.' args['port'] = '12345' args['master'] = '218.241.108.122' + args['db_file'] = '/home/tt' name, master, port, db_file = xfr._parse_cmd_params(args) self.assertEqual(port, 12345) self.assertEqual(name, 'sd.cn.') self.assertEqual(master, '218.241.108.122') - self.assertEqual(db_file, '/tmp/zone.sqlite3') + self.assertEqual(db_file, '/home/tt') + def test_parse_cmd_params_1(self): + xfr = MyXfrin() + args = {} + args['port'] = '12345' + args['master'] = '218.241.108.122' + args['db_file'] = '/home/tt' + self.assertRaises(XfrinException, xfr._parse_cmd_params, args) + self.assertRaises(XfrinException, xfr._parse_cmd_params, {'zone_name':'ds.cn.', 'master':'3.3.3'}) + self.assertRaises(XfrinException, xfr._parse_cmd_params, {'zone_name':'ds.cn.'}) + self.assertRaises(XfrinException, xfr._parse_cmd_params, {'master':'ds.cn.'}) if __name__== "__main__": diff --git a/src/bin/xfrin/xfrin.py.in b/src/bin/xfrin/xfrin.py.in index 65aacd55cbdc9514817b143991829ec211f2a026..c524585f7b3bc688ba9e31b89f8bb4892a00a6a2 100644 --- a/src/bin/xfrin/xfrin.py.in +++ b/src/bin/xfrin/xfrin.py.in @@ -372,14 +372,20 @@ class Xfrin(): return answer def _parse_cmd_params(self, args): - zone_name = args['zone_name'] - master = args['master'] + zone_name = args.get('zone_name') + if not zone_name: + raise XfrinException('zone name should be provided') + + master = args.get('master') + if not master: + raise XfrinException('master address should be provided') + check_addr(master) - port = int(args.get('port')) - if port: + port = 53 + port_str = args.get('port') + if port_str: + port = int(port_str) check_port(port) - else: - port = 53 db_file = args.get('db_file') if not db_file: