| @@ -0,0 +1,101 @@ | |||||
| ############################################################################ | |||||
| # David W. Robertson, LBNL | |||||
| # See Copyright for copyright notice! | |||||
| ########################################################################### | |||||
| import sys, ConfigParser, unittest | |||||
| import StringIO | |||||
| from ZSI import wsdl2python | |||||
| #from pyGridWare import wsdl2python | |||||
| from ZSI.wstools.WSDLTools import WSDLReader | |||||
| from pyGridWare.test import utils | |||||
| """ | |||||
| Unittest for the wsdl2python class | |||||
| """ | |||||
| def setUpWsdl(path): | |||||
| if path[:7] == 'http://': | |||||
| wsdl = WSDLReader().loadFromURL(path) | |||||
| else: | |||||
| wsdl = WSDLReader().loadFromFile(path) | |||||
| return wsdl | |||||
| class Wsdl2pythonTest(unittest.TestCase): | |||||
| """Test case for wsdl2python.WriteServiceModule | |||||
| """ | |||||
| def __init__(self, methodName='runTest'): | |||||
| global configLoader | |||||
| unittest.TestCase.__init__(self, methodName) | |||||
| def setUp(self): | |||||
| # not thread safe | |||||
| self.path = configLoader.nameGenerator.next() | |||||
| print self.path | |||||
| sys.stdout.flush() | |||||
| self.testdiff = utils.TestDiff(self) | |||||
| self.wsdl = configLoader.nameGenerator.next() | |||||
| def tearDown(self): | |||||
| if self.wsdl is not None: | |||||
| del self.wsdl | |||||
| self.testdiff.close() | |||||
| def __str__(self): | |||||
| teststr = unittest.TestCase.__str__(self) | |||||
| if hasattr(self, "path"): | |||||
| return "%s: %s" % (teststr, self.path ) | |||||
| else: | |||||
| return "%s" % (teststr) | |||||
| def do_diffs(self, choice): | |||||
| self.failUnless(self.wsdl is not None, "Unable to start, load failed") | |||||
| codegen = wsdl2python.WriteServiceModule(self.wsdl) | |||||
| f_types, f_services = codegen.get_module_names() | |||||
| strFile = StringIO.StringIO() | |||||
| if choice == "service_types": | |||||
| self.testdiff.setDiffFile(f_types + ".py") | |||||
| codegen.write_service_types(f_types, strFile) | |||||
| else: | |||||
| self.testdiff.setDiffFile(f_services + ".py") | |||||
| codegen.write_services(f_types, f_services, strFile) | |||||
| self.testdiff.failUnlessEqual(strFile) | |||||
| strFile.close() | |||||
| def test_Xmethods_service_types(self): | |||||
| # add exception for url not found | |||||
| self.do_diffs("service_types") | |||||
| def test_Xmethods_services(self): | |||||
| self.do_diffs("services") | |||||
| def makeTestSuite(topLevel=False, config=None): | |||||
| global configLoader | |||||
| suite = unittest.TestSuite() | |||||
| if not hasattr(sys.modules[__name__], "configLoader"): | |||||
| if not config: | |||||
| configLoader = utils.MatchTestLoader(False, "config.py", | |||||
| "Wsdl2pythonTest") | |||||
| else: | |||||
| configLoader = config | |||||
| configLoader.testMethodPrefix = "test" | |||||
| suite.addTest(configLoader.loadTestsFromConfig(Wsdl2pythonTest, | |||||
| "services_by_http", | |||||
| valueFunc = setUpWsdl)) | |||||
| return suite | |||||
| def main(): | |||||
| global configLoader | |||||
| configLoader = utils.MatchTestLoader(False, "config.py", "makeTestSuite") | |||||
| unittest.main(defaultTest="makeTestSuite", testLoader=configLoader) | |||||
| if __name__ == "__main__" : main() | |||||