def test_parameters_referencing():
    r = ResourceWithProperties()
    p = Parameter()
    r.prop1 = p
    s = Stack(**locals())
    assert_json(s, {
        'AWSTemplateFormatVersion': '2010-09-09',
        'Parameters': {
            'p': {
            'Type': 'String'
            }
        },
        'Resources': {
            'r': {
                'Type': 'ResourceWithProperties',
                'Properties': {
                    'prop1': {'Ref': 'p'}
                }
            }
        },
    })
def test_parameters_referencing_in_strings():
    r = ResourceWithProperties()
    p = Parameter('param')
    r.prop1 = 'prefix{0}'.format(p)
    s = Stack(**locals())
    assert_json(s, {
        'AWSTemplateFormatVersion': '2010-09-09',
        'Parameters': {
            'param': {
            'Type': 'String'
            }
        },
        'Resources': {
            'r': {
                'Type': 'ResourceWithProperties',
                'Properties': {
                    'prop1': {'Fn::Join': ['', ['prefix', {'Ref': 'param'}]]}
                }
            }
        },
    })