File: test_iot_rolealias.py

package info (click to toggle)
python-moto 5.1.18-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 116,520 kB
  • sloc: python: 636,725; javascript: 181; makefile: 39; sh: 3
file content (128 lines) | stat: -rw-r--r-- 4,237 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import boto3
import pytest

from moto import mock_aws


@pytest.fixture(name="client")
def client_fixture():
    with mock_aws():
        yield boto3.client("iot", region_name="eu-west-1")


def test_create_role_alias(client):
    role_alias_name = "test-role-alias"
    create_response = client.create_role_alias(
        roleAlias=role_alias_name,
        roleArn="arn:aws:iam::123456789012:role/my-role",
        credentialDurationSeconds=1234,
    )

    assert create_response["roleAlias"] == role_alias_name
    assert (
        create_response["roleAliasArn"]
        == f"arn:aws:iot:eu-west-1:123456789012:rolealias/{role_alias_name}"
    )

    assert len(client.list_role_aliases()["roleAliases"]) == 1


def test_create_role_alias_twice(client):
    role_alias_name = "test-role-alias"
    create_response = client.create_role_alias(
        roleAlias=role_alias_name,
        roleArn="arn:aws:iam::123456789012:role/my-role",
        credentialDurationSeconds=1234,
    )

    assert create_response["roleAlias"] == role_alias_name
    assert (
        create_response["roleAliasArn"]
        == f"arn:aws:iot:eu-west-1:123456789012:rolealias/{role_alias_name}"
    )

    with pytest.raises(client.exceptions.ResourceAlreadyExistsException):
        client.create_role_alias(
            roleAlias=role_alias_name,
            roleArn="arn:aws:iam::123456789012:role/my-role",
            credentialDurationSeconds=1234,
        )


def test_list_role_aliases(client):
    client.create_role_alias(
        roleAlias="test-role-alias", roleArn="arn:aws:iam::123456789012:role/my-role"
    )
    client.create_role_alias(
        roleAlias="another_role_alias",
        roleArn="arn:aws:iam::123456789012:role/my-role",
    )

    response = client.list_role_aliases()

    assert response["roleAliases"] == ["test-role-alias", "another_role_alias"]


def test_delete_role_alias(client):
    role_alias_name = "test-role-alias"

    client.create_role_alias(
        roleAlias=role_alias_name, roleArn="arn:aws:iam::123456789012:role/my-role"
    )
    assert len(client.list_role_aliases()["roleAliases"]) == 1

    client.delete_role_alias(roleAlias=role_alias_name)
    assert len(client.list_role_aliases()["roleAliases"]) == 0


def test_delete_nonexistent_role_alias(client):
    with pytest.raises(client.exceptions.ResourceNotFoundException):
        client.delete_role_alias(roleAlias="test_role_alias")


def test_describe_role_alias(client):
    role_alias_name = "test-role-alias"
    client.create_role_alias(
        roleAlias=role_alias_name, roleArn="arn:aws:iam::123456789012:role/my-role"
    )

    response = client.describe_role_alias(roleAlias=role_alias_name)
    assert response["roleAliasDescription"]["roleAlias"] == role_alias_name
    assert (
        response["roleAliasDescription"]["roleAliasArn"]
        == f"arn:aws:iot:eu-west-1:123456789012:rolealias/{role_alias_name}"
    )
    assert (
        response["roleAliasDescription"]["roleArn"]
        == "arn:aws:iam::123456789012:role/my-role"
    )
    assert response["roleAliasDescription"]["credentialDurationSeconds"] == 3600
    assert "owner" in response["roleAliasDescription"]
    assert "creationDate" in response["roleAliasDescription"]
    assert "lastModifiedDate" in response["roleAliasDescription"]


def test_update_role_alias(client):
    role_alias_name = "test-role-alias"
    client.create_role_alias(
        roleAlias=role_alias_name,
        roleArn="arn:aws:iam::123456789012:role/my-role",
        credentialDurationSeconds=1234,
    )
    client.update_role_alias(
        roleAlias=role_alias_name,
        roleArn="arn:aws:iam::123456789012:role/other-role",
        credentialDurationSeconds=2345,
    )
    response = client.describe_role_alias(roleAlias=role_alias_name)

    assert response["roleAliasDescription"]["roleAlias"] == role_alias_name
    assert (
        response["roleAliasDescription"]["roleAliasArn"]
        == f"arn:aws:iot:eu-west-1:123456789012:rolealias/{role_alias_name}"
    )
    assert (
        response["roleAliasDescription"]["roleArn"]
        == "arn:aws:iam::123456789012:role/other-role"
    )
    assert response["roleAliasDescription"]["credentialDurationSeconds"] == 2345