diff options
-rw-r--r-- | source4/librpc/idl/spoolss.idl | 17 | ||||
-rw-r--r-- | source4/scripting/swig/torture/spoolss.py | 39 |
2 files changed, 45 insertions, 11 deletions
diff --git a/source4/librpc/idl/spoolss.idl b/source4/librpc/idl/spoolss.idl index 204a7ec96c..486fcc6f94 100644 --- a/source4/librpc/idl/spoolss.idl +++ b/source4/librpc/idl/spoolss.idl @@ -483,13 +483,28 @@ [in,out,ref] uint32 *buf_size ); + typedef struct { + uint32 flags; + unistr *formname; + uint32 width; + uint32 length; + uint32 left; + uint32 top; + uint32 right; + uint32 bottom; + } spoolss_SetFormInfo1; + + typedef union { + [case(1)] spoolss_AddFormInfo1 *info1; + } spoolss_SetFormInfo; + /******************/ /* Function: 0x21 */ WERROR spoolss_SetForm( [in,ref] policy_handle *handle, [in] unistr formname, [in] uint32 level, - [in,switch_is(level)] spoolss_AddFormInfo info + [in,switch_is(level)] spoolss_SetFormInfo info ); typedef [nodiscriminant,public] union { diff --git a/source4/scripting/swig/torture/spoolss.py b/source4/scripting/swig/torture/spoolss.py index 78c74569f5..4c65669d8f 100644 --- a/source4/scripting/swig/torture/spoolss.py +++ b/source4/scripting/swig/torture/spoolss.py @@ -129,6 +129,26 @@ def test_GetForm(pipe, handle, formname): return result['info']['info1'] +def test_SetForm(pipe, handle, form): + + print 'testing spoolss_SetForm' + + r = {} + r['handle'] = handle + r['level'] = 1 + r['formname'] = form['info1']['formname'] + r['info'] = form + + dcerpc.spoolss_SetForm(pipe, r) + + newform = test_GetForm(pipe, handle, r['formname']) + + if form['info1'] != newform: + print 'SetForm: mismatch: %s != %s' % \ + (r['info']['info1'], f) + sys.exit(1) + + def test_AddForm(pipe, handle): print 'testing spoolss_AddForm' @@ -141,13 +161,13 @@ def test_AddForm(pipe, handle): r['info'] = {} r['info']['info1'] = {} r['info']['info1']['formname'] = formname - r['info']['info1']['flags'] = 0 - r['info']['info1']['width'] = 1 - r['info']['info1']['length'] = 2 - r['info']['info1']['left'] = 3 - r['info']['info1']['top'] = 4 - r['info']['info1']['right'] = 5 - r['info']['info1']['bottom'] = 6 + r['info']['info1']['flags'] = 0x0002 + r['info']['info1']['width'] = 100 + r['info']['info1']['length'] = 100 + r['info']['info1']['left'] = 0 + r['info']['info1']['top'] = 1000 + r['info']['info1']['right'] = 2000 + r['info']['info1']['bottom'] = 3000 try: result = dcerpc.spoolss_AddForm(pipe, r) @@ -159,14 +179,13 @@ def test_AddForm(pipe, handle): f = test_GetForm(pipe, handle, formname) if r['info']['info1'] != f: - print 'Form type mismatch: %s != %s' % \ + print 'AddForm: mismatch: %s != %s' % \ (r['info']['info1'], f) sys.exit(1) r['formname'] = formname - r['info']['info1']['unknown'] = 1 - dcerpc.spoolss_SetForm(pipe, r) + test_SetForm(pipe, handle, r['info']) test_DeleteForm(pipe, handle, formname) |