From 94584c4be7304a1799388cdc28ea83652564d531 Mon Sep 17 00:00:00 2001 From: Joshua Boverhof Date: Thu, 28 Aug 2003 19:03:58 +0000 Subject: [PATCH] ---------------------------------------------------------------------- Modified Files: README config.py test_t1.py test_wsdl.py xmethods.tar.gz Added a couple tests and an explanation of how to add new tests. ---------------------------------------------------------------------- --- test/README | 42 +++++++++++++++- test/config.py | 12 ++++- test/test_t1.py | 111 ++++++++++++++++++++++++++++++++++++++++++- test/test_wsdl.py | 4 +- test/xmethods.tar.gz | Bin 13970 -> 15209 bytes 5 files changed, 162 insertions(+), 7 deletions(-) diff --git a/test/README b/test/README index 7ddfadd..93dc21c 100644 --- a/test/README +++ b/test/README @@ -6,6 +6,44 @@ TESTS: test_t1 -- Basic test, just checks that wsdl and xsd objects are in the right places. +ADDING TESTS: + 1. For Stand-Alone tests add WSDL FILE to appropriate archive file + Need to add a NEW Archive?: + config.py [files] "archive" -- tuple of all archive files, + if you need to create a new archive append the archive + name to the 'archive' tuple. + + 2. Edit config.py section(s): + option -- name by which service will be referenced in test case. + Need an entry under appropriate section(s), this name + must be unique within each section it appears but it may + appear in multiple sections. + + config.py "test" sections: + Stand-Alone -- add "option" under [services_by_file] + eg. amazon = exports/AmazonWebServices.wsdl + + Network -- add "option" under [services_by_http] + eg. amazon = http://soap.amazon.com/schemas/AmazonWebServices.wsdl + + Broken -- add "option" under [broken] + + 3. In test module(s) + a. Add test case: + + #eg. test_t1.py + class AmazonTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'amazon' + self.loadFromConfig(CONFIG) + + b. Add class name of test case to CASES list. + CASES = [AirportTestCase, + AmazonTestCase, + .... etc + + 4. Done + CONTENTS OF SAMPLE WSDL/XSD: schema -- Taken from globus-3.0.1(http://www.globus.org) @@ -25,6 +63,6 @@ CONTENTS OF SAMPLE WSDL/XSD: siteInspect.wsdl TemperatureService.wsdl usweather.wsdl + rtf2html.xml + SolveSystem.wsdl.xml zip2geo.wsdl - - diff --git a/test/config.py b/test/config.py index 6571afd..377e26b 100644 --- a/test/config.py +++ b/test/config.py @@ -37,6 +37,7 @@ siteInsepct = xmethods/siteInspect.wsdl TemperatureService = xmethods/TemperatureService.wsdl usweather = xmethods/usweather.wsdl zip2geo = xmethods/zip2geo.wsdl +SolveSystem = xmethods/SolveSystem.wsdl.xml ########################################################################## @@ -46,6 +47,15 @@ zip2geo = xmethods/zip2geo.wsdl [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 +SolveSystem = http://www.lixusnet.com/SolveSystem.wsdl + + +########################################################################## +# SECTION [broken] - Legal challenges. Appears to be a problem +# in the wsdl. +########################################################################## +[broken] +rtf2html = http://www.infoaccelerator.net/cfc/rft2html.cfc?WSDL +rtf2html = xmethods/rtf2html.xml diff --git a/test/test_t1.py b/test/test_t1.py index 289f4ba..25990d1 100644 --- a/test/test_t1.py +++ b/test/test_t1.py @@ -6,6 +6,16 @@ from test_wsdl import WSDLToolsTestCase, NETWORK, STANDALONE CONFIG = None +class HomeLandSecurityTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'homelandsecurity' + self.loadFromConfig(CONFIG) + +class Rtf2htmlTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'rtf2html' + self.loadFromConfig(CONFIG) + class AmazonTestCase(WSDLToolsTestCase): def test(self): self.option = 'amazon' @@ -21,7 +31,103 @@ class OGSITestCase(WSDLToolsTestCase): self.option = 'ogsi' self.loadFromConfig(CONFIG) -CASES = [AmazonTestCase, AirportTestCase, OGSITestCase] +class BooksTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'books' + self.loadFromConfig(CONFIG) + +class DistanceTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'distance' + self.loadFromConfig(CONFIG) + +class FreeDBTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'freedb' + self.loadFromConfig(CONFIG) + +class GlobalWeatherTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'globalweather' + self.loadFromConfig(CONFIG) + +class IHaddockTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'IHaddock' + self.loadFromConfig(CONFIG) + +class Ip2geoTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'ip2geo' + self.loadFromConfig(CONFIG) + +class MagicTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'magic' + self.loadFromConfig(CONFIG) + +class QueryTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'query' + self.loadFromConfig(CONFIG) + +class RateInfoTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'RateInfo' + self.loadFromConfig(CONFIG) + +class SHA1EncryptTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'SHA1Encrypt' + self.loadFromConfig(CONFIG) + +class SiteInspectTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'siteInspect' + self.loadFromConfig(CONFIG) + +class SolveSystemsTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'SolveSystem' + self.loadFromConfig(CONFIG) + +class TemperatureServiceTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'TemperatureService' + self.loadFromConfig(CONFIG) + +class USweatherTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'usweather' + self.loadFromConfig(CONFIG) + +class Zip2geoTestCase(WSDLToolsTestCase): + def test(self): + self.option = 'zip2geo' + self.loadFromConfig(CONFIG) + +CASES = [AirportTestCase, + AmazonTestCase, + BooksTestCase, + DistanceTestCase, + FreeDBTestCase, + GlobalWeatherTestCase, + HomeLandSecurityTestCase, + IHaddockTestCase, + Ip2geoTestCase, + MagicTestCase, + OGSITestCase, + QueryTestCase, + RateInfoTestCase, + Rtf2htmlTestCase, + SHA1EncryptTestCase, + SiteInspectTestCase, + SolveSystemsTestCase, + TemperatureServiceTestCase, + USweatherTestCase, + WSDLToolsTestCase, + Zip2geoTestCase] + def makeNetworkSuite(): return getSuite(NETWORK) @@ -32,8 +138,9 @@ def getSuite(section): tests = [] suite = unittest.TestSuite() loader = unittest.TestLoader() + WSDLToolsTestCase.section = section for case in CASES: - case.section = section + #case.section = section test = loader.loadTestsFromTestCase(case) tests.append(test) suite.addTests(tests) diff --git a/test/test_wsdl.py b/test/test_wsdl.py index aadf0de..0f8a9c9 100644 --- a/test/test_wsdl.py +++ b/test/test_wsdl.py @@ -26,11 +26,11 @@ class WSDLToolsTestCase(unittest.TestCase): self.wsdlTypes() def loadFromConfig(self, config=CONFIG): + self.wsdl = None try: - print config path = config.get(self.section, self.option) except NoOptionError, ex: - self.wsdl = None + pass else: if path[:7] == 'http://': self.loadFromURL(url=path) diff --git a/test/xmethods.tar.gz b/test/xmethods.tar.gz index 646332ba7f61d1d71432915126aa90a8fc3244b4..4521a9ac9794a2d76c08453a62bf5af5cd359254 100644 GIT binary patch literal 15209 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