diff options
Diffstat (limited to 'source4/torture')
-rw-r--r-- | source4/torture/config.m4 | 2 | ||||
-rw-r--r-- | source4/torture/config.mk | 12 | ||||
-rw-r--r-- | source4/torture/ldap/basic.c | 34 | ||||
-rw-r--r-- | source4/torture/ldap/common.c | 40 | ||||
-rw-r--r-- | source4/torture/torture.c | 3 |
5 files changed, 91 insertions, 0 deletions
diff --git a/source4/torture/config.m4 b/source4/torture/config.m4 index 47b790fb68..e5f1d357e6 100644 --- a/source4/torture/config.m4 +++ b/source4/torture/config.m4 @@ -12,6 +12,8 @@ SMB_SUBSYSTEM_MK(TORTURE_AUTH,torture/config.mk) SMB_SUBSYSTEM_MK(TORTURE_NBENCH,torture/config.mk) +SMB_SUBSYSTEM_MK(TORTURE_LDAP,torture/config.mk) + SMB_BINARY_MK(smbtorture,torture/config.mk) SMB_BINARY_MK(gentest,torture/config.mk) SMB_BINARY_MK(masktest,torture/config.mk) diff --git a/source4/torture/config.mk b/source4/torture/config.mk index 09a6dcb991..0f758eb0e9 100644 --- a/source4/torture/config.mk +++ b/source4/torture/config.mk @@ -104,6 +104,17 @@ ADD_OBJ_FILES = \ ################################# ################################# +# Start SUBSYSTEM TORTURE_LDAP +[SUBSYSTEM::TORTURE_LDAP] +ADD_OBJ_FILES = \ + torture/ldap/common.o \ + torture/ldap/basic.o +REQUIRED_SUBSYSTEMS = \ + LIBCLI_LDAP +# End SUBSYSTEM TORTURE_LDAP +################################# + +################################# # Start BINARY smbtorture [BINARY::smbtorture] OBJ_FILES = \ @@ -116,6 +127,7 @@ REQUIRED_SUBSYSTEMS = \ TORTURE_RAP \ TORTURE_AUTH \ TORTURE_NBENCH \ + TORTURE_LDAP \ CONFIG \ LIBCMDLINE \ LIBBASIC diff --git a/source4/torture/ldap/basic.c b/source4/torture/ldap/basic.c new file mode 100644 index 0000000000..2227d70421 --- /dev/null +++ b/source4/torture/ldap/basic.c @@ -0,0 +1,34 @@ + +#include "includes.h" + +BOOL torture_ldap_basic(int dummy) +{ + NTSTATUS status; + struct ldap_connection *conn; + TALLOC_CTX *mem_ctx; + BOOL ret = True; + const char *host = lp_parm_string(-1, "torture", "host"); + char *url; + + mem_ctx = talloc_init("torture_ldap_basic"); + + url = talloc_asprintf(mem_ctx, "ldap://%s/", host); + + status = torture_ldap_connection(&conn, url); + if (!NT_STATUS_IS_OK(status)) { + return False; + } + + /* other basic tests here */ + + /* --- nothing yet :-) --- */ + + /* no more test we are closing */ + + talloc_destroy(mem_ctx); + + torture_ldap_close(conn); + + return ret; +} + diff --git a/source4/torture/ldap/common.c b/source4/torture/ldap/common.c new file mode 100644 index 0000000000..7d8dcbe4da --- /dev/null +++ b/source4/torture/ldap/common.c @@ -0,0 +1,40 @@ +#include "includes.h" + +/* open a ldap connection to a server */ +/* TODO: Add support to pass over credentials */ +NTSTATUS torture_ldap_connection(struct ldap_connection **conn, + const char *url) +{ + NTSTATUS status = NT_STATUS_UNSUCCESSFUL; + BOOL ret; + + if (!url) { + printf("You must specify a url string\n"); + return NT_STATUS_INVALID_PARAMETER; + } + + *conn = new_ldap_connection(); + if (!*conn) { + printf("Failed to initialize ldap_connection structure\n"); + return status; + } + + ret = ldap_setup_connection(*conn, url); + if (!ret) { + printf("Failed to connect with url [%s]", url); + /* FIXME: what abut actually implementing an ldap_connection_free() function ? + :-) sss */ + return status; + } + + return NT_STATUS_OK; +} + +/* close an ldap connection to a server */ +NTSTATUS torture_ldap_close(struct ldap_connection *conn) +{ + /* FIXME: what about actually implementing ldap_close() ? + :-) sss */ + return NT_STATUS_OK; +} + diff --git a/source4/torture/torture.c b/source4/torture/torture.c index 78a15d22fd..6048d7c76d 100644 --- a/source4/torture/torture.c +++ b/source4/torture/torture.c @@ -4215,6 +4215,9 @@ static struct { /* crypto testers */ {"CRYPT-NTLMSSP", torture_ntlmssp_self_check, 0}, + /* ldap testers */ + {"LDAP-BASIC", torture_ldap_basic, 0}, + {NULL, NULL, 0}}; |