source: TI12-security/trunk/python/ndg.security.test/ndg/security/test/XMLSecDoc/xmlSecDocTest.py @ 4140

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI12-security/trunk/python/ndg.security.test/ndg/security/test/XMLSecDoc/xmlSecDocTest.py@4140
Revision 4140, 4.5 KB checked in by cbyrom, 12 years ago (diff)

Fix property keywords in test cases - since these don't use the Case Sensitive parse
the names need to be lowercased.

  • Property svn:executable set to *
  • Property svn:keywords set to Id
Line 
1#!/usr/bin/env python
2"""NDG XML Security unit tests
3
4NERC Data Grid Project
5"""
6__author__ = "P J Kershaw"
7__date__ = "03/01/07"
8__copyright__ = "(C) 2007 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__ = "P.J.Kershaw@rl.ac.uk"
13__revision__ = '$Id$'
14
15import unittest
16import os
17import sys
18import getpass
19import traceback
20
21from ConfigParser import SafeConfigParser
22from ndg.security.common.XMLSec import XMLSecDoc
23
24from os.path import expandvars as xpdVars
25from os.path import join as jnPath
26mkPath = lambda file: jnPath(os.environ['NDGSEC_XMLSECDOC_UNITTEST_DIR'], file)
27
28class XMLSecDocTestCase(unittest.TestCase):
29   
30    def setUp(self):
31       
32        if 'NDGSEC_INT_DEBUG' in os.environ:
33            import pdb
34            pdb.set_trace()
35       
36        if 'NDGSEC_XMLSECDOC_UNITTEST_DIR' not in os.environ:
37            os.environ['NDGSEC_XMLSECDOC_UNITTEST_DIR'] = \
38                os.path.abspath(os.path.dirname(__file__))
39       
40        configParser = SafeConfigParser()
41        configFilePath = jnPath(os.environ['NDGSEC_XMLSECDOC_UNITTEST_DIR'],
42                                "xmlSecDocTest.cfg")
43        configParser.read(configFilePath)
44       
45        self.cfg = {}
46        for section in configParser.sections():
47            self.cfg[section] = dict(configParser.items(section))
48
49        self.strXML = """<?xml version="1.0"?>
50<attributeCertificate targetNamespace="urn:ndg:security">
51    <acInfo>
52        <version>1.0</version>
53        <holder>/CN=gabriel/O=NDG/OU=Gabriel</holder>
54        <issuer>/CN=AttributeAuthority/O=NDG/OU=Gabriel</issuer>
55        <issuerName>Gabriel</issuerName>
56        <issuerSerialNumber>42</issuerSerialNumber>
57        <validity>
58            <notBefore>2006 07 17 08 44 03</notBefore>
59            <notAfter>2006 07 17 16 44 03</notAfter>
60        </validity>
61        <attributes>
62            <roleSet>
63                <role>
64                    <name>staff</name>
65                </role>
66                <role>
67                    <name>postdoc</name>
68                </role>
69                <role>
70                    <name>academic</name>
71                </role>
72            </roleSet>
73        </attributes>
74        <provenance>original</provenance>
75    </acInfo>
76</attributeCertificate>
77"""         
78        self.xmlSecDoc = XMLSecDoc()
79       
80    def test1Parse(self):
81        '''test1Parse: parse an XML document'''
82           
83        self.xmlSecDoc.parse(self.strXML)
84
85
86    def test2Sign(self): 
87        '''test2Sign: sign document'''
88           
89        self.xmlSecDoc.filePath = xpdVars(self.cfg['test2Sign']['filepath'])
90        self.xmlSecDoc.certFilePathList = \
91                                xpdVars(self.cfg['test2Sign']['signingcertfilepath'])
92        self.xmlSecDoc.signingKeyFilePath = \
93                                xpdVars(self.cfg['test2Sign']['signingprikeyfilepath'])
94       
95        keyPwd = self.cfg['test2Sign'].get('signingprikeypwd')
96        if keyPwd is None:
97            self.xmlSecDoc.signingKeyPwd = \
98                getpass.getpass(prompt="\ntest2Sign private key password: ")
99       
100        self.xmlSecDoc.applyEnvelopedSignature(xmlTxt=self.strXML)
101        self.xmlSecDoc.write()
102   
103   
104    def test3Write(self):
105        '''test3Write: write document'''
106           
107        self.test1Parse()
108        self.xmlSecDoc.filePath = xpdVars(self.cfg['test3Write']['filepath'])
109        self.xmlSecDoc.write()
110
111       
112    def test4Read(self):
113        '''test4Read: read document'''
114           
115        self.xmlSecDoc.filePath = xpdVars(self.cfg['test4Read']['filepath'])
116        self.xmlSecDoc.read()
117
118
119    def test5Verify(self):
120        '''test5Verify: check signature of XML document'''
121           
122        self.xmlSecDoc.filePath = xpdVars(self.cfg['test5Verify']['filepath'])
123        self.xmlSecDoc.certFilePathList = [xpdVars(file) for file in \
124                        self.cfg['test5Verify']['certfilepathlist'].split()]
125        self.xmlSecDoc.read()
126        self.xmlSecDoc.verifyEnvelopedSignature()
127       
128 
129#_____________________________________________________________________________       
130class XMLSecDocTestSuite(unittest.TestSuite):
131    def __init__(self):
132        map = map(XMLSecDocTestCase,
133                  (
134                   "test1Parse",
135                   "test2Sign", 
136                   "test3Write", 
137                   "test4Read", 
138                   "test5Verify"
139                  ))
140        unittest.TestSuite.__init__(self, map)
141                                       
142if __name__ == "__main__":
143    unittest.main()
Note: See TracBrowser for help on using the repository browser.