Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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 = []
Exemplo n.º 4
0
    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()
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
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'
Exemplo n.º 7
0
def test_check_name_succeeds():
    rolename = 'foobar'
    assert rolename == common.check_name(rolename)