source: TI12-security/trunk/python/ndg.security.test/ndg/security/test/configfileparsers/test_configfileparsers.py @ 4840

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI12-security/trunk/python/ndg.security.test/ndg/security/test/configfileparsers/test_configfileparsers.py@5053
Revision 4840, 4.4 KB checked in by pjkersha, 11 years ago (diff)

Fix problem with search and replace licence not adding a new line.

Line 
1#!/usr/bin/env python
2"""Unit tests for Credential Wallet class
3
4NERC Data Grid Project
5"""
6__author__ = "P J Kershaw"
7__date__ = "03/10/08"
8__copyright__ = "(C) 2009 Science and Technology Facilities Council"
9__license__ = "BSD - see LICENSE file in top-level directory"
10__contact__ = "Philip.Kershaw@stfc.ac.uk"
11__revision__ = '$Id$'
12
13import unittest
14import os, sys, getpass, re
15import traceback
16
17from ndg.security.common.utils.configfileparsers import \
18    CaseSensitiveConfigParser, INIPropertyFile, readAndValidateProperties
19from ConfigParser import SafeConfigParser
20
21from os.path import expandvars as xpdVars
22from os.path import join as jnPath
23mkPath=lambda file: jnPath(os.environ['NDGSEC_CONFIGFILEPARSERS_UNITTEST_DIR'],
24                           file)
25
26import logging
27logging.basicConfig(level=logging.DEBUG)
28
29
30class ConfigFileParsersTestCase(unittest.TestCase):
31    """Unit test case for ndg.security.common.utils.configfileparsers
32    module.
33    """
34   
35    def setUp(self):
36       
37        if 'NDGSEC_INT_DEBUG' in os.environ:
38            import pdb
39            pdb.set_trace()
40       
41        if 'NDGSEC_CONFIGFILEPARSERS_UNITTEST_DIR' not in os.environ:
42            os.environ['NDGSEC_CONFIGFILEPARSERS_UNITTEST_DIR'] = \
43                os.path.abspath(os.path.dirname(__file__))
44       
45        self.cfg = CaseSensitiveConfigParser()
46        self.configFilePath = mkPath("test.cfg")     
47
48    def test1CaseSensitiveConfigParser(self):
49        caseSensitiveCfg = CaseSensitiveConfigParser()
50        caseSensitiveCfg.read(self.configFilePath)
51       
52        cfg = SafeConfigParser()
53        cfg.read(self.configFilePath)
54        cfgVal = cfg.getboolean('test1CaseSensitiveConfigParser', 
55                                'CaseSensitiveOption')
56        caseSensitiveVal=caseSensitiveCfg.getboolean(
57                                            'test1CaseSensitiveConfigParser', 
58                                            'CaseSensitiveOption')
59        assert(caseSensitiveVal != cfgVal)
60       
61    def test2INIPropertyFile(self):
62        cfgFile = INIPropertyFile()
63        validKeys = {'name': NotImplemented, 'useSSL': NotImplemented,
64                     'attCertLifetime': 2000}
65        prop = cfgFile(self.configFilePath, validKeys,
66                       sections=('test2INIPropertyFile',),
67                       prefix='attributeAuthority')
68        print "properties ..."
69        print prop
70        print("prop['test2INIPropertyFile']['name']=%s"%
71                                        prop['test2INIPropertyFile']['name'])
72           
73        print("prop['test2INIPropertyFile']['useSSL']"
74              "=%s" % prop['test2INIPropertyFile']['useSSL'])
75        print("prop['test2INIPropertyFile']['attCertLifetime']=%s" % 
76              prop['test2INIPropertyFile']['attCertLifetime'])
77       
78        assert(isinstance(prop['test2INIPropertyFile']['attCertLifetime'], 
79                          float))
80       
81        assert(isinstance(prop['test2INIPropertyFile']['useSSL'], bool))
82           
83    def test3ReadAndValidateProperties(self):
84       
85        # keys set to NotImplemented must be present in the config, others
86        # accept defaults as given.  A key set to a populated dict denotes
87        # a subcomponent.
88        validKeys = {
89            'sslCertFile': NotImplemented,
90            'sslKeyFile': NotImplemented,
91            'sslCACertFilePathList': [],
92            'credentialWallet': {
93                'attributeAuthorityURI': 'A DEFAULT VALUE',
94                'caCertFilePathList': [],
95                'mapFromTrustedHosts': False,
96                'attCertRefreshElapse': -1
97            }
98        }
99
100        prop = readAndValidateProperties(self.configFilePath, validKeys,
101                               sections=('test3ReadAndValidateProperties',),
102                               prefix='sessionManager')
103        print "properties ..."
104        print prop
105        assert(prop.keys()==['test3ReadAndValidateProperties'])
106       
107        assert(prop['test3ReadAndValidateProperties']['sslCertFile'])
108        assert('credentialWallet' in prop['test3ReadAndValidateProperties'])
109       
110        # attributeAuthorityURI is not present in the config so it should be
111        # set to its default value
112        assert(prop['test3ReadAndValidateProperties']
113            ['credentialWallet']['attributeAuthorityURI']=='A DEFAULT VALUE')
114       
115if __name__ == "__main__":
116    unittest.main()       
Note: See TracBrowser for help on using the repository browser.