diff options
author | Günther Deschner <gd@samba.org> | 2015-03-06 13:50:45 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2015-03-13 23:58:08 +0100 |
commit | 744f264860c84bd2fa4e65c584356c500998fe81 (patch) | |
tree | 5236121adb8b33ebe1325418a914960c27a20179 /source4 | |
parent | 91d60853e9619df5ec438ae197d33cfabb03807b (diff) | |
download | samba-744f264860c84bd2fa4e65c584356c500998fe81.tar.gz |
s4-torture: add tests for clusapi_OpenGroup and clusapi_CloseGroup.
Guenther
Signed-off-by: Günther Deschner <gd@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source4')
-rw-r--r-- | source4/torture/rpc/clusapi.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/source4/torture/rpc/clusapi.c b/source4/torture/rpc/clusapi.c index b5c6706ecf8..666967adfb8 100644 --- a/source4/torture/rpc/clusapi.c +++ b/source4/torture/rpc/clusapi.c @@ -966,6 +966,80 @@ static bool test_EvictNode(struct torture_context *tctx, return ret; } +static bool test_OpenGroup_int(struct torture_context *tctx, + struct dcerpc_pipe *p, + struct policy_handle *hGroup) +{ + struct dcerpc_binding_handle *b = p->binding_handle; + struct clusapi_OpenGroup r; + const char *lpszGroupName = "Cluster Group"; + WERROR Status; + WERROR rpc_status; + + r.in.lpszGroupName = lpszGroupName; + r.out.rpc_status = &rpc_status; + r.out.Status = &Status; + r.out.hGroup= hGroup; + + torture_assert_ntstatus_ok(tctx, + dcerpc_clusapi_OpenGroup_r(b, tctx, &r), + "OpenGroup failed"); + torture_assert_werr_ok(tctx, + *r.out.Status, + "OpenGroup failed"); + + return true; +} + +static bool test_CloseGroup_int(struct torture_context *tctx, + struct dcerpc_pipe *p, + struct policy_handle *Group) +{ + struct dcerpc_binding_handle *b = p->binding_handle; + struct clusapi_CloseGroup r; + + r.in.Group = Group; + r.out.Group = Group; + + torture_assert_ntstatus_ok(tctx, + dcerpc_clusapi_CloseGroup_r(b, tctx, &r), + "CloseGroup failed"); + torture_assert_werr_ok(tctx, + r.out.result, + "CloseGroup failed"); + torture_assert(tctx, + ndr_policy_handle_empty(Group), + "policy_handle non empty after CloseGroup"); + + return true; +} + +static bool test_OpenGroup(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + struct policy_handle hGroup; + + if (!test_OpenGroup_int(tctx, p, &hGroup)) { + return false; + } + + test_CloseGroup_int(tctx, p, &hGroup); + + return true; +} + +static bool test_CloseGroup(struct torture_context *tctx, + struct dcerpc_pipe *p) +{ + struct policy_handle hGroup; + + if (!test_OpenGroup_int(tctx, p, &hGroup)) { + return false; + } + + return test_CloseGroup_int(tctx, p, &hGroup); +} + struct torture_suite *torture_rpc_clusapi(TALLOC_CTX *mem_ctx) { struct torture_rpc_tcase *tcase; @@ -1039,5 +1113,14 @@ struct torture_suite *torture_rpc_clusapi(TALLOC_CTX *mem_ctx) test_EvictNode); test->dangerous = true; + tcase = torture_suite_add_rpc_iface_tcase(suite, "group", + &ndr_table_clusapi); + + torture_rpc_tcase_add_test(tcase, "OpenGroup", + test_OpenGroup); + torture_rpc_tcase_add_test(tcase, "CloseGroup", + test_CloseGroup); + + return suite; } |