mirror of https://github.com/caronc/apprise
				
				
				
			Added bulletproofing to configuation parsing (#282)
							parent
							
								
									25514643f6
								
							
						
					
					
						commit
						6dfd429b25
					
				| 
						 | 
				
			
			@ -27,6 +27,7 @@ import six
 | 
			
		|||
 | 
			
		||||
from . import config
 | 
			
		||||
from . import ConfigBase
 | 
			
		||||
from . import CONFIG_FORMATS
 | 
			
		||||
from . import URLBase
 | 
			
		||||
from .AppriseAsset import AppriseAsset
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -252,7 +253,12 @@ class AppriseConfig(object):
 | 
			
		|||
        # Create ourselves a ConfigMemory Object to store our configuration
 | 
			
		||||
        instance = config.ConfigMemory(
 | 
			
		||||
            content=content, format=format, asset=asset, tag=tag,
 | 
			
		||||
            recursion=self.recursion, insecure_includes=insecure_includes)
 | 
			
		||||
            recursion=recursion, insecure_includes=insecure_includes)
 | 
			
		||||
 | 
			
		||||
        if instance.config_format not in CONFIG_FORMATS:
 | 
			
		||||
            logger.warning(
 | 
			
		||||
                "The format of the configuration could not be deteced.")
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
        # Add our initialized plugin to our server listings
 | 
			
		||||
        self.configs.append(instance)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,6 +29,7 @@ import io
 | 
			
		|||
import mock
 | 
			
		||||
import pytest
 | 
			
		||||
from apprise import NotifyFormat
 | 
			
		||||
from apprise import ConfigFormat
 | 
			
		||||
from apprise import ConfigIncludeMode
 | 
			
		||||
from apprise.Apprise import Apprise
 | 
			
		||||
from apprise.AppriseConfig import AppriseConfig
 | 
			
		||||
| 
						 | 
				
			
			@ -304,10 +305,11 @@ def test_apprise_add_config():
 | 
			
		|||
    """
 | 
			
		||||
    # Create ourselves a config object
 | 
			
		||||
    ac = AppriseConfig()
 | 
			
		||||
    assert ac.add_config(content=content)
 | 
			
		||||
    assert ac.add_config(content=content) is True
 | 
			
		||||
 | 
			
		||||
    # One configuration file should have been found
 | 
			
		||||
    assert len(ac) == 1
 | 
			
		||||
    assert ac[0].config_format is ConfigFormat.TEXT
 | 
			
		||||
 | 
			
		||||
    # Object can be directly checked as a boolean; response is True
 | 
			
		||||
    # when there is at least one entry
 | 
			
		||||
| 
						 | 
				
			
			@ -337,6 +339,39 @@ def test_apprise_add_config():
 | 
			
		|||
    # and 6 urls.. (as we've doubled up)
 | 
			
		||||
    assert len(ac.servers()) == 6
 | 
			
		||||
 | 
			
		||||
    content = """
 | 
			
		||||
    # A YAML File
 | 
			
		||||
    urls:
 | 
			
		||||
       - mailto://usera:pass@gmail.com
 | 
			
		||||
       - gnome://:
 | 
			
		||||
          tag: taga,tagb
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    # Create ourselves a config object
 | 
			
		||||
    ac = AppriseConfig()
 | 
			
		||||
    assert ac.add_config(content=content) is True
 | 
			
		||||
 | 
			
		||||
    # One configuration file should have been found
 | 
			
		||||
    assert len(ac) == 1
 | 
			
		||||
    assert ac[0].config_format is ConfigFormat.YAML
 | 
			
		||||
 | 
			
		||||
    # Object can be directly checked as a boolean; response is True
 | 
			
		||||
    # when there is at least one entry
 | 
			
		||||
    assert ac
 | 
			
		||||
 | 
			
		||||
    # We should be able to read our 2 servers from that
 | 
			
		||||
    assert len(ac.servers()) == 2
 | 
			
		||||
 | 
			
		||||
    # Now an invalid configuration file
 | 
			
		||||
    content = "invalid"
 | 
			
		||||
 | 
			
		||||
    # Create ourselves a config object
 | 
			
		||||
    ac = AppriseConfig()
 | 
			
		||||
    assert ac.add_config(content=content) is False
 | 
			
		||||
 | 
			
		||||
    # Nothing is loaded
 | 
			
		||||
    assert len(ac.servers()) == 0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_apprise_config_tagging(tmpdir):
 | 
			
		||||
    """
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue