From b3642b0b1b845e363180fbeba04705e3c28046c8 Mon Sep 17 00:00:00 2001
From: Kamen Mazdrashki <kamen.mazdrashki@postpath.com>
Date: Fri, 28 Aug 2009 15:42:48 +0300
Subject: [PATCH] tort: Implement 'setup' and 'teardown' for DRSUAPI test cases.

---
 source4/torture/rpc/drsuapi.c |   43 +++++++++++++++++++++++++++++++++++++++++
 source4/torture/rpc/drsuapi.h |    1 +
 2 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/source4/torture/rpc/drsuapi.c b/source4/torture/rpc/drsuapi.c
index da6ce2b..ac16dc6 100644
--- a/source4/torture/rpc/drsuapi.c
+++ b/source4/torture/rpc/drsuapi.c
@@ -772,7 +772,50 @@ bool torture_rpc_drsuapi(struct torture_context *torture)
 	return ret;
 }
 
+bool torture_rpc_drsuapi_tcase_setup(struct torture_context *tctx, void **data)
+{
+        NTSTATUS status;
+	struct DsPrivate *priv;
+	struct cli_credentials *machine_credentials;
+
+	*data = priv = talloc_zero(tctx, struct DsPrivate);
+	torture_assert(tctx, priv, "Not enough memory");
+
+	torture_comment(tctx, "Create DRSUAPI pipe");
+	status = torture_rpc_connection(tctx,
+					&priv->pipe,
+					&ndr_table_drsuapi);
+	torture_assert(tctx, NT_STATUS_IS_OK(status), "Unable to connect to DRSUAPI pipe");
+
+	torture_comment(tctx, "Connected to DRSUAPI pipe\n");
+	priv->join = torture_join_domain(tctx, TEST_MACHINE_NAME, ACB_SVRTRUST,
+					 &machine_credentials);
+	torture_assert(tctx, priv->join, "Failed to join as BDC");
+
+	if (!test_DsBind(priv->pipe, tctx, priv)) {
+		/* clean up */
+		torture_rpc_drsuapi_tcase_teardown(tctx, priv);
+		torture_fail(tctx, "Failed execute test_DsBind()");
+	}
+
+	return true;
+}
+
+bool torture_rpc_drsuapi_tcase_teardown(struct torture_context *tctx, void *data)
+{
+	struct DsPrivate *priv = (struct DsPrivate *)data;
+
+	if (priv->join) {
+		torture_leave_domain(tctx, priv->join);
+	}
+
+	talloc_free(priv);
+
+	return true;
+}
+
 
+/*
 bool torture_rpc_drsuapi_cracknames(struct torture_context *torture)
 {
         NTSTATUS status;
diff --git a/source4/torture/rpc/drsuapi.h b/source4/torture/rpc/drsuapi.h
index 98438cc..e9a7dd5 100644
--- a/source4/torture/rpc/drsuapi.h
+++ b/source4/torture/rpc/drsuapi.h
@@ -24,6 +24,7 @@
 #include "librpc/gen_ndr/drsuapi.h"
 
 struct DsPrivate {
+	struct dcerpc_pipe *pipe;
 	struct policy_handle bind_handle;
 	struct GUID bind_guid;
 	const char *domain_obj_dn;
-- 
1.6.0.4
