tests/config.py
author Sandro Knauß <knauss@netzguerilla.net>
Sat, 25 Feb 2012 16:12:07 +0100
branchdevel
changeset 186 b381eaa774ab
parent 184 6b0ff82dff81
child 187 352527f2b6ca
permissions -rw-r--r--
refactoring ifo.config
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
     1
from mock import patch, Mock
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
     2
from twisted.trial import unittest
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
     3
import signal
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
     4
import io
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
     5
import ConfigParser
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
     6
from  iro import config, error 
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
     7
from iro.offer.provider import Provider, providers
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
     8
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
     9
class TestConfig(unittest.TestCase):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    10
    '''test config class'''
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    11
    
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    12
    def setUp(self):
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    13
        self._reloadList=config.configParser.reloadList
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    14
        config.configParser.reloadList=[]
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    15
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    16
    def tearDown(self):
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    17
        config.configParser.reloadList = self._reloadList
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    18
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    19
    @patch('iro.config.main')
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    20
    @patch('iro.config.configParser')
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    21
    def testReadConfig(self,pConfig,pMain):
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    22
        pMain.read = False
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    23
        config.readConfig()
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    24
        self.assertEqual([i[0] for i in pConfig.method_calls],["read","reload","items"])
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    25
        pConfig.read.assert_called_once_with(config.confFiles)
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    26
        pConfig.items.assert_called_once_with("main")
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    27
        pConfig.reload.assert_called_once_with()
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    28
        self.assertEqual(pMain.load.called,1)
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    29
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    30
    @patch('signal.signal')
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    31
    @patch('iro.config.readConfig')
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    32
    def testRegisterSignal(self, pReadConfig, pSignal):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    33
        config.registerSignal()
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    34
        self.assertEqual(pSignal.call_args[0][0],signal.SIGUSR2)
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    35
        self.assertEqual(pReadConfig.called,0)
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    36
        pSignal.call_args[0][1](None, None)
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    37
        pReadConfig.assert_called_once_with()
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    38
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    39
    def testRegisterReload(self):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    40
        def x():
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    41
            pass
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    42
        config.configParser.registerReload(x)
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    43
        self.assertEqual(config.configParser.reloadList,[x])
146
8cae6cfc1de4 adding ConfigTest and OfferTest
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff changeset
    44
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    45
    def testReload(self):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    46
        x = Mock()
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    47
        config.configParser.reloadList = [x] 
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    48
        config.configParser.reload_()
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    49
        x.assert_called_once_with()
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    50
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    51
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    52
class TestRead(unittest.TestCase):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    53
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    54
    def tearDown(self):
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    55
        for s in config.configParser.sections():
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    56
            config.configParser.remove_section(s)
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    57
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    58
    @patch('iro.config.ConfigParser.read')
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    59
    def testMain(self,pRead):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    60
        sample_config = """[main]
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    61
hostname = localhost
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    62
port = 8000
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    63
dburl = sdfdsafgsfdg
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    64
"""
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    65
        config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    66
        config.configParser.read([])
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    67
        pRead.assert_called_once_with(config.configParser,[])
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    68
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    69
    @patch('iro.config.ConfigParser.read')
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    70
    def testMainBadPort(self,pRead):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    71
        sample_config = """[main]
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    72
hostname = localhost
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    73
port = -8000
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    74
dburl = sadfaserasg
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    75
"""
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    76
        config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    77
        self.assertRaises(error.ValidateException, config.configParser.read, [])
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    78
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    79
    @patch('iro.config.ConfigParser.read')
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    80
    def testMainNoMust(self,pRead):
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    81
        sample_config = """[main]
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    82
port = 8000
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    83
dburl = asdfgdsrg
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    84
"""
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    85
        config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    86
        self.assertRaises(config.NeededOption, config.configParser.read, [])
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
    87
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
    88
    @patch('iro.config.ConfigParser.read')
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
    89
    def testMust(self,pRead):
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
    90
        v=Mock()
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    91
        config.main.options["test"] = config.Option(v)
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
    92
        try:
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
    93
            sample_config = """[main]
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
    94
hostname = localhost
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    95
dburl = sdfawersdf
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
    96
port = 8000
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
    97
"""
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    98
            config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
    99
            config.configParser.read([])
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   100
            self.assertEqual(v.called,0)
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   101
            sample_config = """[main]
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   102
hostname = localhost
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   103
dburl = adfgsdftsfg
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   104
port = 8000
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   105
test = foohu
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   106
    """
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   107
            config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   108
            config.configParser.read([])
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   109
            v.assert_called_once_with("foohu","test")
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   110
        finally:
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   111
            del(config.main.options["test"])
179
af65fcbd59d5 start with implementing iro.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 146
diff changeset
   112
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   113
    @patch('iro.config.ConfigParser.read')
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   114
    def testProviders(self, pRead):
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   115
        v=Mock()
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   116
        class TestProvider(Provider):
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   117
            def __init__(self,name):
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   118
                Provider.__init__(self,name)
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   119
                self.options.update({"test":config.Option(v)})
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   120
        providers["test"]=TestProvider
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   121
        try:
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   122
            sample_config = """[p]
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   123
"""
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   124
            config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   125
            self.assertRaises(ConfigParser.NoOptionError, config.configParser.read, [])  
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   126
            self.assertEqual(v.called,0)
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   127
            sample_config = """[p]
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   128
typ= test
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   129
test= foo
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   130
"""
186
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   131
            config.configParser.readfp(io.BytesIO(sample_config))
b381eaa774ab refactoring ifo.config
Sandro Knauß <knauss@netzguerilla.net>
parents: 184
diff changeset
   132
            config.configParser.read([])
184
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   133
            v.assert_called_once_with("foo","test")
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   134
        finally:
6b0ff82dff81 testing Must argument and Provider section
Sandro Knauß <knauss@netzguerilla.net>
parents: 179
diff changeset
   135
            del(providers["test"])