[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Mon Mar 15 11:36:39 MDT 2010


The branch, master has been updated
       via  83b9e12... s4-smbtorture: add simple printer rename test to RPC-SPOOLSS-PRINTER.
      from  6f36e9d... testprogs: add EnumPrinterData test to win32 spoolss test.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 83b9e12513984af8b372f5558043ed0f65d832fd
Author: Günther Deschner <gd at samba.org>
Date:   Mon Mar 15 17:08:23 2010 +0100

    s4-smbtorture: add simple printer rename test to RPC-SPOOLSS-PRINTER.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source4/torture/rpc/spoolss.c |   96 ++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 95 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index ee937db..728ecd1 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -4043,7 +4043,7 @@ static bool test_OpenPrinter_badname(struct torture_context *tctx,
 	op.in.access_mask	= 0;
 	op.out.handle		= &handle;
 
-	torture_comment(tctx, "\nTesting OpenPrinter(%s) with bad name\n", op.in.printername);
+	torture_comment(tctx, "Testing OpenPrinter(%s) with bad name\n", op.in.printername);
 
 	status = dcerpc_spoolss_OpenPrinter(p, tctx, &op);
 	torture_assert_ntstatus_ok(tctx, status, "OpenPrinter failed");
@@ -4165,6 +4165,96 @@ static bool call_OpenPrinterEx(struct torture_context *tctx,
 	return true;
 }
 
+static bool test_printer_rename(struct torture_context *tctx,
+				struct dcerpc_pipe *p,
+				struct policy_handle *handle,
+				const char *name)
+{
+	bool ret = true;
+	union spoolss_PrinterInfo info;
+	union spoolss_SetPrinterInfo sinfo;
+	struct spoolss_SetPrinterInfoCtr info_ctr;
+	struct spoolss_DevmodeContainer devmode_ctr;
+	struct sec_desc_buf secdesc_ctr;
+	const char *printer_name;
+	const char *printer_name_orig;
+	const char *printer_name_new = "SAMBA smbtorture Test Printer (Copy 2)";
+	struct policy_handle new_handle;
+	const char *q;
+
+	ZERO_STRUCT(devmode_ctr);
+	ZERO_STRUCT(secdesc_ctr);
+
+	torture_comment(tctx, "Testing Printer rename operations\n");
+
+	torture_assert(tctx,
+		test_GetPrinter_level(tctx, p, handle, 2, &info),
+		"failed to call GetPrinter level 2");
+
+	printer_name_orig = talloc_strdup(tctx, info.info2.printername);
+
+	q = strrchr(info.info2.printername, '\\');
+	if (q) {
+		torture_warning(tctx,
+			"server returns printername %s incl. servername although we did not set servername", info.info2.printername);
+	}
+
+	torture_assert(tctx,
+		PrinterInfo_to_SetPrinterInfo(tctx, &info, 2, &sinfo), "");
+
+	sinfo.info2->printername = printer_name_new;
+
+	info_ctr.level = 2;
+	info_ctr.info = sinfo;
+
+	torture_assert(tctx,
+		test_SetPrinter(tctx, p, handle, &info_ctr, &devmode_ctr, &secdesc_ctr, 0),
+		"failed to call SetPrinter level 2");
+
+	torture_assert(tctx,
+		test_GetPrinter_level(tctx, p, handle, 2, &info),
+		"failed to call GetPrinter level 2");
+
+	printer_name = talloc_strdup(tctx, info.info2.printername);
+
+	q = strrchr(info.info2.printername, '\\');
+	if (q) {
+		torture_warning(tctx,
+			"server returns printername %s incl. servername although we did not set servername", info.info2.printername);
+		q++;
+		printer_name = q;
+	}
+
+	torture_assert_str_equal(tctx, printer_name, printer_name_new,
+		"new printer name was not set");
+
+	torture_assert(tctx,
+		test_OpenPrinter_badname(tctx, p, printer_name_orig),
+		"still can open printer with oldname");
+
+	torture_assert(tctx,
+		call_OpenPrinterEx(tctx, p, printer_name_new, NULL, &new_handle),
+		"failed to open printer with new name");
+
+	torture_assert(tctx,
+		test_GetPrinter_level(tctx, p, &new_handle, 2, &info),
+		"failed to call GetPrinter level 2");
+
+	/* FIXME: we openend with servername! */
+	printer_name = talloc_asprintf(tctx, "\\\\%s\\%s",
+		dcerpc_server_name(p), printer_name_new);
+
+	torture_assert_str_equal(tctx, info.info2.printername, printer_name,
+		"new printer name was not set");
+
+	torture_assert(tctx,
+		test_ClosePrinter(tctx, p, &new_handle),
+		"failed to close printer");
+
+	return ret;
+}
+
+
 static bool test_OpenPrinterEx(struct torture_context *tctx,
 			       struct dcerpc_pipe *p,
 			       const char *name,
@@ -5016,6 +5106,10 @@ static bool test_one_printer(struct torture_context *tctx,
 		ret = false;
 	}
 
+	if (!test_printer_rename(tctx, p, handle, name)) {
+		ret = false;
+	}
+
 	return ret;
 }
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list