def test_nested_object(t): t.assertEqual( safe_format('{foo.bar}', dict(foo=dict(bar="123"))), '123', ) t.assertEqual( safe_format('{foo[bar]}', dict(foo=dict(bar="456"))), '456', )
def test_nested_object(t): t.assertEqual( safe_format('{foo.bar}', dict(foo=dict(bar="123"))), '123', ) t.assertEqual( safe_format('{foo[bar]}', dict(foo=dict(bar="123"))), '123', ) t.assertEqual( safe_format('{foo[0].ding}', dict(foo=[dict(ding='DONG')])), 'DONG')
def format_template(template_key, payload, fallback=''): config = payload['configuration'] template = config.get(template_key) if template is not None: fallback = template try: args = deepcopy(payload) args['configuration']['webhook_url'] = '****' args['configuration']['webhook_url_override'] = '****' return safe_format(template, args) except: log("WARN Failed to format template %s \"%s\" -" % (template_key, template), sys.exc_info()[1]) return fallback
def test_convert_values(t): t.assertEqual(safe_format('{foo}', dict(foo="a string")), 'a string') t.assertEqual(safe_format('{foo}', dict(foo=4711)), '4711') t.assertEqual(safe_format('{foo}', dict(foo=None)), 'None') t.assertEqual(safe_format('{foo}', dict(foo=True)), 'True') t.assertEqual(safe_format('{foo}', dict(foo=[1, 2, 3])), '[1, 2, 3]') t.assertEqual(safe_format('{foo}', dict(foo=dict(foo='bar'))), '{"foo": "bar"}')
def test_nested_object_missing(t): t.assertEqual( safe_format('{foo.bar}', dict(foo=dict())), '{foo.bar}', ) t.assertEqual( safe_format('{foo.bar}', dict()), '{foo.bar}', ) t.assertEqual( safe_format('{foo[bar]}', dict()), '{foo[bar]}', ) t.assertEqual(safe_format('{foo[0].ding}', dict(foo=[dict(x='DONG')])), '{foo[0].ding}') t.assertEqual(safe_format('{foo[0].ding}', dict(foo=[])), '{foo[0].ding}') t.assertEqual(safe_format('{foo[0].ding}', dict()), '{foo[0].ding}')
def test_num_placeholder(t): t.assertEqual(safe_format('{0}', dict()), '{0}') t.assertEqual(safe_format('{buu.5}', dict(buu=[1, 2, 3, 4, 5, 6])), '{buu.5}')
def test_empty_placeholder(t): t.assertEqual(safe_format('{0}', dict()), '{0}') t.assertEqual(safe_format('A {0} B {1}', dict()), 'A {0} B {1}') t.assertEqual(safe_format('A {0} B {x}', dict(x=1)), 'A {0} B 1')
def test_no_attr_access(t): t.assertEqual(safe_format('{foo.__class__}', dict(foo="1")), '{foo.__class__}')
def test_without_placeholder(t): t.assertEqual(safe_format('foo'), 'foo')
def test_object_index_missing(t): t.assertEqual( safe_format('{foo}', dict(bar="BAR")), '{foo}', )
def test_object_index(t): t.assertEqual( safe_format('{bar}!', dict(bar="BAR")), 'BAR!', )