Exemplo n.º 1
0
def test_mock_exists(base_registry):
    """Very mock is loaded with entrypoint detection"""
    cfg = yamlsettings.load('mock://please')
    assert cfg.mock == 'test'

    cfg = yamlsettings.load('mock2://please')
    assert cfg.mock == 'test'
Exemplo n.º 2
0
 def test_limit(self):
     test_settings = load('settings.yml')
     test_settings.limit(['config'])
     self.assertEqual(list(test_settings), ['config'])
     test_settings2 = load('settings.yml')
     test_settings2.limit('config')
     self.assertEqual(list(test_settings), list(test_settings2))
Exemplo n.º 3
0
 def test_rebase(self):
     test_settings = load('settings.yml')
     test_settings.rebase(load('defaults.yml'))
     self.assertEqual(test_settings.config.greet, 'Hello')
     self.assertEqual(test_settings.config.leave, 'Goodbye')
     self.assertEqual(test_settings.config.secret, 'I have many secrets')
     self.assertEqual(test_settings.config.meaning, 42)
     self.assertEqual(test_settings.config_excited.greet, "Whazzzzup!")
Exemplo n.º 4
0
 def test_rebase(self):
     test_settings = load('settings.yml')
     test_settings.rebase(load('defaults.yml'))
     self.assertEqual(test_settings.config.greet, 'Hello')
     self.assertEqual(test_settings.config.leave, 'Goodbye')
     self.assertEqual(test_settings.config.secret, 'I have many secrets')
     self.assertEqual(test_settings.config.meaning, 42)
     self.assertEqual(test_settings.config_excited.greet, "Whazzzzup!")
Exemplo n.º 5
0
def test_no_cache(package_data):
    """Disable persistence"""
    package_data.return_value = b'val: one\n'
    cfg = yamlsettings.load('pkg://example?persist=false')
    assert cfg.val == 'one'

    package_data.return_value = b'val: two\n'
    cfg = yamlsettings.load('pkg://example?persist=false')
    assert cfg.val == 'two'
def test_raise_with_unexpected(resps):
    """Test Runtime Error when excepted status code"""
    url = 'http://testing.com/one'
    obj = {'error': True}
    expected = 200
    status = 500
    raise_on = True

    resps.add(responses.GET, url, json=obj, status=status)

    # RuntimeError stops yamlsettings from trying the next url
    with pytest.raises(RuntimeError):
        yamlsettings.load(url,
                          expected_status_code=expected,
                          raise_on_status=raise_on)
Exemplo n.º 7
0
 def test_variable_override(self):
     test_settings = load("single_fancy.yml")
     update_from_env(test_settings)
     self.assertEqual(test_settings.test.greeting.introduce,
                      'The environment says hello!')
     self.assertEqual(test_settings.test.dict_var_mix.b,
                      'Goodbye Variable')
Exemplo n.º 8
0
 def test_stupid_override(self):
     test_settings = load("stupid.yml")
     update_from_env(test_settings)
     self.assertEqual(test_settings.test.config.db,
                      'OurSQL')
     self.assertEqual(test_settings.test.config_db,
                      'OurSQL')
Exemplo n.º 9
0
 def test_load_single_file(self):
     test_defaults = load('defaults.yml')
     self.assertEqual(test_defaults.config.greet, 'Hello')
     self.assertEqual(test_defaults.config.leave, 'Goodbye')
     self.assertEqual(test_defaults.config.secret, 'I have no secrets')
     self.assertEqual(test_defaults.config.meaning, 42)
     # Verify missing raises an AttributeError and not a KeyError
     self.assertRaises(AttributeError, getattr, test_defaults, 'missing')
     # Verify access to class attributes
     self.assertEqual(str(test_defaults.__class__),
                      "<class 'yamlsettings.yamldict.YAMLDict'>")
     # Test dir access of keys for tab complete
     self.assertEqual(dir(test_defaults.config),
                      ['greet', 'leave', 'meaning', 'secret'])
     # Test representation of value
     self.assertEqual(
         str(test_defaults.config),
         'greet: Hello\nleave: Goodbye\nsecret: I have no secrets\n'
         'meaning: 42\n',
     )
     self.assertEqual(
         repr(test_defaults.config),
         "{'greet': 'Hello', 'leave': 'Goodbye', "
         "'secret': 'I have no secrets', 'meaning': 42}",
     )
     # Test foo is saved in keys
     test_defaults.foo = 'bar'
     self.assertEqual(test_defaults.foo, 'bar')
     self.assertEqual(test_defaults['foo'], 'bar')
