Esempio n. 1
0
    def test_scan(self):
        account_id = "123456789012"
        region_name = "us-east-1"

        session = boto3.Session()

        ec2_client = session.client("ec2", region_name=region_name)
        list_resp = ec2_client.describe_vpcs()
        present_vpcs = list_resp["Vpcs"]
        self.assertEqual(len(present_vpcs), 1)
        present_vpc_id = present_vpcs[0]["VpcId"]
        present_vpc_arn = f"arn:aws:ec2:us-east-1:123456789012:vpc/{present_vpc_id}"

        create_resp = ec2_client.create_vpc(CidrBlock="10.0.0.0/16")
        created_vpc_id = create_resp["Vpc"]["VpcId"]
        created_vpc_arn = f"arn:aws:ec2:us-east-1:123456789012:vpc/{created_vpc_id}"

        scan_accessor = AWSAccessor(session=session, account_id=account_id, region_name=region_name)
        resources = VPCResourceSpec.scan(scan_accessor=scan_accessor)

        expected_resources = [
            Resource(
                resource_id=present_vpc_arn,
                type="aws:ec2:vpc",
                link_collection=LinkCollection(
                    simple_links=(
                        SimpleLink(pred="is_default", obj=True),
                        SimpleLink(pred="cidr_block", obj="172.31.0.0/16"),
                        SimpleLink(pred="state", obj="available"),
                    ),
                    resource_links=(
                        ResourceLink(pred="account", obj="arn:aws::::account/123456789012"),
                        ResourceLink(pred="region", obj="arn:aws:::123456789012:region/us-east-1"),
                    ),
                ),
            ),
            Resource(
                resource_id=created_vpc_arn,
                type="aws:ec2:vpc",
                link_collection=LinkCollection(
                    simple_links=(
                        SimpleLink(pred="is_default", obj=False),
                        SimpleLink(pred="cidr_block", obj="10.0.0.0/16"),
                        SimpleLink(pred="state", obj="available"),
                    ),
                    resource_links=(
                        ResourceLink(pred="account", obj="arn:aws::::account/123456789012"),
                        ResourceLink(pred="region", obj="arn:aws:::123456789012:region/us-east-1"),
                    ),
                ),
            ),
        ]
        self.assertEqual(resources, expected_resources)
Esempio n. 2
0
    def test_scan(self):
        account_id = "123456789012"
        region_name = "us-east-1"

        session = boto3.Session()

        ec2_client = session.client("ec2", region_name=region_name)
        ec2_client.create_vpc(CidrBlock="10.0.0.0/16")

        scan_accessor = AWSAccessor(session=session,
                                    account_id=account_id,
                                    region_name=region_name)
        resources = VPCResourceSpec.scan(scan_accessor=scan_accessor)

        expected_resources = [
            {
                "type":
                "aws:ec2:vpc",
                "links": [
                    {
                        "pred": "is_default",
                        "obj": True,
                        "type": "simple"
                    },
                    {
                        "pred": "cidr_block",
                        "obj": "172.31.0.0/16",
                        "type": "simple",
                    },  # from moto
                    {
                        "pred": "state",
                        "obj": "available",
                        "type": "simple"
                    },
                    {
                        "pred": "account",
                        "obj": "arn:aws::::account/123456789012",
                        "type": "resource_link",
                    },
                    {
                        "pred": "region",
                        "obj": "arn:aws:::123456789012:region/us-east-1",
                        "type": "resource_link",
                    },
                ],
            },
            {
                "type":
                "aws:ec2:vpc",
                "links": [
                    {
                        "pred": "is_default",
                        "obj": False,
                        "type": "simple"
                    },
                    {
                        "pred": "cidr_block",
                        "obj": "10.0.0.0/16",
                        "type": "simple"
                    },
                    {
                        "pred": "state",
                        "obj": "available",
                        "type": "simple"
                    },
                    {
                        "pred": "account",
                        "obj": "arn:aws::::account/123456789012",
                        "type": "resource_link",
                    },
                    {
                        "pred": "region",
                        "obj": "arn:aws:::123456789012:region/us-east-1",
                        "type": "resource_link",
                    },
                ],
            },
        ]
        expected_api_call_stats = {
            "count": 1,
            "123456789012": {
                "count": 1,
                "us-east-1": {
                    "count": 1,
                    "ec2": {
                        "count": 1,
                        "DescribeVpcs": {
                            "count": 1
                        }
                    }
                },
            },
        }
        self.assertListEqual([resource.to_dict() for resource in resources],
                             expected_resources)
        self.assertDictEqual(scan_accessor.api_call_stats.to_dict(),
                             expected_api_call_stats)