00001
00002
00003
00004
00005
00006 import os, sys, unittest
00007 from ServiceTest import main, ServiceTestCase, ServiceTestSuite
00008 from ZSI import FaultException, TC
00009 from ZSI.schema import GED, GTD
00010
00011 """
00012 Unittest
00013
00014 WSDL: ../../samples/Echo/Echo.wsdl
00015 """
00016
00017
00018 def dispatch():
00019 """Run all dispatch tests"""
00020 suite = ServiceTestSuite()
00021 suite.addTest(unittest.makeSuite(EchoTestCase, 'test_dispatch'))
00022 return suite
00023
00024 def local():
00025 """Run all local tests"""
00026 suite = ServiceTestSuite()
00027 suite.addTest(unittest.makeSuite(EchoTestCase, 'test_local'))
00028 return suite
00029
00030 def net():
00031 """Run all network tests"""
00032 suite = ServiceTestSuite()
00033 suite.addTest(unittest.makeSuite(EchoTestCase, 'test_net'))
00034 return suite
00035
00036 def all():
00037 """Run all tests"""
00038 suite = ServiceTestSuite()
00039 suite.addTest(unittest.makeSuite(EchoTestCase, 'test_'))
00040 return suite
00041
00042
00043 class EchoTestCase(ServiceTestCase):
00044 name = "test_EchoWSAddr200403"
00045 client_file_name = "EchoWSAddr200403Server_client.py"
00046 types_file_name = "EchoWSAddr200403Server_types.py"
00047 server_file_name = "EchoWSAddr200403Server_server.py"
00048
00049 def __init__(self, methodName):
00050 ServiceTestCase.__init__(self, methodName)
00051 self.wsdl2py_args.append('-ab')
00052
00053 def getPortKWArgs(self):
00054 kw = ServiceTestCase.getPortKWArgs(self)
00055 kw['wsAddressURI'] = 'http://schemas.xmlsoap.org/ws/2004/03/addressing'
00056 return kw
00057
00058 def test_local_Echo(self):
00059 msg = self.client_module.EchoRequest()
00060 rsp = self.client_module.EchoResponse()
00061
00062 def test_dispatch_Echo(self):
00063 loc = self.client_module.EchoWSAddr200403ServerLocator()
00064 port = loc.getport(**self.getPortKWArgs())
00065
00066 msg = self.client_module.EchoRequest()
00067 msg.EchoIn = 'bla bla bla'
00068 rsp = port.Echo(msg)
00069 self.failUnless(rsp.EchoResult == msg.EchoIn, "Bad Echo")
00070
00071 def test_dispatch_Echo_MIH_EPR(self):
00072 epr = GED('http://schemas.xmlsoap.org/ws/2004/03/addressing','EndpointReference').pyclass()
00073 epr.Address = 'urn:whatever'
00074
00075 loc = self.client_module.EchoWSAddr200403ServerLocator()
00076 port = loc.getport(endPointReference=epr, **self.getPortKWArgs())
00077
00078 msg = self.client_module.EchoRequest()
00079 msg.EchoIn = 1
00080 rsp = port.Echo(msg)
00081 self.failUnless(rsp.EchoResult == msg.EchoIn, "Bad Echo")
00082
00083 def test_dispatch_Echo_MIH_EPR2(self):
00084 epr = GED('http://schemas.xmlsoap.org/ws/2004/03/addressing','EndpointReference').pyclass()
00085 epr.Address = 'urn:whatever'
00086 epr.ReferenceProperties = epr.new_ReferenceProperties()
00087
00088 loc = self.client_module.EchoWSAddr200403ServerLocator()
00089 port = loc.getport(endPointReference=epr, **self.getPortKWArgs())
00090
00091 msg = self.client_module.EchoRequest()
00092 msg.EchoIn = 1
00093 rsp = port.Echo(msg)
00094 self.failUnless(rsp.EchoResult == msg.EchoIn, "Bad Echo")
00095
00096 def test_dispatch_Echo_MIH_EPR3_BadHeader(self):
00097 """Unqualified element "mystr" in Header
00098 """
00099 epr = GED('http://schemas.xmlsoap.org/ws/2004/03/addressing','EndpointReference').pyclass()
00100 epr.Address = 'urn:whatever'
00101 epr.ReferenceProperties = epr.new_ReferenceProperties()
00102 class Xstr(str):
00103 typecode = TC.String('mystr')
00104
00105 epr.ReferenceProperties.Any = [Xstr('whatever'),]
00106
00107 loc = self.client_module.EchoWSAddr200403ServerLocator()
00108 self._setUpDispatch()
00109 port = loc.getport(endPointReference=epr, **self.getPortKWArgs())
00110
00111 msg = self.client_module.EchoRequest()
00112 self.failUnlessRaises(FaultException, port.Echo,msg)
00113
00114 def test_dispatch_Echo_MIH_EPR3(self):
00115 epr = GED('http://schemas.xmlsoap.org/ws/2004/03/addressing','EndpointReference').pyclass()
00116 epr.Address = 'urn:whatever'
00117 epr.ReferenceProperties = epr.new_ReferenceProperties()
00118 class Xstr(str):
00119 typecode = TC.String(('urn:josh','mystr'))
00120
00121 epr.ReferenceProperties.Any = [Xstr('whatever'),]
00122
00123 loc = self.client_module.EchoWSAddr200403ServerLocator()
00124 self._setUpDispatch()
00125 port = loc.getport(endPointReference=epr, **self.getPortKWArgs())
00126
00127 msg = self.client_module.EchoRequest()
00128 epr2 = GTD('http://schemas.xmlsoap.org/ws/2004/03/addressing','EndpointReferenceType')(None).pyclass()
00129 epr2.Address = epr.Address
00130 epr2.ReferenceProperties = epr.ReferenceProperties
00131
00132 msg.EchoIn = epr2
00133 rsp = port.Echo(msg)
00134 self.failUnless(rsp.EchoResult.Address == msg.EchoIn.Address, "Bad Echo")
00135 self.failUnless(rsp.EchoResult.ReferenceProperties.Any == msg.EchoIn.ReferenceProperties.Any, "Bad Echo")
00136
00137
00138 if __name__ == "__main__" :
00139 main()
00140