Exemplo n.º 10
0
 def test_load_with_envs(self):
     test_defaults = load('defaults.yml')
     update_from_env(test_defaults)
     self.assertEqual(test_defaults.config.greet, 'Hello')
     self.assertEqual(test_defaults.config.leave, 'Goodbye')
     self.assertEqual(test_defaults.config.secret, 's3cr3tz')
     self.assertEqual(test_defaults.config.meaning, 42.42)
def test_user_pass_combos(resps, url, obj):
    """Test loading with u/p urls"""
    resps.add(responses.GET, url,
              json=obj, status=200)

    config = yamlsettings.load(url)
    assert config.test == obj['test']
Exemplo n.º 12
0
 def test_load_with_envs(self):
     test_defaults = load('defaults.yml')
     update_from_env(test_defaults)
     self.assertEqual(test_defaults.config.greet, 'Hello')
     self.assertEqual(test_defaults.config.leave, 'Goodbye')
     self.assertEqual(test_defaults.config.secret, 's3cr3tz')
     self.assertEqual(test_defaults.config.meaning, 42.42)
Exemplo n.º 13
0
def test_package_config(package_data, data_input):
    """Package load

    Note: This will fail on the second pass if PackageExtension is not fresh

    """
    package_data.return_value = data_input

    cfg = yamlsettings.load('package://example')
    package_data.assert_called_once_with('example', 'settings.yaml')
    assert cfg.mocked.startswith("package")

    # Verify persistence is working
    package_data.return_value = 'should not be read'
    cfg = yamlsettings.load('package://example')
    assert cfg.mocked.startswith("package")
    assert package_data.call_count == 1
Exemplo n.º 14
0
def test_client_params_via_url_params(s3):
    """Test params passed to client via url"""
    config = yamlsettings.load("s3://bucket/key.yaml?region_name=us-east-1")
    assert config.foo == 'bar'
    s3.assert_called_once_with('s3', region_name='us-east-1')
    s3.return_value.get_object.assert_called_once_with(
        Bucket='bucket',
        Key='key.yaml',
    )
Exemplo n.º 15
0
def test_basic_request(s3):
    """Test Basic Request"""
    config = yamlsettings.load("s3://bucket/key.yaml")
    assert config.foo == 'bar'
    s3.assert_called_once_with('s3')
    s3.return_value.get_object.assert_called_once_with(
        Bucket='bucket',
        Key='key.yaml',
    )
Exemplo n.º 16
0
def test_version_used(s3):
    """Verify version is used"""
    config = yamlsettings.load("s3://bucket/key.yaml", VersionId='mocked')
    assert config.foo == 'bar'
    s3.return_value.get_object.assert_called_once_with(
        Bucket='bucket',
        Key='key.yaml',
        VersionId='mocked',
    )
Exemplo n.º 17
0
    def test_yaml_dict_merge(self):
        test_settings = load("merge.yml")

        # Verify the merge was successful
        self.assertEqual(test_settings.base.config.db, "MySQL")
        self.assertEqual(test_settings.merged.config.db, "MySQL")

        # Verify whoami was properly overridden
        self.assertEqual(test_settings.base.whoami, "base")
        self.assertEqual(test_settings.merged.whoami, "merged")
