Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions test/integration/models/iam/iam_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import pytest

from linode_api4.objects import EntityAccess, LinodeEntity


def test_get_role_permissions(test_linode_client):
client = test_linode_client
iam = client.iam

permissions = iam.role_permissions()

assert "account_access" in permissions
assert isinstance(permissions["account_access"], list)


def test_get_user_role_permissions(test_linode_client):
client = test_linode_client
iam = client.iam

username = client.profile().username
user_permissions = iam.role_permissions_user_get(username)

assert "account_access" in user_permissions
assert isinstance(user_permissions["account_access"], list)


@pytest.mark.skip(
reason="Updating IAM role permissions may require elevated privileges."
)
def test_set_user_role_permissions(test_linode_client):
client = test_linode_client
iam = client.iam

username = client.profile().username
entity_access = [EntityAccess(id=1, type="linode", roles=["read_only"])]

updated = iam.role_permissions_user_set(
username,
account_access=["read_only"],
entity_access=entity_access,
)

assert "account_access" in updated
assert "entity_access" in updated


def test_list_entities(test_linode_client):
client = test_linode_client
iam = client.iam

entities = iam.entities()

if len(entities) > 0:
entity = entities[0]
assert isinstance(entity, LinodeEntity)
assert hasattr(entity, "id")
assert hasattr(entity, "label")
assert hasattr(entity, "type")
else:
pytest.skip("No entities found in IAM response.")