svn commit: samba r24922 - in branches/4.0-spoolsstest: . source/rpc_server/spoolss source/torture/rpc

jelmer at samba.org jelmer at samba.org
Mon Sep 3 12:37:40 GMT 2007


Author: jelmer
Date: 2007-09-03 12:37:38 +0000 (Mon, 03 Sep 2007)
New Revision: 24922

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24922

Log:
Add generic tests for ReplyOpenPrinter() and ReplyClosePrinter().
Modified:
   branches/4.0-spoolsstest/
   branches/4.0-spoolsstest/source/rpc_server/spoolss/dcesrv_spoolss.c
   branches/4.0-spoolsstest/source/torture/rpc/spoolss.c


Changeset:

Property changes on: branches/4.0-spoolsstest
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/4.0-spoolsstest/source/rpc_server/spoolss/dcesrv_spoolss.c
===================================================================
--- branches/4.0-spoolsstest/source/rpc_server/spoolss/dcesrv_spoolss.c	2007-09-03 12:36:47 UTC (rev 24921)
+++ branches/4.0-spoolsstest/source/rpc_server/spoolss/dcesrv_spoolss.c	2007-09-03 12:37:38 UTC (rev 24922)
@@ -1070,7 +1070,13 @@
 static WERROR dcesrv_spoolss_ReplyClosePrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
 		       struct spoolss_ReplyClosePrinter *r)
 {
-	DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
+	struct dcesrv_handle *handle;
+	
+	DCESRV_PULL_HANDLE_WERR(handle, r->in.handle, SPOOLSS_NOTIFY);
+
+	talloc_free(handle);
+
+	return WERR_OK;
 }
 
 

Modified: branches/4.0-spoolsstest/source/torture/rpc/spoolss.c
===================================================================
--- branches/4.0-spoolsstest/source/torture/rpc/spoolss.c	2007-09-03 12:36:47 UTC (rev 24921)
+++ branches/4.0-spoolsstest/source/torture/rpc/spoolss.c	2007-09-03 12:37:38 UTC (rev 24922)
@@ -2072,6 +2072,41 @@
 	return ret;
 }
 
+/** Test that makes sure that calling ReplyOpenPrinter()
+ * on Samba 4 will cause an irpc broadcast call.
+ */
+static bool test_ReplyOpenPrinter(struct torture_context *tctx, 
+								  struct dcerpc_pipe *pipe)
+{
+	struct spoolss_ReplyOpenPrinter r;
+	struct spoolss_ReplyClosePrinter s;
+	struct policy_handle h;
+
+	r.in.server_name = "earth";
+	r.in.printer_local = 2;
+	r.in.type = REG_DWORD;
+	r.in.unknown1 = 0;
+	r.in.unknown2 = 0;
+	r.out.handle = &h;
+
+	torture_assert_ntstatus_ok(tctx, 
+			dcerpc_spoolss_ReplyOpenPrinter(pipe, tctx, &r),
+			"spoolss_ReplyOpenPrinter call failed");
+
+	torture_assert_werr_ok(tctx, r.out.result, "error return code");
+
+	s.in.handle = &h;
+	s.out.handle = &h;
+
+	torture_assert_ntstatus_ok(tctx,
+			dcerpc_spoolss_ReplyClosePrinter(pipe, tctx, &s),
+			"spoolss_ReplyClosePrinter call failed");
+
+	torture_assert_werr_ok(tctx, r.out.result, "error return code");
+
+	return true;
+}
+
 BOOL torture_rpc_spoolss(struct torture_context *torture)
 {
 	NTSTATUS status;
@@ -2133,6 +2168,8 @@
 
 	ret &= test_EnumPrinterDrivers_old(p, mem_ctx);
 
+	ret &= test_ReplyOpenPrinter(torture, p);
+
 	talloc_free(mem_ctx);
 
 	return ret;



More information about the samba-cvs mailing list