Author: tpot Date: 2004-10-25 12:54:52 +0000 (Mon, 25 Oct 2004) New Revision: 3216
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source/scripting/swig/torture&rev=3216&nolog=1 Log: Add tests for OpenPrinterEx and ClosePrinter. Modified: branches/SAMBA_4_0/source/scripting/swig/torture/spoolss.py Changeset: Modified: branches/SAMBA_4_0/source/scripting/swig/torture/spoolss.py =================================================================== --- branches/SAMBA_4_0/source/scripting/swig/torture/spoolss.py 2004-10-25 12:44:53 UTC (rev 3215) +++ branches/SAMBA_4_0/source/scripting/swig/torture/spoolss.py 2004-10-25 12:54:52 UTC (rev 3216) @@ -1,24 +1,79 @@ +import string import dcerpc +def test_OpenPrinterEx(pipe, printer): + + print 'testing spoolss_OpenPrinterEx(%s)' % printer + + r = {} + r['printername'] = '\\\\win2k3dc\\%s' % printer + r['datatype'] = None + r['devmode_ctr'] = {} + r['devmode_ctr']['size'] = 0 + r['devmode_ctr']['devmode'] = None + r['access_mask'] = 0x02000000 + r['level'] = 1 + r['userlevel'] = {} + r['userlevel']['level1'] = {} + r['userlevel']['level1']['size'] = 0 + r['userlevel']['level1']['client'] = None + r['userlevel']['level1']['user'] = None + r['userlevel']['level1']['build'] = 1381 + r['userlevel']['level1']['major'] = 2 + r['userlevel']['level1']['minor'] = 0 + r['userlevel']['level1']['processor'] = 0 + + result = dcerpc.spoolss_OpenPrinterEx(pipe, r) + + return result['handle'] + + +def test_ClosePrinter(pipe, handle): + + r = {} + r['handle'] = handle + + dcerpc.spoolss_ClosePrinter(pipe, r) + + def test_EnumPrinters(pipe): + print 'testing spoolss_EnumPrinters' + + printer_names = None + r = {} r['flags'] = 0x02 r['server'] = None - r['level'] = 1 - r['buffer'] = None - r['buf_size'] = 0 - result = dcerpc.spoolss_EnumPrinters(pipe, r) + for level in [1, 2, 4, 5]: - if result['result'] == dcerpc.WERR_INSUFFICIENT_BUFFER: - r['buffer'] = result['buf_size'] * '\x00' - r['buf_size'] = result['buf_size'] + r['level'] = level + r['buf_size'] = 0 + r['buffer'] = None result = dcerpc.spoolss_EnumPrinters(pipe, r) - print dcerpc.unmarshall_spoolss_PrinterInfo_array(result['buffer'], r['level'], result['count']) + if result['result'] == dcerpc.WERR_INSUFFICIENT_BUFFER: + r['buffer'] = result['buf_size'] * '\x00' + r['buf_size'] = result['buf_size'] + result = dcerpc.spoolss_EnumPrinters(pipe, r) + + printers = dcerpc.unmarshall_spoolss_PrinterInfo_array( + result['buffer'], r['level'], result['count']) + + if printer_names is None: + printer_names = map( + lambda x: string.split(x['info1']['name'], ',')[0], printers) + + for printer in printer_names: + + handle = test_OpenPrinterEx(pipe, printer) + + test_ClosePrinter(pipe, handle) + + def runtests(binding, domain, username, password): print 'Testing SPOOLSS pipe'