File: test_ram_utils.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 (84 lines) | stat: -rw-r--r-- 2,991 bytes parent folder | download
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
import re

from moto.ram.utils import (
    AWS_MANAGED_PERMISSIONS,
    RAM_RESOURCE_TYPES,
    format_ram_permission,
)


def test_format_ram_permission_defaults():
    name = "TestPermission"
    resource_type = "test:Resource"
    result = format_ram_permission(name, resource_type)
    assert result["name"] == name
    assert result["resourceType"] == resource_type
    assert result["version"] == "1"
    assert result["arn"] == f"arn:aws:ram::aws:permission/{name}"
    assert result["status"] == "ATTACHABLE"
    assert result["isResourceTypeDefault"] is True
    assert result["permissionType"] == "AWS_MANAGED"
    assert result["defaultVersion"] is True
    # creationTime and lastUpdatedTime should be a string in the expected format
    assert re.match(
        r"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}", result["creationTime"]
    )
    assert result["creationTime"] == result["lastUpdatedTime"]


def test_format_ram_permission_custom_values():
    name = "CustomPermission"
    resource_type = "custom:Type"
    version = "2"
    arn_prefix = "arn:aws:ram::custom:permission/"
    status = "UNATTACHABLE"
    creation_time = "2023-01-01 12:00:00.000"
    last_updated_time = "2023-01-02 13:00:00.000"
    is_resource_type_default = False
    permission_type = "CUSTOM"
    default_version = False

    result = format_ram_permission(
        name=name,
        resource_type=resource_type,
        version=version,
        arn_prefix=arn_prefix,
        status=status,
        creation_time=creation_time,
        last_updated_time=last_updated_time,
        is_resource_type_default=is_resource_type_default,
        permission_type=permission_type,
        default_version=default_version,
    )
    assert result["name"] == name
    assert result["resourceType"] == resource_type
    assert result["version"] == version
    assert result["arn"] == f"{arn_prefix}{name}"
    assert result["status"] == status
    assert result["creationTime"] == creation_time
    assert result["lastUpdatedTime"] == last_updated_time
    assert result["isResourceTypeDefault"] is False
    assert result["permissionType"] == permission_type
    assert result["defaultVersion"] is False


def test_ram_resource_types_structure():
    for entry in RAM_RESOURCE_TYPES:
        assert "resourceType" in entry
        assert "serviceName" in entry
        assert "resourceRegionScope" in entry
        assert entry["resourceRegionScope"] in ("REGIONAL", "GLOBAL")


def test_aws_managed_permissions_structure():
    for perm in AWS_MANAGED_PERMISSIONS:
        assert "arn" in perm
        assert perm["arn"].startswith("arn:aws:ram::aws:permission/")
        assert "name" in perm
        assert "resourceType" in perm
        assert "creationTime" in perm
        assert "lastUpdatedTime" in perm
        assert "status" in perm
        assert "permissionType" in perm
        assert perm["permissionType"] == "AWS_MANAGED"
        assert isinstance(perm["isResourceTypeDefault"], bool)