def testCredFile(self): oldstdout = sys.stdout sys.stdout = StdOutStream() self.assertRaises(SystemExit, roster_client_lib.RunFunction, u'ListUsers', USERNAME, server_name=self.server_name, password=PASSWORD, credfile=CREDFILE) self.assertEqual( sys.stdout.flush(), 'ERROR: Credential file not found, invalid credentials.\n') sys.stdout = oldstdout # create credential file for RunFunction roster_client_lib.GetCredentials(u'shuey', u'testpass', server_name=self.server_name, credfile=CREDFILE) # using file from function above self.assertEqual( roster_client_lib.RunFunction(u'ListUsers', u'shuey', credfile=CREDFILE, server_name=self.server_name, password=PASSWORD)['core_return'], { 'shuey': 64, 'tree_export_user': 0, 'jcollins': 32, 'sharrell': 128 })
def setUp(self): def PickUnusedPort(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, 0)) addr, port = s.getsockname() s.close() return port self.config_instance = roster_core.Config(file_name=CONFIG_FILE) db_instance = self.config_instance.GetDb() db_instance.CreateRosterDatabase() data = open(DATA_FILE, 'r').read() db_instance.StartTransaction() db_instance.cursor.execute(data) db_instance.EndTransaction() db_instance.close() self.port = PickUnusedPort() self.server_name = 'https://%s:%s' % (HOST, self.port) self.daemon_thread = DaemonThread(self.config_instance, self.port) self.daemon_thread.daemon = True self.daemon_thread.start() self.core_instance = roster_core.Core(USERNAME, self.config_instance) self.password = '******' time.sleep(1) roster_client_lib.GetCredentials(USERNAME, u'test', credfile=CREDFILE, server_name=self.server_name)
def setUp(self): def PickUnusedPort(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, 0)) addr, port = s.getsockname() s.close() return port self.config_instance = roster_core.Config(file_name=CONFIG_FILE) db_instance = self.config_instance.GetDb() db_instance.CreateRosterDatabase() data = open(DATA_FILE, 'r').read() db_instance.StartTransaction() db_instance.cursor.execute(data) db_instance.EndTransaction() db_instance.close() self.port = PickUnusedPort() self.server_name = 'https://%s:%s' % (HOST, self.port) self.daemon_thread = DaemonThread(self.config_instance, self.port) self.daemon_thread.daemon = True self.daemon_thread.start() self.core_instance = roster_core.Core(USERNAME, self.config_instance) self.password = '******' time.sleep(1) roster_client_lib.GetCredentials(USERNAME, u'test', credfile=CREDFILE, server_name=self.server_name) self.core_instance.MakeView(u'test_view') self.core_instance.MakeZone(u'sub.university.lcl', u'master', u'sub.university.lcl.', view_name=u'test_view') self.core_instance.MakeZone(u'0.168.192.in-addr.arpa', u'master', u'0.168.192.in-addr.arpa.', view_name=u'test_view') self.core_instance.MakeZone(u'8.0.e.f.f.3.ip6.arpa', u'master', u'8.0.e.f.f.3.ip6.arpa.', view_name=u'test_view') self.core_instance.MakeReverseRangeZoneAssignment( u'0.168.192.in-addr.arpa', u'192.168.0/24') self.core_instance.MakeReverseRangeZoneAssignment( u'8.0.e.f.f.3.ip6.arpa', u'3ffe:0800:0000:0000:0000:0000:0000:0000/24')
def testDnsCredFileCreation(self): os.remove(CREDFILE) self.assertFalse(os.path.exists(CREDFILE)) roster_client_lib.GetCredentials(USERNAME, PASSWORD, credfile=CREDFILE, server_name=self.server_name) self.assertTrue(os.path.exists(CREDFILE)) cred_stat = os.stat(CREDFILE) self.assertTrue(cred_stat.st_mode & stat.S_IRUSR and cred_stat.st_mode & stat.S_IWUSR) self.assertFalse(cred_stat.st_mode & stat.S_IRWXG or cred_stat.st_mode & stat.S_IRWXO)
def testMultipleThreadedConnectionsWithDifferentUsers(self): data_exporter = tree_exporter.BindTreeExport(CONFIG_FILE) self.daemon_instance.core_die_time = 7200 roster_client_lib.RunFunction(u'MakeZone', USERNAME, credstring=self.credential, args=['new_zone', 'master', 'zone.com.'], server_name=self.server_name, password=PASSWORD) cred_dict = {} for user_number in range(40): roster_client_lib.RunFunction(u'MakeUser', USERNAME, credstring=self.credential, args=['user%s' % user_number, 128], server_name=self.server_name) cred_dict['user%s' % user_number] = roster_client_lib.GetCredentials( 'user%s' % user_number, 'tost', server_name=self.server_name) client_threads = [] for record_number in range(5): for user_number in range(40): new_client_thread = ClientRecordModifyThread( 'user%s' % user_number, '192.168.%s.%s' % (user_number, record_number), 'host%s-%s' % (user_number, record_number), cred_dict['user%s' % user_number], self) new_client_thread.daemon = True new_client_thread.start() client_threads.append(new_client_thread) data_exporter.db_instance.StartTransaction() try: data_exporter.db_instance.LockDb() try: data_exporter.GetRawData() finally: data_exporter.db_instance.UnlockDb() finally: data_exporter.db_instance.EndTransaction() for old_thread in client_threads: old_thread.join()
def setUp(self): def PickUnusedPort(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, 0)) addr, port = s.getsockname() s.close() return port self.config_instance = roster_core.Config(file_name=CONFIG_FILE) self.cred_instance = credentials.CredCache(self.config_instance, 5) db_instance = self.config_instance.GetDb() db_instance.CreateRosterDatabase() data = open(DATA_FILE, 'r').read() db_instance.StartTransaction() db_instance.cursor.execute(data) db_instance.EndTransaction() db_instance.close() self.port = PickUnusedPort() self.server_name = 'https://%s:%s' % (HOST, self.port) self.daemon_instance = roster_server.Server(self.config_instance, KEYFILE, CERTFILE, inf_renew_time=5, core_die_time=5, clean_time=0) self.daemon_thread = DaemonThread(self.config_instance, self.port, self.daemon_instance) self.daemon_thread.daemon = True self.daemon_thread.start() time.sleep(1) ## Will create a core_instance in core_store self.credential = roster_client_lib.GetCredentials( USERNAME, PASSWORD, server_name=self.server_name) self.daemon_instance.core_store = [ ] # Clear out core instance from above if (os.path.exists(CREDFILE)): os.remove(CREDFILE) self.core_instance = roster_core.Core(u'sharrell', self.config_instance)
def setUp(self): def PickUnusedPort(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, 0)) addr, port = s.getsockname() s.close() return port self.config_instance = roster_core.Config(file_name=CONFIG_FILE) db_instance = self.config_instance.GetDb() db_instance.CreateRosterDatabase() data = open(DATA_FILE, 'r').read() db_instance.StartTransaction() db_instance.cursor.execute(data) db_instance.EndTransaction() db_instance.close() self.port = PickUnusedPort() self.server_name = 'https://%s:%s' % (HOST, self.port) self.daemon_thread = DaemonThread(self.config_instance, self.port) self.daemon_thread.daemon = True self.daemon_thread.start() self.core_instance = roster_core.Core(USERNAME, self.config_instance) self.password = '******' time.sleep(1) roster_client_lib.GetCredentials(USERNAME, u'test', credfile=CREDFILE, server_name=self.server_name) self.core_instance.MakeView(u'test_view') self.core_instance.MakeView(u'test_view2') self.core_instance.MakeView(u'test_view3') self.core_instance.MakeZone(u'reverse_zone', u'master', u'1.168.192.in-addr.arpa.', view_name=u'test_view') self.core_instance.MakeZone(u'forward_zone', u'master', u'university.edu.', view_name=u'test_view') self.core_instance.MakeZone(u'forward_zone', u'master', u'university.edu.', view_name=u'test_view3') self.core_instance.MakeZone(u'ipv6_zone', u'master', u'university2.edu.', view_name=u'test_view') self.core_instance.MakeZone( u'ipv6_zone_rev', u'master', u'0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.' '0.0.0.1.0.0.2.ip6.arpa.', view_name=u'test_view') self.core_instance.MakeZone(u'reverse_zone', u'master', u'1.168.192.in-addr.arpa.', view_name=u'test_view2') self.core_instance.MakeRecord( u'soa', u'soa1', u'forward_zone', { u'name_server': u'ns1.university.edu.', u'admin_email': u'admin.university.edu.', u'serial_number': 1, u'refresh_seconds': 5, u'retry_seconds': 5, u'expiry_seconds': 5, u'minimum_seconds': 5 }, view_name=u'test_view') self.core_instance.MakeRecord( u'soa', u'soa1', u'reverse_zone', { u'name_server': u'ns1.university.edu.', u'admin_email': u'admin.university.edu.', u'serial_number': 1, u'refresh_seconds': 5, u'retry_seconds': 5, u'expiry_seconds': 5, u'minimum_seconds': 5 }, view_name=u'test_view') self.core_instance.MakeRecord( u'aaaa', u'host2', u'forward_zone', {u'assignment_ip': u'4321:0000:0001:0002:0003:0004:0567:89ab'}, view_name=u'test_view') self.core_instance.MakeRecord(u'a', u'host3', u'forward_zone', {u'assignment_ip': u'192.168.1.5'}, view_name=u'test_view') self.core_instance.MakeRecord(u'a', u'www.host3', u'forward_zone', {u'assignment_ip': u'192.168.1.5'}, view_name=u'test_view') self.core_instance.MakeRecord( u'ptr', u'4', u'reverse_zone', {u'assignment_host': u'host2.university.edu.'}, view_name=u'test_view')
def testGetCredentials(self): credential = roster_client_lib.GetCredentials( USERNAME, PASSWORD, CREDFILE, server_name=self.server_name) self.assertEqual(len(str(credential)), 36)