2 Unix SMB/CIFS implementation.
4 test suite for browser rpc operations
6 Copyright (C) Stefan Metzmacher 2008
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.
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.
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/>.
23 #include "librpc/gen_ndr/ndr_browser_c.h"
24 #include "torture/rpc/torture_rpc.h"
26 bool test_BrowserrQueryOtherDomains(struct torture_context
*tctx
,
27 struct dcerpc_pipe
*p
)
29 struct dcerpc_binding_handle
*b
= p
->binding_handle
;
30 struct BrowserrQueryOtherDomains r
;
31 struct BrowserrSrvInfo info
;
32 struct BrowserrSrvInfo100Ctr ctr100
;
33 struct srvsvc_NetSrvInfo100 entries100
[1];
34 struct BrowserrSrvInfo101Ctr ctr101
;
35 struct srvsvc_NetSrvInfo101 entries101
[1];
36 uint32_t total_entries
;
39 torture_comment(tctx
, "dcerpc_BrowserrQueryOtherDomains\n");
44 ZERO_STRUCT(entries100
);
46 ZERO_STRUCT(entries101
);
49 r
.in
.server_unc
= talloc_asprintf(tctx
,"\\\\%s",dcerpc_server_name(p
));
52 r
.out
.total_entries
= &total_entries
;
55 info
.info
.info100
= &ctr100
;
57 status
= dcerpc_BrowserrQueryOtherDomains_r(b
, tctx
, &r
);
58 torture_assert_ntstatus_ok(tctx
, status
, "BrowserrQueryOtherDomains failed");
59 torture_assert_werr_ok(tctx
, r
.out
.result
, "BrowserrQueryOtherDomains failed");
60 torture_assert_int_equal(tctx
, *r
.out
.total_entries
, 0, "BrowserrQueryOtherDomains");
62 info
.info
.info100
= &ctr100
;
63 ctr100
.entries_read
= ARRAY_SIZE(entries100
);
64 ctr100
.entries
= entries100
;
66 status
= dcerpc_BrowserrQueryOtherDomains_r(b
, tctx
, &r
);
67 torture_assert_ntstatus_ok(tctx
, status
, "BrowserrQueryOtherDomains failed");
68 torture_assert_werr_ok(tctx
, r
.out
.result
, "BrowserrQueryOtherDomains failed");
69 torture_assert_int_equal(tctx
, *r
.out
.total_entries
, 0, "BrowserrQueryOtherDomains");
71 info
.info
.info100
= NULL
;
72 status
= dcerpc_BrowserrQueryOtherDomains_r(b
, tctx
, &r
);
73 torture_assert_ntstatus_ok(tctx
, status
, "BrowserrQueryOtherDomains failed");
74 torture_assert_werr_equal(tctx
, WERR_INVALID_PARAMETER
, r
.out
.result
,
75 "BrowserrQueryOtherDomains failed");
78 info
.info
.info101
= &ctr101
;
80 status
= dcerpc_BrowserrQueryOtherDomains_r(b
, tctx
, &r
);
81 torture_assert_ntstatus_ok(tctx
, status
, "BrowserrQueryOtherDomains failed");
82 torture_assert_werr_equal(tctx
, WERR_INVALID_LEVEL
, r
.out
.result
,
83 "BrowserrQueryOtherDomains");
85 info
.info
.info101
= &ctr101
;
86 ctr101
.entries_read
= ARRAY_SIZE(entries101
);
87 ctr101
.entries
= entries101
;
89 status
= dcerpc_BrowserrQueryOtherDomains_r(b
, tctx
, &r
);
90 torture_assert_ntstatus_ok(tctx
, status
, "BrowserrQueryOtherDomains failed");
91 torture_assert_werr_equal(tctx
, WERR_INVALID_LEVEL
, r
.out
.result
,
92 "BrowserrQueryOtherDomains");
94 info
.info
.info101
= NULL
;
95 status
= dcerpc_BrowserrQueryOtherDomains_r(b
, tctx
, &r
);
96 torture_assert_ntstatus_ok(tctx
, status
, "BrowserrQueryOtherDomains failed");
97 torture_assert_werr_equal(tctx
, WERR_INVALID_LEVEL
, r
.out
.result
,
98 "BrowserrQueryOtherDomains");
101 status
= dcerpc_BrowserrQueryOtherDomains_r(b
, tctx
, &r
);
102 torture_assert_ntstatus_ok(tctx
, status
, "BrowserrQueryOtherDomains failed");
103 torture_assert_werr_equal(tctx
, WERR_INVALID_LEVEL
, r
.out
.result
,
104 "BrowserrQueryOtherDomains");
107 status
= dcerpc_BrowserrQueryOtherDomains_r(b
, tctx
, &r
);
108 torture_assert_ntstatus_ok(tctx
, status
, "BrowserrQueryOtherDomains failed");
109 torture_assert_werr_equal(tctx
, WERR_INVALID_LEVEL
, r
.out
.result
,
110 "BrowserrQueryOtherDomains");
115 struct torture_suite
*torture_rpc_browser(TALLOC_CTX
*mem_ctx
)
117 struct torture_suite
*suite
= torture_suite_create(mem_ctx
, "browser");
118 struct torture_rpc_tcase
*tcase
= torture_suite_add_rpc_iface_tcase(suite
, "browser", &ndr_table_browser
);
120 torture_rpc_tcase_add_test(tcase
, "BrowserrQueryOtherDomains", test_BrowserrQueryOtherDomains
);