r26355: Eliminate global_loadparm in more places.
[gd/samba-autobuild/.git] / source4 / torture / ldap / common.c
index a65d24804c43c909a38054feb7524cc2eaa8740a..11b11dcc00de2bdb52911d7f10217f6e9ce81a84 100644 (file)
@@ -7,7 +7,7 @@
     
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
    
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
    
 */
 
 #include "includes.h"
-#include "asn_1.h"
 #include "libcli/ldap/ldap.h"
-#include "auth/gensec/gensec.h"
+#include "torture/torture.h"
+#include "torture/ldap/proto.h"
 
 NTSTATUS torture_ldap_bind(struct ldap_connection *conn, const char *userdn, const char *password)
 {
-        NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
-       int result;
+       NTSTATUS status;
 
-       if (!conn) {
-               printf("We need a valid ldap_connection structure and be connected\n");
-               return status;
+       status = ldap_bind_simple(conn, userdn, password);
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("Failed to bind with provided credentials - %s\n", 
+                      nt_errstr(status));
        }
 
-       result = ldap_bind_simple(conn, userdn, password);
-       if (result != LDAP_SUCCESS) {
-               printf("Failed to bind with provided credentials\n");
-               /* FIXME: what abut actually implementing an ldap_connection_free() function ?
-                         :-) sss */
-               return status;
-       }
-       return NT_STATUS_OK;
+       return status;
 }
 
-NTSTATUS torture_ldap_bind_sasl(struct ldap_connection *conn, 
-                               struct cli_credentials *creds)
+_PUBLIC_ NTSTATUS torture_ldap_bind_sasl(struct ldap_connection *conn, 
+                               struct cli_credentials *creds, 
+                               struct loadparm_context *lp_ctx)
 {
-        NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
-       int result;
-
-       if (!conn) {
-               printf("We need a valid ldap_connection structure and be connected\n");
-               return status;
-       }
+        NTSTATUS status;
 
-       result = ldap_bind_sasl(conn, creds);
-       if (result != LDAP_SUCCESS) {
-               printf("Failed to bind with provided credentials and SASL mechanism\n");
-               /* FIXME: what abut actually implementing an ldap_connection_free() function ?
-                         :-) sss */
-               return status;
+       status = ldap_bind_sasl(conn, creds, lp_ctx);
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("Failed sasl bind with provided credentials - %s\n", 
+                      nt_errstr(status));
        }
  
-       return NT_STATUS_OK;
+       return status;
 }
 
 /* open a ldap connection to a server */
-NTSTATUS torture_ldap_connection(TALLOC_CTX *mem_ctx, struct ldap_connection **conn, 
-                               const char *url)
+_PUBLIC_ NTSTATUS torture_ldap_connection(struct torture_context *tctx, 
+                                         struct ldap_connection **conn, 
+                                         const char *url)
 {
-        NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
+       NTSTATUS status;
 
        if (!url) {
                printf("You must specify a url string\n");
                return NT_STATUS_INVALID_PARAMETER;
        }
 
-       *conn = ldap_connect(mem_ctx, url);
-       if (!*conn) {
-               printf("Failed to initialize ldap_connection structure\n");
-               return status;
+       *conn = ldap4_new_connection(tctx, tctx->lp_ctx, NULL);
+
+       status = ldap_connect(*conn, url);
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("Failed to connect to ldap server '%s' - %s\n",
+                      url, nt_errstr(status));
        }
 
-       return NT_STATUS_OK;
+       return status;
 }
 
 /* open a ldap connection to a server */
-NTSTATUS torture_ldap_connection2(TALLOC_CTX *mem_ctx, struct ldap_connection **conn, 
+NTSTATUS torture_ldap_connection2(struct torture_context *tctx, struct ldap_connection **conn, 
                                const char *url, const char *userdn, const char *password)
 {
-        NTSTATUS status = NT_STATUS_UNSUCCESSFUL;
-       int ret;
+        NTSTATUS status;
 
-       status = torture_ldap_connection(mem_ctx, conn, url);
+       status = torture_ldap_connection(tctx, conn, url);
        NT_STATUS_NOT_OK_RETURN(status);
 
-       ret = ldap_bind_simple(*conn, userdn, password);
-       if (ret != LDAP_SUCCESS) {
-               printf("Failed to connect with url [%s]\n", url);
-               /* FIXME: what abut actually implementing an ldap_connection_free() function ?
-                         :-) sss */
-               return status;
+       status = ldap_bind_simple(*conn, userdn, password);
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("Failed a simple ldap bind - %s\n", ldap_errstr(*conn, tctx, status));
        }
  
-       return NT_STATUS_OK;
+       return status;
 }
 
 /* close an ldap connection to a server */
 NTSTATUS torture_ldap_close(struct ldap_connection *conn)
 {
-       /* FIXME: what about actually implementing ldap_close() ?
-                 :-) sss */
+       talloc_free(conn);
+       return NT_STATUS_OK;
+}
+
+NTSTATUS torture_ldap_init(void)
+{
+       struct torture_suite *suite = torture_suite_create(talloc_autofree_context(), "LDAP");
+       torture_suite_add_simple_test(suite, "BENCH-CLDAP", torture_bench_cldap);
+       torture_suite_add_simple_test(suite, "BASIC", torture_ldap_basic);
+       torture_suite_add_simple_test(suite, "CLDAP", torture_cldap);
+       torture_suite_add_simple_test(suite, "SCHEMA", torture_ldap_schema);
+       torture_suite_add_simple_test(suite, "UPTODATEVECTOR", torture_ldap_uptodatevector);
+
+       suite->description = talloc_strdup(suite, "LDAP and CLDAP tests");
+
+       torture_register_suite(suite);
+
        return NT_STATUS_OK;
 }