Line data Source code
1 : /* 2 : Unix SMB/CIFS implementation. 3 : SMB torture tester 4 : Copyright (C) Guenther Deschner 2009 5 : 6 : This program is free software; you can redistribute it and/or modify 7 : it under the terms of the GNU General Public License as published by 8 : the Free Software Foundation; either version 3 of the License, or 9 : (at your option) any later version. 10 : 11 : This program is distributed in the hope that it will be useful, 12 : but WITHOUT ANY WARRANTY; without even the implied warranty of 13 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 : GNU General Public License for more details. 15 : 16 : You should have received a copy of the GNU General Public License 17 : along with this program. If not, see <http://www.gnu.org/licenses/>. 18 : */ 19 : 20 : #include "source3/include/includes.h" 21 : #include "torture/smbtorture.h" 22 : #include "auth/credentials/credentials.h" 23 : #include "lib/cmdline/cmdline.h" 24 : #include "source3/lib/netapi/netapi.h" 25 : #include "source3/lib/netapi/netapi_private.h" 26 : #include "lib/param/param.h" 27 : #include "torture/libnetapi/proto.h" 28 : 29 4 : bool torture_libnetapi_init_context(struct torture_context *tctx, 30 : struct libnetapi_ctx **ctx_p) 31 : { 32 0 : NET_API_STATUS status; 33 0 : struct libnetapi_ctx *ctx; 34 4 : TALLOC_CTX *frame = talloc_stackframe(); 35 4 : struct cli_credentials *creds = samba_cmdline_get_creds(); 36 : 37 4 : if (!lp_load_global(lpcfg_configfile(tctx->lp_ctx))) { 38 0 : fprintf(stderr, "error loading %s\n", lpcfg_configfile(tctx->lp_ctx)); 39 0 : talloc_free(frame); 40 0 : return W_ERROR_V(WERR_GEN_FAILURE); 41 : } 42 : 43 4 : load_interfaces(); 44 : 45 4 : status = libnetapi_net_init(&ctx, tctx->lp_ctx, creds); 46 4 : if (status != 0) { 47 0 : talloc_free(frame); 48 0 : return false; 49 : } 50 : 51 4 : *ctx_p = ctx; 52 : 53 4 : talloc_free(frame); 54 4 : return true; 55 : } 56 : 57 1 : static bool torture_libnetapi_initialize(struct torture_context *tctx) 58 : { 59 0 : NET_API_STATUS status; 60 0 : struct libnetapi_ctx *ctx; 61 : 62 : /* We must do this first, as otherwise we fail if we don't 63 : * have an smb.conf in the default path (we need to use the 64 : * torture smb.conf */ 65 1 : torture_assert(tctx, torture_libnetapi_init_context(tctx, &ctx), 66 : "failed to initialize libnetapi"); 67 : 68 1 : status = libnetapi_init(&ctx); 69 : 70 1 : torture_assert(tctx, ctx != NULL, "Failed to get a libnetapi_ctx"); 71 1 : torture_assert_int_equal(tctx, status, 0, "libnetapi_init failed despite already being set up"); 72 : 73 1 : libnetapi_free(ctx); 74 : 75 1 : return true; 76 : } 77 : 78 2354 : NTSTATUS torture_libnetapi_init(TALLOC_CTX *ctx) 79 : { 80 125 : struct torture_suite *suite; 81 : 82 2354 : suite = torture_suite_create(ctx, "netapi"); 83 : 84 2354 : torture_suite_add_simple_test(suite, "server", torture_libnetapi_server); 85 2354 : torture_suite_add_simple_test(suite, "group", torture_libnetapi_group); 86 2354 : torture_suite_add_simple_test(suite, "user", torture_libnetapi_user); 87 2354 : torture_suite_add_simple_test(suite, "initialize", torture_libnetapi_initialize); 88 : 89 2354 : suite->description = talloc_strdup(suite, "libnetapi convenience interface tests"); 90 : 91 2354 : torture_register_suite(ctx, suite); 92 : 93 2354 : return NT_STATUS_OK; 94 : }