| @@ -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() | |||