initshutdown.idl: get rid of initshutdown_String and use lsa_StringLarge
[jelmer/samba4-debian.git] / source / torture / rpc / initshutdown.c
1 /* 
2    Unix SMB/CIFS implementation.
3    test suite for initshutdown operations
4
5    Copyright (C) Tim Potter 2003
6    Copyright (C) Jelmer Vernooij 2004-2005
7    
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12    
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17    
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 */
21
22 #include "includes.h"
23 #include "torture/torture.h"
24 #include "librpc/gen_ndr/ndr_initshutdown_c.h"
25 #include "torture/rpc/rpc.h"
26
27 static void init_lsa_StringLarge(struct lsa_StringLarge *name, const char *s)
28 {
29         name->string = s;
30 }
31
32
33 static bool test_Abort(struct torture_context *tctx, 
34                                            struct dcerpc_pipe *p)
35 {
36         struct initshutdown_Abort r;
37         NTSTATUS status;
38         uint16_t server = 0x0;
39
40         r.in.server = &server;
41         
42         status = dcerpc_initshutdown_Abort(p, tctx, &r);
43
44         torture_assert_ntstatus_ok(tctx, status, 
45                                                            "initshutdown_Abort failed");
46
47         torture_assert_werr_ok(tctx, r.out.result, "initshutdown_Abort failed");
48
49         return true;
50 }
51
52 static bool test_Init(struct torture_context *tctx, 
53                       struct dcerpc_pipe *p)
54 {
55         struct initshutdown_Init r;
56         NTSTATUS status;
57         uint16_t hostname = 0x0;
58
59         r.in.hostname = &hostname;
60         r.in.message = talloc(tctx, struct lsa_StringLarge);
61         init_lsa_StringLarge(r.in.message, "spottyfood");
62         r.in.force_apps = 1;
63         r.in.timeout = 30;
64         r.in.reboot = 1;
65
66         status = dcerpc_initshutdown_Init(p, tctx, &r);
67
68         torture_assert_ntstatus_ok(tctx, status, "initshutdown_Init failed");
69         torture_assert_werr_ok(tctx, r.out.result, "initshutdown_Init failed");
70
71         return test_Abort(tctx, p);
72 }
73
74 static bool test_InitEx(struct torture_context *tctx, 
75                                                 struct dcerpc_pipe *p)
76 {
77         struct initshutdown_InitEx r;
78         NTSTATUS status;
79         uint16_t hostname = 0x0;
80
81         r.in.hostname = &hostname;
82         r.in.message = talloc(tctx, struct lsa_StringLarge);
83         init_lsa_StringLarge(r.in.message, "spottyfood");
84         r.in.force_apps = 1;
85         r.in.timeout = 30;
86         r.in.reboot = 1;
87         r.in.reason = 0;
88
89         status = dcerpc_initshutdown_InitEx(p, tctx, &r);
90
91         torture_assert_ntstatus_ok(tctx, status, "initshutdown_InitEx failed");
92
93         torture_assert_werr_ok(tctx, r.out.result, "initshutdown_InitEx failed");
94
95         return test_Abort(tctx, p);
96 }
97
98
99 struct torture_suite *torture_rpc_initshutdown(TALLOC_CTX *mem_ctx)
100 {
101         struct torture_suite *suite = torture_suite_create(mem_ctx, "INITSHUTDOWN");
102         struct torture_rpc_tcase *tcase;
103         struct torture_test *test;
104
105         tcase = torture_suite_add_rpc_iface_tcase(suite, "initshutdown", 
106                                                   &ndr_table_initshutdown);
107
108         test = torture_rpc_tcase_add_test(tcase, "Init", test_Init);
109         test->dangerous = true;
110         test = torture_rpc_tcase_add_test(tcase, "InitEx", test_InitEx);
111         test->dangerous = true;
112
113         return suite;
114 }