TestConfig.test_overwrite_default_config()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
c 0
b 0
f 0
dl 0
loc 5
rs 9.4285
1
import unittest
2
import os
3
import argparse
4
from mock import MagicMock
5
from kafka_influxdb.config import loader, default_config
6
7
8
class Config:
9
    def __init__(self, configfile):
10
        self.configfile = configfile
11
12
13
class ParsedConfig:
14
    def __init__(self, kafka):
15
        self.kafka_host = kafka
16
17
18
class TestConfig(unittest.TestCase):
19
    def setUp(self):
20
        path = os.path.dirname(os.path.abspath(__file__))
21
        self.configfile = "{}/../fixtures/config.yaml".format(path)
22
23
    def test_load_config(self):
24
        parsed_config = loader.parse_configfile(self.configfile)
25
        self.assertEqual(parsed_config["kafka"]["host"], "kafkahost")
26
        self.assertEqual(parsed_config["kafka"]["port"], 1234)
27
        self.assertEqual(parsed_config["kafka"]["topic"], "kafkatopic")
28
        self.assertEqual(parsed_config["kafka"]["group"], "foogroup")
29
        self.assertEqual(parsed_config["influxdb"]["host"], "influxdbhost")
30
        self.assertEqual(parsed_config["influxdb"]["port"], 9999)
31
        self.assertEqual(parsed_config["influxdb"]["user"], "hans")
32
        self.assertEqual(parsed_config["influxdb"]["password"], "hans")
33
        self.assertEqual(parsed_config["influxdb"]["dbname"], "influxdbname")
34
        self.assertEqual(parsed_config["influxdb"]["use_ssl"], True)
35
        self.assertEqual(parsed_config["influxdb"]["verify_ssl"], True)
36
        self.assertEqual(parsed_config["influxdb"]["timeout"], 9000)
37
        self.assertEqual(parsed_config["influxdb"]["use_udp"], False)
38
        self.assertEqual(parsed_config["influxdb"]
39
                         ["retention_policy"], "my_rp")
40
        self.assertEqual(parsed_config["encoder"], "collectd_graphite_encoder")
41
        self.assertEqual(parsed_config["buffer_size"], 444)
42
        self.assertEqual(parsed_config["statistics"], True)
43
44
    def test_argparse_flags(self):
45
        long_flags = [
46
            'influxdb_use_ssl',
47
            'influxdb_verify_ssl',
48
            'influxdb_use_udp',
49
            'statistics'
50
        ]
51
        for flag in long_flags:
52
            parsed = loader.parse_args(['--' + flag])
53
            self.assertEqual(parsed[flag], True)
54
55
        parsed = loader.parse_args(['-s'])
56
        self.assertEqual(parsed['statistics'], True)
57
58
    def test_cli_overwrite(self):
59
        # Fake commandline arguments
60
        # Argparse returns a namespace, not a dictionary
61
        fake_args = argparse.Namespace()
62
        fake_args.influxdb_use_ssl = False
63
        argparse.ArgumentParser.parse_args = MagicMock(return_value=fake_args)
64
65
        # Fake default config
66
        default_config.DEFAULT_CONFIG = MagicMock(
67
            return_value={'influxdb_use_ssl': True})
68
        config = loader.load_config()
69
70
        # Check if the default setting got overwritten
71
        self.assertEqual(config.influxdb_use_ssl, False)
72
73
    def test_overwrite_default_config(self):
74
        default_config = {'kafka_host': 'defaulthost'}
75
        config = loader.overwrite_config(
76
            default_config, {'kafka_host': 'otherhost'})
77
        self.assertEqual(config['kafka_host'], 'otherhost')
78
79
80
if __name__ == '__main__':
81
    unittest.main()
82