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

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

Updated contact e-mail address

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