Exemplo n.º 18
0
    def test_yaml_dict_merge(self):
        test_settings = load("merge.yml")

        # Verify the merge was successful
        self.assertEqual(test_settings.base.config.db, "MySQL")
        self.assertEqual(test_settings.merged.config.db, "MySQL")

        # Verify whoami was properly overridden
        self.assertEqual(test_settings.base.whoami, "base")
        self.assertEqual(test_settings.merged.whoami, "merged")
Exemplo n.º 19
0
def test_pass_client(s3):
    """Verify client not created when passed"""
    client = boto3.client('mocked')
    config = yamlsettings.load("s3://bucket/long/key.yaml", client=client)
    assert config.foo == 'bar'
    s3.assert_called_once_with('mocked')
    s3.return_value.get_object.assert_called_once_with(
        Bucket='bucket',
        Key='long/key.yaml',
    )
def test_not_found_ok(resps):
    """Test 404 can return data when expected"""
    url = 'http://missing.com/data'
    obj = {'hidden': 'treasure'}
    expected = 404
    status = 404

    resps.add(responses.GET, url, json=obj, status=status)
    config = yamlsettings.load(url, expected_status_code=expected)
    assert config.hidden == 'treasure'
def test_fail_first_load(resps):
    url_bad = 'https://bad_times.com/not_found'
    url_good = 'https://good_times.com/happy_page'
    resps.add(responses.GET, url_bad,
              body='Page Not Found', status=404)
    resps.add(responses.GET, url_good,
              body='{"happy": True}', status=200)

    config = yamlsettings.load([url_bad, url_good])
    assert config.happy is True
def test_auth_required(resps):
    url = "https://verysecure.com/doc"
    resps.add(responses.GET, url,
              body='{"secure": true}', status=200)
    config = yamlsettings.load(
        url,
        auth=HTTPBasicAuth('Aladdin', 'OpenSesame'),
    )
    auth_header = resps.calls[0].request.__dict__['headers']['Authorization']
    assert auth_header == "Basic QWxhZGRpbjpPcGVuU2VzYW1l"
    assert config.secure is True
def test_no_raise_with_unexpected(resps):
    """Test Runtime Error when excepted status code"""
    url_1 = 'http://testing.com/one'
    url_2 = 'http://testing.com/two'
    expected = 202
    raise_on = False

    resps.add(responses.GET, url_1, json={'error': True}, status=500)
    resps.add(responses.GET, url_2, json={'foo': 'bar'}, status=202)

    config = yamlsettings.load([url_1, url_2],
                               expected_status_code=expected,
                               raise_on_status=raise_on)
    assert config.foo == 'bar'
Exemplo n.º 24
0
def run():
    try:
        db.connect()
        load_error = None
        try:
            settings = yamlsettings.load('settings.yaml')
            if "api_key" not in settings:
                load_error = "Invalid settings.yaml"
        except OSError:
            load_error = "Unable to find settings.yaml"

        if load_error:
            print("Error: {}".format(load_error))
            print("Example settings.yaml:\n  ---\n  api_key: 'telegram:key'\n")
            sys.exit(1)

        app.config['api_key'] = settings.api_key
        app.poll(debug=False)
    finally:
        db.close()
Exemplo n.º 25
0
def run():
    try:
        db.connect()
        load_error = None
        try:
            settings = yamlsettings.load('settings.yaml')
            if "api_key" not in settings:
                load_error = "Invalid settings.yaml"
        except OSError:
            load_error = "Unable to find settings.yaml"

        if load_error:
            print("Error: {}".format(load_error))
            print("Example settings.yaml:\n  ---\n  api_key: 'telegram:key'\n")
            sys.exit(1)

        app.config['api_key'] = settings.api_key
        app.poll(debug=False)
    finally:
        db.close()
