summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2019-12-20 13:43:25 +0100
committerJeremy Allison <jra@samba.org>2020-01-08 23:51:30 +0000
commit210a8f35b66326263e8466a5b58dffa6e0405c56 (patch)
tree1319cce13d4f9c4fab62de7fd682fbc17a758f4b /source4
parent0a76a7c3c258aa84fab96d03347f8e6e8d067fa8 (diff)
downloadsamba-210a8f35b66326263e8466a5b58dffa6e0405c56.tar.gz
s4-torture: add test for spoolss_EnumPerMachineConnections
Guenther Signed-off-by: Guenther Deschner <gd@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source4')
-rw-r--r--source4/torture/rpc/spoolss.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index ec054c81d30..cb5eb9f4033 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -6190,6 +6190,45 @@ static bool test_DeletePerMachineConnection(struct torture_context *tctx,
return true;
}
+static bool test_EnumPerMachineConnections(struct torture_context *tctx,
+ struct dcerpc_binding_handle *b,
+ const char *servername)
+{
+ struct spoolss_EnumPerMachineConnections r;
+ DATA_BLOB blob = data_blob_null;
+ DATA_BLOB info = data_blob_null;
+ uint32_t needed;
+ uint32_t count;
+
+ r.in.server = servername;
+ r.in.buffer = &blob;
+ r.in.offered = 0;
+
+ r.out.info = &info;
+ r.out.needed = &needed;
+ r.out.count = &count;
+
+ torture_comment(tctx, "Testing EnumPerMachineConnections(%s)\n",
+ servername);
+
+ torture_assert_ntstatus_ok(tctx,
+ dcerpc_spoolss_EnumPerMachineConnections_r(b, tctx, &r),
+ "spoolss_EnumPerMachineConnections failed");
+ if (W_ERROR_EQUAL(r.out.result, WERR_INSUFFICIENT_BUFFER)) {
+ blob = data_blob_talloc_zero(tctx, needed);
+ r.in.buffer = &blob;
+ r.in.offered = needed;
+
+ torture_assert_ntstatus_ok(tctx,
+ dcerpc_spoolss_EnumPerMachineConnections_r(b, tctx, &r),
+ "spoolss_EnumPerMachineConnections failed");
+ }
+ torture_assert_werr_ok(tctx, r.out.result,
+ "spoolss_EnumPerMachineConnections failed");
+
+ return true;
+}
+
static bool test_addpermachineconnection(struct torture_context *tctx,
void *private_data)
{
@@ -6270,11 +6309,19 @@ static bool test_addpermachineconnection(struct torture_context *tctx,
tests[i].expected_add_result),
"add per machine connection failed");
torture_assert(tctx,
+ test_EnumPerMachineConnections(tctx, b,
+ tests[i].servername),
+ "enum per machine connections failed");
+ torture_assert(tctx,
test_DeletePerMachineConnection(tctx, b,
tests[i].servername,
tests[i].printername,
tests[i].expected_del_result),
"delete per machine connection failed");
+ torture_assert(tctx,
+ test_EnumPerMachineConnections(tctx, b,
+ tests[i].servername),
+ "enum per machine connections failed");
}
return true;