def test_parse_alias_arn_success(self):
        arn_str = "arn:aws:kms:us-east-1:222222222222:alias/aws/service"

        arn = Arn.from_str(arn_str)

        assert arn.partition == "aws"
        assert arn.service == "kms"
        assert arn.region == "us-east-1"
        assert arn.account_id == "222222222222"
        assert arn.resource_type == "alias"
        assert arn.resource_id == "aws/service"
    def test_parse_key_arn_success(self):
        arn_str = "arn:aws:kms:us-east-1:222222222222:key/aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb"

        arn = Arn.from_str(arn_str)

        assert arn.partition == "aws"
        assert arn.service == "kms"
        assert arn.region == "us-east-1"
        assert arn.account_id == "222222222222"
        assert arn.resource_type == "key"
        assert arn.resource_id == "aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb"
    def test_malformed_arn_missing_resource_type(self):
        arn = "arn:aws:us-east-1:222222222222"

        with pytest.raises(MalformedArnError) as excinfo:
            Arn.from_str(arn)
        excinfo.match("Resource {} could not be parsed as an ARN".format(arn))
    def test_malformed_arn_missing_account(self):
        arn = "arn:aws:us-east-1:key/aaaaaaaa-1111-2222-3333-bbbbbbbbbbbb"

        with pytest.raises(MalformedArnError) as excinfo:
            Arn.from_str(arn)
        excinfo.match("Resource {} could not be parsed as an ARN".format(arn))