ClickHouse/tests/integration/test_default_role/test.py
2022-03-22 17:39:58 +01:00

95 lines
2.9 KiB
Python

import pytest
from helpers.cluster import ClickHouseCluster
from helpers.test_tools import TSV
cluster = ClickHouseCluster(__file__)
instance = cluster.add_instance("instance")
@pytest.fixture(scope="module", autouse=True)
def started_cluster():
try:
cluster.start()
instance.query("CREATE USER john")
instance.query("CREATE ROLE rx")
instance.query("CREATE ROLE ry")
yield cluster
finally:
cluster.shutdown()
@pytest.fixture(autouse=True)
def reset_users_and_roles():
instance.query("CREATE USER OR REPLACE john")
yield
def test_set_default_roles():
assert instance.query("SHOW CURRENT ROLES", user="john") == ""
instance.query("GRANT rx, ry TO john")
assert instance.query("SHOW CURRENT ROLES", user="john") == TSV(
[["rx", 0, 1], ["ry", 0, 1]]
)
instance.query("SET DEFAULT ROLE NONE TO john")
assert instance.query("SHOW CURRENT ROLES", user="john") == ""
instance.query("SET DEFAULT ROLE rx TO john")
assert instance.query("SHOW CURRENT ROLES", user="john") == TSV([["rx", 0, 1]])
instance.query("SET DEFAULT ROLE ry TO john")
assert instance.query("SHOW CURRENT ROLES", user="john") == TSV([["ry", 0, 1]])
instance.query("SET DEFAULT ROLE ALL TO john")
assert instance.query("SHOW CURRENT ROLES", user="john") == TSV(
[["rx", 0, 1], ["ry", 0, 1]]
)
instance.query("SET DEFAULT ROLE ALL EXCEPT rx TO john")
assert instance.query("SHOW CURRENT ROLES", user="john") == TSV([["ry", 0, 1]])
def test_alter_user():
assert instance.query("SHOW CURRENT ROLES", user="john") == ""
instance.query("GRANT rx, ry TO john")
assert instance.query("SHOW CURRENT ROLES", user="john") == TSV(
[["rx", 0, 1], ["ry", 0, 1]]
)
instance.query("ALTER USER john DEFAULT ROLE NONE")
assert instance.query("SHOW CURRENT ROLES", user="john") == ""
instance.query("ALTER USER john DEFAULT ROLE rx")
assert instance.query("SHOW CURRENT ROLES", user="john") == TSV([["rx", 0, 1]])
instance.query("ALTER USER john DEFAULT ROLE ALL")
assert instance.query("SHOW CURRENT ROLES", user="john") == TSV(
[["rx", 0, 1], ["ry", 0, 1]]
)
instance.query("ALTER USER john DEFAULT ROLE ALL EXCEPT rx")
assert instance.query("SHOW CURRENT ROLES", user="john") == TSV([["ry", 0, 1]])
def test_wrong_set_default_role():
assert "There is no user `rx`" in instance.query_and_get_error(
"SET DEFAULT ROLE NONE TO rx"
)
assert "There is no user `ry`" in instance.query_and_get_error(
"SET DEFAULT ROLE rx TO ry"
)
assert "There is no role `john`" in instance.query_and_get_error(
"SET DEFAULT ROLE john TO john"
)
assert "There is no role `john`" in instance.query_and_get_error(
"ALTER USER john DEFAULT ROLE john"
)
assert "There is no role `john`" in instance.query_and_get_error(
"ALTER USER john DEFAULT ROLE ALL EXCEPT john"
)