1#!/usr/bin/env python 2############################################################################ 3# Joshua R. Boverhof, LBNL 4# See LBNLCopyright for copyright notice! 5########################################################################### 6import os, sys, unittest 7from ServiceTest import main, ServiceTestCase, ServiceTestSuite 8from ZSI import FaultException, TC 9from ZSI.schema import GED, GTD 10 11""" 12Unittest 13 14WSDL: ../../samples/Echo/Echo.wsdl 15""" 16 17# General targets 18def dispatch(): 19 """Run all dispatch tests""" 20 suite = ServiceTestSuite() 21 suite.addTest(unittest.makeSuite(EchoTestCase, 'test_dispatch')) 22 return suite 23 24def local(): 25 """Run all local tests""" 26 suite = ServiceTestSuite() 27 suite.addTest(unittest.makeSuite(EchoTestCase, 'test_local')) 28 return suite 29 30def net(): 31 """Run all network tests""" 32 suite = ServiceTestSuite() 33 suite.addTest(unittest.makeSuite(EchoTestCase, 'test_net')) 34 return suite 35 36def all(): 37 """Run all tests""" 38 suite = ServiceTestSuite() 39 suite.addTest(unittest.makeSuite(EchoTestCase, 'test_')) 40 return suite 41 42 43class EchoTestCase(ServiceTestCase): 44 name = "test_EchoWSAddr200403" 45 client_file_name = "EchoWSAddr200403Server_client.py" 46 types_file_name = "EchoWSAddr200403Server_types.py" 47 server_file_name = "EchoWSAddr200403Server_server.py" 48 49 def __init__(self, methodName): 50 ServiceTestCase.__init__(self, methodName) 51 self.wsdl2py_args.append('-ab') 52 53 def getPortKWArgs(self): 54 kw = ServiceTestCase.getPortKWArgs(self) 55 kw['wsAddressURI'] = 'http://schemas.xmlsoap.org/ws/2004/03/addressing' 56 return kw 57 58 def test_local_Echo(self): 59 msg = self.client_module.EchoRequest() 60 rsp = self.client_module.EchoResponse() 61 62 def test_dispatch_Echo(self): 63 loc = self.client_module.EchoWSAddr200403ServerLocator() 64 port = loc.getport(**self.getPortKWArgs()) 65 66 msg = self.client_module.EchoRequest() 67 msg.EchoIn = 'bla bla bla' 68 rsp = port.Echo(msg) 69 self.failUnless(rsp.EchoResult == msg.EchoIn, "Bad Echo") 70 71 def test_dispatch_Echo_MIH_EPR(self): 72 epr = GED('http://schemas.xmlsoap.org/ws/2004/03/addressing','EndpointReference').pyclass() 73 epr.Address = 'urn:whatever' 74 75 loc = self.client_module.EchoWSAddr200403ServerLocator() 76 port = loc.getport(endPointReference=epr, **self.getPortKWArgs()) 77 78 msg = self.client_module.EchoRequest() 79 msg.EchoIn = 1 80 rsp = port.Echo(msg) 81 self.failUnless(rsp.EchoResult == msg.EchoIn, "Bad Echo") 82 83 def test_dispatch_Echo_MIH_EPR2(self): 84 epr = GED('http://schemas.xmlsoap.org/ws/2004/03/addressing','EndpointReference').pyclass() 85 epr.Address = 'urn:whatever' 86 epr.ReferenceProperties = epr.new_ReferenceProperties() 87 88 loc = self.client_module.EchoWSAddr200403ServerLocator() 89 port = loc.getport(endPointReference=epr, **self.getPortKWArgs()) 90 91 msg = self.client_module.EchoRequest() 92 msg.EchoIn = 1 93 rsp = port.Echo(msg) 94 self.failUnless(rsp.EchoResult == msg.EchoIn, "Bad Echo") 95 96 def test_dispatch_Echo_MIH_EPR3_BadHeader(self): 97 """Unqualified element "mystr" in Header 98 """ 99 epr = GED('http://schemas.xmlsoap.org/ws/2004/03/addressing','EndpointReference').pyclass() 100 epr.Address = 'urn:whatever' 101 epr.ReferenceProperties = epr.new_ReferenceProperties() 102 class Xstr(str): 103 typecode = TC.String('mystr') 104 105 epr.ReferenceProperties.Any = [Xstr('whatever'),] 106 107 loc = self.client_module.EchoWSAddr200403ServerLocator() 108 self._setUpDispatch() 109 port = loc.getport(endPointReference=epr, **self.getPortKWArgs()) 110 111 msg = self.client_module.EchoRequest() 112 self.failUnlessRaises(FaultException, port.Echo,msg) 113 114 def test_dispatch_Echo_MIH_EPR3(self): 115 epr = GED('http://schemas.xmlsoap.org/ws/2004/03/addressing','EndpointReference').pyclass() 116 epr.Address = 'urn:whatever' 117 epr.ReferenceProperties = epr.new_ReferenceProperties() 118 class Xstr(str): 119 typecode = TC.String(('urn:josh','mystr')) 120 121 epr.ReferenceProperties.Any = [Xstr('whatever'),] 122 123 loc = self.client_module.EchoWSAddr200403ServerLocator() 124 self._setUpDispatch() 125 port = loc.getport(endPointReference=epr, **self.getPortKWArgs()) 126 127 msg = self.client_module.EchoRequest() 128 epr2 = GTD('http://schemas.xmlsoap.org/ws/2004/03/addressing','EndpointReferenceType')(None).pyclass() 129 epr2.Address = epr.Address 130 epr2.ReferenceProperties = epr.ReferenceProperties 131 132 msg.EchoIn = epr2 133 rsp = port.Echo(msg) 134 self.failUnless(rsp.EchoResult.Address == msg.EchoIn.Address, "Bad Echo") 135 self.failUnless(rsp.EchoResult.ReferenceProperties.Any == msg.EchoIn.ReferenceProperties.Any, "Bad Echo") 136 137 138if __name__ == "__main__" : 139 main() 140 141