#!/usr/bin/env python import unittest, sys, tests_good, tests_bad, time from ZSI import * try: import cStringIO as StringIO except ImportError: import StringIO class t1TestCase(unittest.TestCase): "Test case wrapper for old ZSI t1 test case" def setUp(self): self.goodTests = [] self.badTests = [] for key,val in tests_good.__dict__.items(): try: if key[0:4] == "test" and int(key[4:]) > 0: self.goodTests.append((key,val)) except: pass for key,val in tests_bad.__dict__.items(): try: if key[0:4] == "test" and int(key[4:]) > 0: self.badTests.append((key,val)) except: pass self.goodTests.sort(lambda a,b: cmp(a[0], b[0])) self.badTests.sort(lambda a,b: cmp(a[0], b[0])) def checkt1(self): for key,val in self.badTests: print "\n", "." * 60, key self.failUnlessRaises(ParseException, ParsedSoap, val) for key,val in self.goodTests: print "\n", "." * 60, key ps = ParsedSoap(val) ps = ParsedSoap(datatest) elts = ps.data_elements self.failUnlessEqual(TC.Integer(None, nillable=True).parse(elts[10], ps), None) self.failUnlessEqual(TC.Ibyte(None, nillable=True).parse(elts[10], ps), None) B = [ TC.Integer('Price'), TC.Integer('p2'), TC.String(unique=1) ] self.failUnlessEqual(TC.Integer(('test-uri', 'Price')).parse(elts[0], ps), 34) self.failUnlessEqual(B[0].parse(elts[0], ps), 34) self.failUnlessEqual(B[1].parse(elts[1], ps), 44) self.failUnlessEqual(B[2].parse(elts[2], ps), u"This is the name") self.failUnlessEqual(TC.HexBinaryString().parse(elts[9], ps), "? A") self.failUnlessEqual(TC.String('Name').parse(elts[2], ps), u"This is the name") self.failUnlessEqual(TC.Any('Price').parse(elts[0], ps), 34) self.failUnlessEqual(TC.Any('n3').parse(elts[4], ps), u"The value of n3") TC.XML('n2').parse(elts[3], ps) nodelist = TC.XML('a2').parse(elts[7], ps) self.failUnlessEqual(TC.String('n3').parse(elts[4], ps), u"The value of n3") self.failUnlessEqual(TC.Base64String('n64').parse(elts[5], ps), u"hello") self.failUnlessEqual(TC.String('n64').parse(elts[5], ps), u"a GVsbG8=") enum = TC.Enumeration(['Red', 'Blue', 'Green'], 'color') self.failUnlessEqual(enum.parse(elts[6], ps), u'Red') self.failUnlessEqual(TC.IEnumeration([44,46,47]).parse(elts[1],ps), 44) S = TC.Struct(None, [TC.String('t'), TC.Integer('i')], inorder=0) pyobj = S.parse(elts[8], ps) S2 = TC.Struct(myclass, [TC.IunsignedShort('i'), TC.String('q:z', minOccurs=0), TC.String('t')], 'a2', typed=0) pyobj2 = S2.parse(elts[8], ps) self.failUnlessEqual(TC.URI().parse(elts[12], ps), u'"http://foo.com/~salz"') self.failUnlessEqual(pyobj["i"], pyobj2.i) self.failUnlessEqual(pyobj["t"], pyobj2.t) tcary = TC.Array('SOAP-ENC:int', TC.Integer()) nsa = tcary.parse(elts[14],ps) self.failUnlessEqual(nsa, [None, None, None, 12, 13, 14, 15, 16, 17]) tcary.sparse = 1 sa = tcary.parse(elts[14],ps) self.failUnlessEqual(sa, [(3, 12), (4, 13), (5, 14), (6, 15), (7, 16), (8, 17)]) """ mychoice = TC.Choice([ TC.String('n3'), TC.URI('uri'), TC.Integer('Price'), ]) b = mychoice.parse(elts[0], ps) self.failUnlessEqual(b[0], 'Price') self.failUnlessEqual(b[1], 34) b = mychoice.parse(elts[12], ps) self.failUnlessEqual(b[0], 'uri') self.failUnlessEqual(b[1], u'"http://foo.com/~salz"') b = mychoice.parse(elts[4], ps) self.failUnlessEqual(b[0], 'n3') self.failUnlessEqual(b[1], u'The value of n3') """ self.failUnlessEqual(TC.Array(('test-uri','x'), TC.Any()).parse(elts[15], ps), [u'The value of n3', u'rich salz', 13]) self.failUnlessEqual(TC.Struct(None,(TC.FPfloat('a'), TC.Decimal('b'), TC.FPdouble('c'))).parse(elts[13],ps), {'a': 6.9000000000000004, 'c': TC._make_inf(), 'b': 0.0}) nsdict = ps.GetElementNSdict(ps.header) nsdict[''] = "http://www.zolera.com/ns/" nsdict['q'] = 'q-namespace-uri' sio = StringIO.StringIO() z = SoapWriter(sio, header=ps.header_elements, nsdict=nsdict) z.serialize(pyobj2, S2) S2.inline = 1 S2.typed = 0 tc = TC.gDateTime('dt') z.serialize(pyobj2, S2) z.serialize(pyobj, S) #z.serialize(('n3', '******this is the value of a union'), mychoice) z.serialize('uri:some/place/special', TC.XML('foo', nsdict=nsdict)) tcary.sparse = False z.serialize(nsa, tcary, childnames='tt') tcary.sparse = True z.serialize(sa, tcary, name='MYSPARSEARRAY') z.serialize(time.time(), tc) z.serialize(time.time(), TC.gTime('monthday')) z.serialize('$$$$$foo<', TC.String(textprotect=0)) self.failUnlessEqual(TC.Any().parse(elts[11], ps), {'urt-i': 12, 'urt-t': u'rich salz'}) try: a = bar() except Exception, e: f = FaultFromException(e, 0, sys.exc_info()[2]) print f.AsSOAP() print print print FaultFromNotUnderstood('myuri', 'dalocalname', actor='cher').AsSOAP() print print print FaultFromActor('actor:i:dont:understand').AsSOAP() def makeTestSuite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(t1TestCase, "check")) return suite ## exceptions def foo(): '''dummy''' return 3 / 0 def bar(): return foo() + 2 class zParseException: pass class myclass: def __init__(self, name=None): self.name = name or id(self) self.z = 'z value' def __str__(self): return 'myclass-%s-(%d,"%s")' % (self.name, self.i, self.t) + \ str(self.z) datatest = ''' you must grok sometag 34 44 This is the name Hello]]> a GVsbG8= Red 12rich salz 3F2041 12 rich salz "http://foo.com/%7Esalz" 6.9 -0 INF 12 13 14 15 16 17 //sarray The value of n3 content ond ''' def main(): unittest.main(defaultTest="makeTestSuite") if __name__ == "__main__" : main()