示例#1
0
    def test_others(self):
        """
        GetAtt should be replaced by ${Thing.Property}
        """

        source = {
            "Fn::Join": [
                " ",
                ["The", {
                    "Fn::Base64": "Notreallybase64"
                }, "is", "a", "lie"],
            ],
        }

        expected = {
            "Fn::Sub": [
                "The ${Param1} is a lie",
                {
                    "Param1": {
                        "Fn::Base64": "Notreallybase64",
                    },
                },
            ],
        }

        actual = cfn_flip.clean(source)

        self.assertEqual(expected, actual)
示例#2
0
    def test_basic_case(self):
        """
        As simple as it gets
        """

        source = {
            "Fn::Join": [
                " ",
                ["The", "cake", "is", "a", "lie"],
            ],
        }

        expected = "The cake is a lie"

        actual = cfn_flip.clean(source)

        self.assertEqual(expected, actual)
示例#3
0
    def test_in_array(self):
        """
        Converting Join to Sub should still work when the join is part of a larger array
        """

        source = {
            "things": [
                "Just a string",
                {
                    "Fn::Join": [
                        " ",
                        [
                            "The", {
                                "Fn::Base64": "Notreallybase64"
                            }, "is", "a", "lie"
                        ],
                    ],
                },
                {
                    "Another": "thing",
                },
            ],
        }

        expected = {
            "things": [
                "Just a string",
                {
                    "Fn::Sub": [
                        "The ${Param1} is a lie",
                        {
                            "Param1": {
                                "Fn::Base64": "Notreallybase64",
                            },
                        },
                    ],
                },
                {
                    "Another": "thing",
                },
            ],
        }

        actual = cfn_flip.clean(source)

        self.assertEqual(expected, actual)
示例#4
0
    def test_get_att(self):
        """
        Base64 etc should be replaced by parameters to Sub
        """

        source = {
            "Fn::Join": [
                " ",
                ["The", {
                    "Fn::GetAtt": ["Cake", "Hole"]
                }, "is", "a", "lie"],
            ],
        }

        expected = {
            "Fn::Sub": "The ${Cake.Hole} is a lie",
        }

        actual = cfn_flip.clean(source)

        self.assertEqual(expected, actual)
示例#5
0
    def test_ref(self):
        """
        Refs should be replaced by ${value}
        """

        source = {
            "Fn::Join": [
                " ",
                ["The", {
                    "Ref": "Cake"
                }, "is", "a", "lie"],
            ],
        }

        expected = {
            "Fn::Sub": "The ${Cake} is a lie",
        }

        actual = cfn_flip.clean(source)

        self.assertEqual(expected, actual)
示例#6
0
    def test_multi_level_get_att(self):
        """
        Base64 etc should be replaced by parameters to Sub
        """

        source = {
            "Fn::Join": [
                " ",
                [
                    "The", {
                        "Fn::GetAtt": ["First", "Second", "Third"]
                    }, "is", "a", "lie"
                ],
            ],
        }

        expected = {
            "Fn::Sub": "The ${First.Second.Third} is a lie",
        }

        actual = cfn_flip.clean(source)

        self.assertEqual(expected, actual)