From 400e8a1a70f7aa51fcde8e1fe76b7ba40ee657f4 Mon Sep 17 00:00:00 2001 From: Joshua Boverhof Date: Wed, 27 Aug 2003 22:27:45 +0000 Subject: [PATCH] ---------------------------------------------------------------------- Added Files: README config.py schema.tar.gz test_t1.py test_wsdl.py test_wstools.py test_wstools_net.py xmethods.tar.gz -- basic unittesting framework for WSDLTools/XMLSchema, test_t1 just checks that everything goes where it's supposed to. ---------------------------------------------------------------------- --- test/README | 30 +++++++++ test/config.py | 51 +++++++++++++++ test/schema.tar.gz | Bin 0 -> 68874 bytes test/test_t1.py | 49 ++++++++++++++ test/test_wsdl.py | 137 +++++++++++++++++++++++++++++++++++++++ test/test_wstools.py | 23 +++++++ test/test_wstools_net.py | 14 ++++ test/xmethods.tar.gz | Bin 0 -> 13970 bytes 8 files changed, 304 insertions(+) create mode 100644 test/README create mode 100644 test/config.py create mode 100644 test/schema.tar.gz create mode 100644 test/test_t1.py create mode 100644 test/test_wsdl.py create mode 100644 test/test_wstools.py create mode 100644 test/test_wstools_net.py create mode 100644 test/xmethods.tar.gz diff --git a/test/README b/test/README new file mode 100644 index 0000000..7ddfadd --- /dev/null +++ b/test/README @@ -0,0 +1,30 @@ +Two top level modules have been provided to run the tests. "test_wstools.py" is used +to run all of the local tests. "test_wstools_net.py" is used to run all of the +tests that require network access. + +TESTS: + test_t1 -- Basic test, just checks that wsdl and xsd objects are in the + right places. + + +CONTENTS OF SAMPLE WSDL/XSD: + schema -- Taken from globus-3.0.1(http://www.globus.org) + xmethods -- Taken from XMethods(http://www.xmethods.com) + airport.wsdl + AmazonWebServices.wsdl + books.wsdl + Distance.wsdl + freedb.wsdl + globalweather.wsdl + IHaddock.wsdl + ip2geo.wsdl + magic.wsdl + query.wsdl + RateInfo.wsdl + SHA1Encrypt.wsdl + siteInspect.wsdl + TemperatureService.wsdl + usweather.wsdl + zip2geo.wsdl + + diff --git a/test/config.py b/test/config.py new file mode 100644 index 0000000..6571afd --- /dev/null +++ b/test/config.py @@ -0,0 +1,51 @@ +############################################################################ +# Joshua R. Boverhof, LBNL +# See Copyright for copyright notice! +########################################################################### + +########################################################################### +# Config file for the unit test framework. +# Sections below. +########################################################################### + +########################################################################## +# SECTION [files] - archives of wsdl/xsd files. +# +########################################################################## +[files] +archives = ('xmethods.tar.gz', 'schema.tar.gz') + +########################################################################## +# SECTION [services_by_file] - all services locally available for +# testing. +########################################################################## +[services_by_file] +ogsi = schema/ogsi/ogsi_service.wsdl +airport = xmethods/airport.wsdl +amazon = xmethods/AmazonWebServices.wsdl +books = xmethods/books.wsdl +distance = xmethods/Distance.wsdl +freedb = xmethods/freedb.wsdl +globalweather = xmethods/globalweather.wsdl +IHaddock = xmethods/IHaddock.wsdl +ip2geo = xmethods/ip2geo.wsdl +magic = xmethods/magic.wsdl +query = xmethods/query.wsdl +RateInfo = xmethods/RateInfo.wsdl +SHA1Encrypt = xmethods/SHA1Encrypt.wsdl +siteInsepct = xmethods/siteInspect.wsdl +TemperatureService = xmethods/TemperatureService.wsdl +usweather = xmethods/usweather.wsdl +zip2geo = xmethods/zip2geo.wsdl + + +########################################################################## +# SECTION [services_by_http] - all services available for +# network testing. +########################################################################## +[services_by_http] +amazon = http://soap.amazon.com/schemas/AmazonWebServices.wsdl +homelandsecurity = http://www.boyzoid.com/threat.cfc?wsdl +rtf2html = http://www.infoaccelerator.net/cfc/rft2html.cfc?WSDL + + diff --git a/test/schema.tar.gz b/test/schema.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d6fe7db53491d6a69b2f7bd0d971c104c2aee698 GIT binary patch literal 68874 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 literal 0 HcmV?d00001 diff --git a/test/test_t1.py b/test/test_t1.py new file mode 100644 index 0000000..289f4ba --- /dev/null +++ b/test/test_t1.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python +import unittest, sys +from ConfigParser import ConfigParser +from ZSI.wstools.WSDLTools import WSDLReader +from test_wsdl import WSDLToolsTestCase, NETWORK, STANDALONE + +CONFIG = None + +class AmazonTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'amazon' + self.loadFromConfig(CONFIG) + +class AirportTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'airport' + self.loadFromConfig(CONFIG) + +class OGSITestCase(WSDLToolsTestCase): + def test(self): + self.option = 'ogsi' + self.loadFromConfig(CONFIG) + +CASES = [AmazonTestCase, AirportTestCase, OGSITestCase] +def makeNetworkSuite(): + return getSuite(NETWORK) + +def makeStandAloneSuite(): + return getSuite(STANDALONE) + +def getSuite(section): + tests = [] + suite = unittest.TestSuite() + loader = unittest.TestLoader() + for case in CASES: + case.section = section + test = loader.loadTestsFromTestCase(case) + tests.append(test) + suite.addTests(tests) + return suite + +def main(): + global CONFIG + from test_wstools import CONFIG_FILE + CONFIG = ConfigParser() + CONFIG.read(CONFIG_FILE) + unittest.TestProgram(defaultTest='makeStandAloneSuite') + +if __name__ == "__main__" : main() diff --git a/test/test_wsdl.py b/test/test_wsdl.py new file mode 100644 index 0000000..aadf0de --- /dev/null +++ b/test/test_wsdl.py @@ -0,0 +1,137 @@ +#!/usr/bin/env python +import unittest, sys +from ConfigParser import NoOptionError +from ZSI.wstools.WSDLTools import WSDLReader +from ZSI.wstools.Utility import DOM + +CONFIG = None +NETWORK = 'services_by_http' +STANDALONE = 'services_by_file' + +class WSDLToolsTestCase(unittest.TestCase): + def __init__(self, methodName='runTest'): + unittest.TestCase.__init__(self, methodName) + + def setUp(self): + pass + + def tearDown(self): + if self.wsdl: + self.wsdlServices() + self.wsdlMessages() + self.wsdlPortTypes() + self.wsdlBindings() + self.wsdlImports() + self.wsdlExtensions() + self.wsdlTypes() + + def loadFromConfig(self, config=CONFIG): + try: + print config + path = config.get(self.section, self.option) + except NoOptionError, ex: + self.wsdl = None + else: + if path[:7] == 'http://': + self.loadFromURL(url=path) + else: + self.loadFromFile(file=path) + + def loadFromFile(self, file): + self.wsdl = WSDLReader().loadFromFile(file) + + def loadFromURL(self, url): + self.wsdl = WSDLReader().loadFromURL(url) + + def checkWSDLCollection(self, tag_name, component, key='name'): + definition = self.wsdl.document.documentElement + version = DOM.WSDLUriToVersion(definition.namespaceURI) + nspname = DOM.GetWSDLUri(version) + for node in DOM.getElements(definition, tag_name, nspname): + name = DOM.getAttr(node, key) + comp = component[name] + self.failUnlessEqual(eval('comp.%s' %key), name) + + def checkXSDCollection(self, tag_name, component, node, key='name'): + for cnode in DOM.getElements(node, tag_name): + name = DOM.getAttr(cnode, key) + component[name] + + def wsdlServices(self): + self.checkWSDLCollection('service', self.wsdl.services) + + def wsdlMessages(self): + self.checkWSDLCollection('message', self.wsdl.messages) + + def wsdlPortTypes(self): + self.checkWSDLCollection('portType', self.wsdl.portTypes) + + def wsdlBindings(self): + self.checkWSDLCollection('binding', self.wsdl.bindings) + + def wsdlImports(self): + self.checkWSDLCollection('import', self.wsdl.imports, key='namespace') + + def wsdlTypes(self): + for key in self.wsdl.types.keys(): + schema = self.wsdl.types[key] + self.failUnlessEqual(key, schema.getTargetNamespace()) + + definition = self.wsdl.document.documentElement + version = DOM.WSDLUriToVersion(definition.namespaceURI) + nspname = DOM.GetWSDLUri(version) + for node in DOM.getElements(definition, 'types', nspname): + for snode in DOM.getElements(node, 'schema'): + tns = DOM.findTargetNS(snode) + schema = self.wsdl.types[tns] + self.schemaAttributesDeclarations(schema, snode) + self.schemaAttributeGroupDeclarations(schema, snode) + self.schemaElementDeclarations(schema, snode) + self.schemaTypeDefinitions(schema, snode) + + def wsdlExtensions(self): + if self.wsdl.extensions: + print 'No check for WSDLTools(%s) Extensions:' %(self.wsdl.name) + for ext in self.wsdl.extensions: print '\t', ext + + def schemaAttributesDeclarations(self, schema, node): + self.checkXSDCollection('attribute', schema.attr_decl, node) + + def schemaAttributeGroupDeclarations(self, schema, node): + self.checkXSDCollection('group', schema.attr_groups, node) + + def schemaElementDeclarations(self, schema, node): + self.checkXSDCollection('element', schema.elements, node) + + def schemaTypeDefinitions(self, schema, node): + self.checkXSDCollection('complexType', schema.types, node) + self.checkXSDCollection('simpleType', schema.types, node) + + +def makeNetworkSuite(): + return getSuite(section='services_by_http') + +def makeStandAloneSuite(): + return getSuite('services_by_file') + +def getSuite(section): + names = CONFIG.options(section) + tests = [] + suite = unittest.TestSuite() + loader = unittest.TestLoader() + + WSDLToolsTestCase.section = section + for case in [WSDLToolsTestCase,]: + case.section = section + test = loader.loadTestsFromTestCase(case) + tests.append(test) + #tests.sort() + suite.addTests(tests) + return suite + +#makeTestSuite = makeStandAloneSuite +#def main(): +# unittest.main(defaultTest="makeTestSuite") + + +if __name__ == "__main__" : main() diff --git a/test/test_wstools.py b/test/test_wstools.py new file mode 100644 index 0000000..fde9a63 --- /dev/null +++ b/test/test_wstools.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +import unittest, tarfile, os, ConfigParser +import test_t1 + +SECTION='files' +CONFIG_FILE = 'config.py' + +def main(): + config = ConfigParser.ConfigParser() + config.read(CONFIG_FILE) + archives = config.get(SECTION, 'archives') + archives = eval(archives) + test_t1.CONFIG = config + for file in archives: + tar = tarfile.open(file) + if not os.access(tar.membernames[0], os.R_OK): + for i in tar.getnames(): + tar.extract(i) + + unittest.TestProgram(defaultTest='test_t1.makeStandAloneSuite') + + +if __name__ == "__main__" : main() diff --git a/test/test_wstools_net.py b/test/test_wstools_net.py new file mode 100644 index 0000000..5b1ec6b --- /dev/null +++ b/test/test_wstools_net.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python +import unittest, tarfile, os, ConfigParser +import test_t1 + +CONFIG_FILE = 'config.py' + +def main(): + config = ConfigParser.ConfigParser() + config.read(CONFIG_FILE) + test_t1.CONFIG = config + unittest.TestProgram(defaultTest='test_t1.makeNetworkSuite') + + +if __name__ == "__main__" : main() diff --git a/test/xmethods.tar.gz b/test/xmethods.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..646332ba7f61d1d71432915126aa90a8fc3244b4 GIT binary patch literal 13970 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 literal 0 HcmV?d00001