def __init__(self, rolename, spec_memberships, dbcontext): self.sql_to_run = [] self.rolename = common.check_name(rolename) logger.debug('self.rolename set to {}'.format(self.rolename)) self.desired_memberships = spec_memberships self.current_memberships = dbcontext.get_role_memberships(rolename) self.is_superuser = dbcontext.is_superuser(rolename)
def __init__(self, rolename, schema, dbcontext, is_personal_schema=False): self.sql_to_run = [] self.rolename = common.check_name(rolename) logger.debug('self.rolename set to {}'.format(self.rolename)) self.schema = schema self.is_personal_schema = is_personal_schema self.current_owner = dbcontext.get_schema_owner(schema) self.schema_objects = dbcontext.get_schema_objects(schema) # If there is no owner then the schema must not exist yet self.exists = self.current_owner is not None
def __init__(self, rolename, spec_attributes, dbcontext): self.sql_to_run = [] self.rolename = common.check_name(rolename) logger.debug('self.rolename set to {}'.format(self.rolename)) self.spec_attributes = spec_attributes self.current_attributes = dbcontext.get_role_attributes(rolename) # We keep track of password-related SQL separately as we don't want running this to # go into the main SQL stream since that could leak password self.password_sql_to_run = []
def __init__(self, rolename, access, object_kind, desired_items, schema_writers, personal_schemas, dbcontext): log_msg = 'Initializing PrivilegeAnalyzer for rolename "{}", access "{}", and object "{}"' logger.debug(log_msg.format(rolename, access, object_kind)) self.sql_to_run = [] self.rolename = common.check_name(rolename) self.access = access self.object_kind = object_kind self.desired_items = desired_items self.schema_writers = schema_writers self.personal_schemas = personal_schemas self.default_acl_possible = self.object_kind in OBJECTS_WITH_DEFAULTS self.current_defaults = dbcontext.get_role_current_defaults( rolename, object_kind, access) self.current_nondefaults = dbcontext.get_role_current_nondefaults( rolename, object_kind, access) self.all_object_owners = dbcontext.get_all_object_owners()
def __init__(self, rolename, objname, dbcontext, is_personal_schema=False): """ Args: rolename (str): The name of the role that should own the schema objname (common.ObjectName): The schema to analyze dbcontext (context.DatabaseContext): A context.DatabaseContext instance for getting information for the associated database is_personal_schemas (bool): Whether this is a personal schema """ self.sql_to_run = [] self.rolename = common.check_name(rolename) logger.debug('self.rolename set to {}'.format(self.rolename)) self.objname = objname self.is_personal_schema = is_personal_schema self.current_owner = dbcontext.get_schema_owner(self.objname) self.schema_objects = dbcontext.get_schema_objects(self.objname) # If there is no owner then the schema must not exist yet self.exists = self.current_owner is not None
def test_check_name_fails_on_quotes(capsys, rolename): with pytest.raises(SystemExit): common.check_name(rolename) assert capsys.readouterr()[0] == common.UNSUPPORTED_CHAR_MSG.format(rolename) + '\n'
def test_check_name_succeeds(): rolename = 'foobar' assert rolename == common.check_name(rolename)