s4-torture: add more tests for clusapi_OpenResource().
authorGünther Deschner <gd@samba.org>
Wed, 1 Jul 2015 14:58:06 +0000 (16:58 +0200)
committerJosé A. Rivera <jarrpa@samba.org>
Tue, 4 Aug 2015 17:11:17 +0000 (19:11 +0200)
Guenther

Signed-off-by: Günther Deschner <gd@samba.org>
Reviewed-by: José A. Rivera <jarrpa@samba.org>
source4/torture/rpc/clusapi.c

index f6f3ff5b9b6dc4f971f8104b1c39277ae82d9003..b3a7369b924d30d8b3abf801dec4b18c09ca38c7 100644 (file)
@@ -387,10 +387,12 @@ static bool test_SetQuorumResource(struct torture_context *tctx,
        return true;
 }
 
-bool test_OpenResource_int(struct torture_context *tctx,
-                          struct dcerpc_pipe *p,
-                          const char *lpszResourceName,
-                          struct policy_handle *hResource)
+static bool test_OpenResource_int_exp(struct torture_context *tctx,
+                                     struct dcerpc_pipe *p,
+                                     const char *lpszResourceName,
+                                     struct policy_handle *hResource,
+                                     WERROR expected_Status,
+                                     WERROR expected_rpc_status)
 {
        struct dcerpc_binding_handle *b = p->binding_handle;
        struct clusapi_OpenResource r;
@@ -405,13 +407,27 @@ bool test_OpenResource_int(struct torture_context *tctx,
        torture_assert_ntstatus_ok(tctx,
                dcerpc_clusapi_OpenResource_r(b, tctx, &r),
                "OpenResource failed");
-       torture_assert_werr_ok(tctx,
-               *r.out.Status,
+       torture_assert_werr_equal(tctx,
+               *r.out.Status, expected_Status,
+               "OpenResource failed");
+       torture_assert_werr_equal(tctx,
+               *r.out.rpc_status, expected_rpc_status,
                "OpenResource failed");
 
        return true;
 }
 
+bool test_OpenResource_int(struct torture_context *tctx,
+                          struct dcerpc_pipe *p,
+                          const char *lpszResourceName,
+                          struct policy_handle *hResource)
+{
+       return test_OpenResource_int_exp(tctx, p,
+                                        lpszResourceName,
+                                        hResource,
+                                        WERR_OK, WERR_OK);
+}
+
 static bool test_OpenResourceEx_int(struct torture_context *tctx,
                                    struct dcerpc_pipe *p,
                                    const char *lpszResourceName,
@@ -476,6 +492,22 @@ static bool test_OpenResource(struct torture_context *tctx,
 
        test_CloseResource_int(tctx, t->p, &hResource);
 
+       if (!test_OpenResource_int_exp(tctx, t->p, "", &hResource, WERR_RESOURCE_NOT_FOUND, WERR_OK)) {
+               return false;
+       }
+
+       torture_assert(tctx,
+               ndr_policy_handle_empty(&hResource),
+               "expected empty policy handle");
+
+       if (!test_OpenResource_int_exp(tctx, t->p, "jfUF38fjSNcfn", &hResource, WERR_RESOURCE_NOT_FOUND, WERR_OK)) {
+               return false;
+       }
+
+       torture_assert(tctx,
+               ndr_policy_handle_empty(&hResource),
+               "expected empty policy handle");
+
        return true;
 }