Exemplo n.º 26
0
    def test_file_writing(self):
        test_settings = load("single_fancy.yml")
        update_from_env(test_settings)

        m = mock_open()
        with mock.patch('{}.open'.format(builtin_module), m, create=True):
            with open('current_file.yml', 'w') as h:
                h.write(str(test_settings))

        m.assert_called_once_with('current_file.yml', 'w')
        handle = m()
        handle.write.assert_called_with(
            'test:\n'
            '  id1: &id001\n'
            '    name: hi\n'
            '  id2: &id002\n'
            '    name: hello\n'
            '  var_list:\n'
            '  - *id001\n'
            '  - *id002\n'
            '  dict_var_mix:\n'
            '    a: 10\n'
            '    b: *id001\n'
            '  dict_with_list:\n'
            '    name: jin\n'
            '    set:\n'
            '    - 1\n'
            '    - 2\n'
            '    - 3\n'
            '  greeting:\n'
            '    introduce: The environment says hello!\n'
            '    part: Till we meet again\n'
            '  crazy:\n'
            '    type: !!python/name:logging.handlers.SysLogHandler \'\'\n'
            '    module: !!python/module:sys \'\'\n'
            '    instance: !!python/object:tests.SoftwareEngineer\n'
            '      name: jin\n'
        )
Exemplo n.º 27
0
    def test_file_writing(self):
        test_settings = load("single_fancy.yml")
        update_from_env(test_settings)

        m = mock_open()
        with mock.patch('{}.open'.format(builtin_module), m, create=True):
            with open('current_file.yml', 'w') as h:
                h.write(str(test_settings))

        m.assert_called_once_with('current_file.yml', 'w')
        handle = m()
        handle.write.assert_called_with(
            'test:\n'
            '  id1: &id001\n'
            '    name: hi\n'
            '  id2: &id002\n'
            '    name: hello\n'
            '  var_list:\n'
            '  - *id001\n'
            '  - *id002\n'
            '  dict_var_mix:\n'
            '    a: 10\n'
            '    b: *id001\n'
            '  dict_with_list:\n'
            '    name: jin\n'
            '    set:\n'
            '    - 1\n'
            '    - 2\n'
            '    - 3\n'
            '  greeting:\n'
            '    introduce: The environment says hello!\n'
            '    part: Till we meet again\n'
            '  crazy:\n'
            '    type: !!python/name:logging.handlers.SysLogHandler \'\'\n'
            '    module: !!python/module:sys \'\'\n'
            '    instance: !!python/object:tests.SoftwareEngineer\n'
            '      name: jin\n')
Exemplo n.º 28
0
 def test_variable_override(self):
     test_settings = load("single_fancy.yml")
     update_from_env(test_settings)
     self.assertEqual(test_settings.test.greeting.introduce,
                      'The environment says hello!')
     self.assertEqual(test_settings.test.dict_var_mix.b, 'Goodbye Variable')
Exemplo n.º 29
0
def test_env_prefix(package_data):
    """Test env prefix support"""
    package_data.return_value = b'val: needed\n'
    cfg = yamlsettings.load('pkg://example?prefix=ENV')
    assert cfg.val == 'mocked'
Exemplo n.º 30
0
def test_env(package_data):
    """Testing with key matching the env"""
    package_data.return_value = b'env_val: needed\n'
    cfg = yamlsettings.load('pkg://example')
    assert cfg.env_val == 'mocked'
Exemplo n.º 31
0
def test_resource(package_data):
    """Testing loading another resource"""
    package_data.return_value = b'a: b\n'
    cfg = yamlsettings.load('package://example?resource=foo.yaml')
    package_data.assert_called_once_with('example', 'foo.yaml')
    assert cfg.a == 'b'
Exemplo n.º 32
0
def test_no_package_data(package_data):
    """Verify IOError without package data"""
    package_data.return_value = None
    with pytest.raises(IOError):
        yamlsettings.load('package://example')
Exemplo n.º 33
0
 def test_clone_changes_isolated(self):
     test_settings = load('defaults.yml')
     test_clone = test_settings.clone()
     test_settings.config.greet = "Hodo"
     self.assertNotEqual(test_settings.config.greet,
                         test_clone.config.greet)
