def test_init_options(self): user1 = models.DatastoreUser(self.username) self._test_user_basic(user1) user2 = models.DatastoreUser(self.username, self.password, self.host, self.dbname) self._test_user_full(user2) user3 = models.DatastoreUser(name=self.username, password=self.password, host=self.host, databases=self.dbname) self._test_user_full(user3)
def _get_user(self, username, hostname): LOG.debug("Get details of a given database user %s." % username) user = models.DatastoreUser(name=username) databases, marker = self.list_databases() out = None for database in databases: db2_db = models.DatastoreSchema.deserialize(database) try: out, err = run_command( system.LIST_DB_USERS % {'dbname': db2_db.name}) except exception.ProcessExecutionError: LOG.debug( "Error while trying to get the users for database: %s." % db2_db.name) continue for item in out.split('\n'): user_access = item.split() if item != "" else None if (user_access is not None and user_access[0].lower() == username.lower() and user_access[1] == 'Y'): user.databases = db2_db.name break return user
def test_checks_fail(self, mock_ignored_users): mock_ignored_users.return_value = [self.username] user = models.DatastoreUser(self.username) self.assertRaises(ValueError, user.check_reserved) self.assertRaises(ValueError, user.check_create) self.assertRaises(ValueError, user.check_delete)
def test_checks_pass(self): user = models.DatastoreUser(self.username) user.check_reserved() user.check_create() user.check_delete()
def test_is_root(self): user = models.DatastoreUser(self.username) self.assertFalse(user._is_root) user.make_root() self.assertTrue(user._is_root)
def test_validate_dict_defaults(self): user = models.DatastoreUser(self.username) user.verify_dict() self.assertIsNone(user.password) self.assertEqual(self.host_wildcard, user.host) self.assertEqual([], user.databases)
def test_verify_dict(self): user = models.DatastoreUser(self.username, self.password, self.host, self.dbname) self._test_verify_dict_with_mocks(user)
def test_serialize(self): user1 = models.DatastoreUser(self.username) self.assertEqual(self.serial_user_basic, user1.serialize()) user2 = models.DatastoreUser(self.username, self.password, self.host, self.dbname) self.assertEqual(self.serial_user_full, user2.serialize())
def test_init_name(self): user1 = models.DatastoreUser(self.username) self._test_user_basic(user1) user2 = models.DatastoreUser(name=self.username) self._test_user_basic(user2)
def _empty_user(self): return models.DatastoreUser(deserializing=True)
def list_users(self, limit=None, marker=None, include_marker=False): LOG.debug( "List all users for all the databases in a DB2 server instance.") users = [] user_map = {} next_marker = None count = 0 databases, marker = self.list_databases() for database in databases: db2_db = models.DatastoreSchema.deserialize(database) out = None try: out, err = run_command( system.LIST_DB_USERS % {'dbname': db2_db.name}) except exception.ProcessExecutionError: LOG.debug( "There was an error while listing users for database: %s." % db2_db.name) continue userlist = [] for item in out.split('\n'): LOG.debug("item = %r" % item) user = item.split() if item != "" else None LOG.debug("user = %r" % (user)) if (user is not None and (user[0] not in cfg.get_ignored_users() and user[1] == 'Y')): userlist.append(user[0]) result = iter(userlist) if marker is not None: try: item = next(result) while item != marker: item = next(result) if item == marker: marker = None except StopIteration: pass try: item = next(result) while item: ''' Check if the user has already been discovered. If so, add this database to the database list for this user. ''' if item in user_map: db2user = user_map.get(item) db2user.databases = db2_db.name item = next(result) continue ''' If this user was not previously discovered, then add this to the user's list. ''' count = count + 1 if (limit and count <= limit) or limit is None: db2_user = models.DatastoreUser(name=item, databases=db2_db.name) users.append(db2_user.serialize()) user_map.update({item: db2_user}) item = next(result) else: next_marker = None break except StopIteration: next_marker = None if count == limit: break return users, next_marker