diff --git a/apprise/config/ConfigBase.py b/apprise/config/ConfigBase.py index 22efd8e2..c8381358 100644 --- a/apprise/config/ConfigBase.py +++ b/apprise/config/ConfigBase.py @@ -836,6 +836,17 @@ class ConfigBase(URLBase): # add our results to our global set results.append(r) + elif isinstance(tokens, dict): + # Copy ourselves a template of our parsed URL as a base to + # work with + r = _results.copy() + + # add our result set + r.update(tokens) + + # add our results to our global set + results.append(r) + else: # add our results to our global set results.append(_results) diff --git a/test/test_config_base.py b/test/test_config_base.py index 74c6949a..1c06f7b8 100644 --- a/test/test_config_base.py +++ b/test/test_config_base.py @@ -28,6 +28,7 @@ import pytest from apprise.AppriseAsset import AppriseAsset from apprise.config.ConfigBase import ConfigBase from apprise import ConfigFormat +from apprise import plugins import yaml # Disable logging for a cleaner testing output @@ -564,10 +565,15 @@ urls: include: http://localhost:8080/notify/apprise urls: + # The following generates 1 service + - json://localhost: + tag: my-custom-tag, my-other-tag + + # The following also generates 1 service - json://localhost: - tag: my-custom-tag, my-other-tag - # How to stack multiple entries: + # How to stack multiple entries (this generates 2): - mailto://user:123abc@yahoo.ca: - to: test@examle.com - to: test2@examle.com @@ -593,7 +599,7 @@ urls: # We expect to parse 4 entries from the above because the tgram:// entry # would have failed to be loaded assert isinstance(result, list) - assert len(result) == 5 + assert len(result) == 6 assert len(result[0].tags) == 2 # Our single line included @@ -889,6 +895,31 @@ include: assert 'http://localhost/apprise/cfg03' in config +def test_yaml_vs_text_tagging(): + """ + API: ConfigBase YAML vs TEXT tagging + """ + + yaml_result, _ = ConfigBase.config_parse_yaml(""" + urls: + - mailtos://lead2gold:yesqbrulvaelyxve@gmail.com: + tag: mytag + """) + assert yaml_result + + text_result, _ = ConfigBase.config_parse_text(""" + mytag=mailtos://lead2gold:yesqbrulvaelyxve@gmail.com + """) + assert text_result + + # Now we compare our results and verify they are the same + assert len(yaml_result) == len(text_result) + assert isinstance(yaml_result[0], plugins.NotifyEmail) + assert isinstance(text_result[0], plugins.NotifyEmail) + assert 'mytag' in text_result[0] + assert 'mytag' in yaml_result[0] + + # This test fails on CentOS 8.x so it was moved into it's own function # so it could be bypassed. The ability to use lists in YAML files didn't # appear to happen until later on; it's certainly not available in v3.12