示例#1
0
def test_missing_on2():
    statement = "GRANT SELECT, INSERT DATABASE 'taxilake' to 'user'"
    grant = Grant(TestAWSConfig(), sqlparse.parse(statement)[0])
    with pytest.raises(RuntimeError) as excinfo:
        grant.process()

    assert "ON keyword expected. Instead found 'DATABASE'" == str(excinfo.value)
示例#2
0
def test_two_privileges():
    statement = "GRANT SELECT, INSERT ON database 'taxilake' to 'user'"
    grant = Grant(TestAWSConfig(), sqlparse.parse(statement)[0])
    grant.process()
    assert grant.privilege == ['SELECT', 'INSERT']
    assert grant.schema_name == "taxilake"
    assert grant.principal == "user"
示例#3
0
def test_table_privilege():
    statement = "GRANT SELECT, INSERT ON TABLE 'taxilake'.'parq_misc' to 'user'"
    grant = Grant(TestAWSConfig(), sqlparse.parse(statement)[0])
    grant.process()
    assert grant.privilege == ['SELECT', 'INSERT']
    assert grant.schema_name == "taxilake"
    assert grant.table_name == "parq_misc"
    assert grant.principal == "user"
示例#4
0
def test_grant_payload():
    statement = "GRANT SELECT, INSERT ON TABLE 'taxilake'.'parq_misc' to 'user'"
    grant = Grant(TestAWSConfig(), sqlparse.parse(statement)[0])
    grant.process()
    payload = grant.get_payload()
    assert payload['Permissions'] == ['SELECT', 'INSERT']
    assert payload['Principal']['DataLakePrincipalIdentifier'] == "arn:aws:iam::XXXXYYYY:user"
    assert payload['Resource']['Table']['Name'] == "parq_misc"
    assert payload['Resource']['Table']['DatabaseName'] == "taxilake"
示例#5
0
文件: main.py 项目: vrajat/lakecli
 def grant_execute(self, cur, query):
     LOGGER.debug(query)
     from lakecli.privileges.grant_or_revoke import Grant
     grant = Grant(self.aws_config, sqlparse.parse(query)[0])
     try:
         grant.process()
         grant.execute()
         yield (None, None, None, 'GRANT')
     except RuntimeError as err:
         yield (None, None, None, err)