Exemplo n.º 34
0
 def test_update_from_file(self):
     test_defaults = load('defaults.yml')
     update_from_file(test_defaults, 'settings.yml')
     self.assertEqual(test_defaults.config.secret, 'I have many secrets')
     self.assertEqual(list(test_defaults), ['config'])
Exemplo n.º 35
0
 def test_update_from_file(self):
     test_defaults = load('defaults.yml')
     update_from_file(test_defaults, 'settings.yml')
     self.assertEqual(test_defaults.config.secret, 'I have many secrets')
     self.assertEqual(list(test_defaults), ['config'])
Exemplo n.º 36
0
import requests, yamlsettings
import libtado.api as api

config_file = "config.yml"
cfg = yamlsettings.load(config_file)

headers = {
    "Authorization": "Bearer %s" % cfg.lifx.token,
}


def turnOffAllLights():
    print("Turn off all lights...")
    payload = {
        "power": "off",
    }
    response = requests.put('https://api.lifx.com/v1/lights/all/state',
                            data=payload,
                            headers=headers)


if __name__ == '__main__':
    t = api.Tado(cfg.tado.username, cfg.tado.password, cfg.tado.secret)

    isAtHome = False

    for device in t.get_mobile_devices():
        if device['location']['atHome']:
            isAtHome = True

    if not isAtHome:
Exemplo n.º 37
0
 def test_load_single_file(self):
     test_defaults = load('defaults.yml')
     self.assertEqual(test_defaults.config.greet, 'Hello')
     self.assertEqual(test_defaults.config.leave, 'Goodbye')
     self.assertEqual(test_defaults.config.secret, 'I have no secrets')
     self.assertEqual(test_defaults.config.meaning, 42)
Exemplo n.º 38
0
 def test_limit(self):
     test_settings = load('settings.yml')
     test_settings.limit(['config'])
     self.assertEqual(list(test_settings), ['config'])
Exemplo n.º 39
0
 def test_stupid_override(self):
     test_settings = load("stupid.yml")
     update_from_env(test_settings)
     self.assertEqual(test_settings.test.config.db, 'OurSQL')
     self.assertEqual(test_settings.test.config_db, 'OurSQL')
Exemplo n.º 40
0
def test_mock_ext(base_registry):
    """Test package extension is not installed"""
    with pytest.raises(yamlsettings.RegistryError):
        yamlsettings.load('package://example')
Exemplo n.º 41
0
 def test_load_first_found(self):
     test_settings = load(['missing.yml', 'defaults.yml', 'settings.yml'])
     self.assertEqual(test_settings.config.greet, 'Hello')
     self.assertEqual(test_settings.config.leave, 'Goodbye')
     self.assertEqual(test_settings.config.secret, 'I have no secrets')
     self.assertEqual(test_settings.config.meaning, 42)
Exemplo n.º 42
0
 def test_list_replace_on_update(self):
     test_defaults = load('defaults.yml')
     test_defaults.update({'a': [1, 2, 3]})
     self.assertEqual(test_defaults.a, [1, 2, 3])
     test_defaults.update({'a': (4,)})
     self.assertEqual(test_defaults.a, (4,))
Exemplo n.º 43
0
 def test_load_first_found(self):
     test_settings = load(['missing.yml', 'defaults.yml', 'settings.yml'])
     self.assertEqual(test_settings.config.greet, 'Hello')
     self.assertEqual(test_settings.config.leave, 'Goodbye')
     self.assertEqual(test_settings.config.secret, 'I have no secrets')
     self.assertEqual(test_settings.config.meaning, 42)
Exemplo n.º 44
0
 def test_clone_changes_isolated(self):
     test_settings = load('defaults.yml')
     test_clone = test_settings.clone()
     test_settings.config.greet = "Hodo"
     self.assertNotEqual(test_settings.config.greet,
                         test_clone.config.greet)
Exemplo n.º 45
0
import yamlsettings as _ys

config = _ys.load("pkg://renogy_rover?prefix=RENOGY_ROVER")