import sys
sys.path.append('../')
import logging
import traceback as tb
import suds.metrics as metrics
from tests import *
from suds import WebFault
from suds.client import Client
from suds.sudsobject import Object
from suds.transport.https import HttpAuthenticated
errors = 0
credentials = dict(username='jortel', password='abc123')
setup_logging()
#logging.getLogger('suds.transport').setLevel(logging.DEBUG)
def start(url):
global errors
print '\n________________________________________________________________\n'
print 'Test @ ( %s )\nerrors = %d\n' % (url, errors)
try:
url = 'http://localhost:8081/axis/services/basic-rpc-encoded?wsdl'
start(url)
t = HttpAuthenticated(**credentials)
client = Client(url, transport=t)
print client
#
# create a name object using the wsdl
#
print 'create name'
name = client.factory.create('ns0:Name')
name.first = u'jeff'+unichr(1234)
name.last = 'ortel'
print name
#
# create a phone object using the wsdl
#
print 'create phone'
phoneA = client.factory.create('ns0:Phone')
phoneA.npa = 410
phoneA.nxx = 555
phoneA.number = 5138
phoneB = client.factory.create('ns0:Phone')
phoneB.npa = 919
phoneB.nxx = 555
phoneB.number = 4406
#
# create a dog
#
dog = client.factory.create('ns0:Dog')
dog.name = 'Chance'
dog.trained = True
#
# create a person object using the wsdl
#
person = client.factory.create('ns0:Person')
print '{empty} person=\n%s' % person
person.name = name
person.age = 43
person.phone = [phoneA,phoneB]
person.pets = [dog]
print 'person=\n%s' % person
#
# add the person (using the webservice)
#
print 'addPersion()'
result = client.service.addPerson(person)
print '\nreply(\n%s\n)\n' % str(result)
#
# create a new name object used to update the person
#
newname = client.factory.create('ns0:Name')
newname.first = 'Todd'
newname.last = None
#
# create AnotherPerson using Person
#
ap = client.factory.create('ns0:AnotherPerson')
ap.name = person.name
ap.age = person.age
ap.phone = person.phone
ap.pets = person.pets
print 'AnotherPerson\n%s' % ap
#
# update the person's name (using the webservice)
#
print 'updatePersion()'
result = client.service.updatePerson(ap, newname)
print '\nreply(\n%s\n)\n' % str(result)
result = client.service.updatePerson(ap, None)
print '\nreply(\n%s\n)\n' % str(result)
except WebFault, f:
errors += 1
print f
print f.fault
except Exception, e:
errors += 1
print e
tb.print_exc()
try:
print "echo('this is cool')"
result = client.service.echo('this is cool')
print '\nreply( %s )\n' % str(result)
print 'echo(None)'
result = client.service.echo(None)
print '\nreply( %s )\n' % str(result)
except WebFault, f:
errors += 1
print f
print f.fault
except Exception, e:
errors += 1
print e
tb.print_exc()
try:
print 'hello()'
result = client.service.hello()
print '\nreply( %s )\n' % str(result)
except WebFault, f:
errors += 1
print f
print f.fault
except Exception, e:
errors += 1
print e
tb.print_exc()
try:
print 'testVoid()'
result = client.service.getVoid()
print '\nreply( %s )\n' % str(result)
except WebFault, f:
errors += 1
print f
print f.fault
except Exception, e:
errors += 1
print e
tb.print_exc()
try:
array = client.factory.create('ArrayOf_xsd_string')
print 'ArrayOf_xsd_string=\n%s' % array
array.item = ['my', 'dog', 'likes', 'steak']
result = client.service.printList(array)
print '\nreply( %s )\n' % str(result)
array = Object()
print 'ArrayOf_xsd_string=\n%s' % array
array.item = ['my', 'dog', 'likes', 'steak']
result = client.service.printList(array)
print '\nreply( %s )\n' % str(result)
except WebFault, f:
errors += 1
print f
print f.fault
except Exception, e:
errors += 1
print e
tb.print_exc()
try:
s = 'hello'
for n in range(0, 3):
print 'getList(%s, %d)' % (s, n)
result = client.service.getList(s, n)
print '\nreply( %s )\n' % str(result)
except WebFault, f:
errors += 1
print f
print f.fault
except Exception, e:
errors += 1
print e
tb.print_exc()
try:
print 'testExceptions()'
result = client.service.throwException()
print '\nreply( %s )\n' % tostr(result)
raise Exception('Fault expected and not raised')
except WebFault, f:
print f
print f.fault
except Exception, e:
errors += 1
print e
tb.print_exc()
try:
url = 'http://localhost:8081/axis/services/basic-rpc-encoded?wsdl'
start(url)
client = Client(url, faults=False, **credentials)
print 'testExceptions()'
result = client.service.throwException()
print '\nreply( %s )\n' % str(result)
except WebFault, f:
errors += 1
print f
print f.fault
except Exception, e:
errors += 1
print e
tb.print_exc()
print '\nFinished: errors=%d' % errors