diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2012-05-29 03:07:23 +0400 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2012-05-29 03:07:23 +0400 |
commit | 851ffca79a7c57077f93417a4129226e97123a58 (patch) | |
tree | 2615dec0e56e0853ee40e115b9592d6bc6ba6a08 /test | |
parent | d0779b60585cde616c53d6639e87cdb968ccb29c (diff) | |
download | rspamd-851ffca79a7c57077f93417a4129226e97123a58.tar.gz rspamd-851ffca79a7c57077f93417a4129226e97123a58.zip |
* Write tests for DKIM signature and key parsers.
Fix DKIM parsers.
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 6 | ||||
-rw-r--r-- | test/rspamd_dkim_test.c | 94 | ||||
-rw-r--r-- | test/rspamd_test_suite.c | 1 | ||||
-rw-r--r-- | test/tests.h | 3 |
4 files changed, 103 insertions, 1 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 5e20e25e4..322229cad 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -6,7 +6,8 @@ SET(TESTSRC rspamd_expression_test.c rspamd_test_suite.c rspamd_url_test.c rspamd_dns_test.c - rspamd_async_test.c) + rspamd_async_test.c + rspamd_dkim_test.c) ADD_EXECUTABLE(rspamd-test EXCLUDE_FROM_ALL ${TESTSRC}) SET_TARGET_PROPERTIES(rspamd-test PROPERTIES LINKER_LANGUAGE C) @@ -34,3 +35,6 @@ IF(ENABLE_LUAJIT MATCHES "ON") ELSE(ENABLE_LUAJIT MATCHES "ON") TARGET_LINK_LIBRARIES(rspamd-test "${LUA_LIBRARY}") ENDIF(ENABLE_LUAJIT MATCHES "ON") +IF(OPENSSL_FOUND) + TARGET_LINK_LIBRARIES(rspamd-test ${OPENSSL_LIBRARIES}) +ENDIF(OPENSSL_FOUND) diff --git a/test/rspamd_dkim_test.c b/test/rspamd_dkim_test.c new file mode 100644 index 000000000..ac9a88d84 --- /dev/null +++ b/test/rspamd_dkim_test.c @@ -0,0 +1,94 @@ +/* Copyright (c) 2011, Vsevolod Stakhov + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "tests.h" +#include "main.h" +#include "dkim.h" + +static const gchar test_dkim_sig[] = "v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; " + "bh=xTpleJNUaXMzaRU2xnfInn4n9hf/UHzWSuYzJ3s2WBc=; " + "b=cPya7FKbcJnCqMlCETci4ZlQTI/Tfw8y1/+AUSU+YBaDgLhsZMDPQMO0zzMvQM+c+E" + "i/J+BAckB9JRyPr9xXtV0ORSmUkFgeMyURopwdNzKQ9UB/JnGHj6i11ceV3b20UAYiIu" + "qrXhJD+YEgHYXVtfzTC4OLTJGjEQguEn2+RtlZV60aWsPizK+mqlVO4G57RGklp0vnqB" + "oc2XUGMVmOaCvVpQkJdJud1r5aKLhr9Bs0sM8/MaYugwmdSk2rLJUMfUPRyUmIGv3BAG" + "bwdvXghyl7HNOqPYwXvk/B8C7++k0VUUOix5M/XrcBMNyJu2fMZJMD8KSn3udFjp9vZ6" + "pRqg=="; + +extern struct event_base *base; + +static void +test_key_handler (rspamd_dkim_key_t *key, gsize keylen, rspamd_dkim_context_t *ctx, gpointer ud, GError *err) +{ + struct rspamd_async_session *s = ud; + g_assert (key != NULL); + + destroy_session (s); +} + +static gboolean +session_fin (gpointer unused) +{ + struct timeval tv; + + tv.tv_sec = 0; + tv.tv_usec = 0; + event_loopexit (&tv); + + return TRUE; +} + +void +rspamd_dkim_test_func () +{ + rspamd_dkim_context_t *ctx; + rspamd_dkim_key_t *key; + memory_pool_t *pool; + struct rspamd_dns_resolver *resolver; + struct config_file *cfg; + GError *err = NULL; + struct rspamd_async_session *s; + + cfg = (struct config_file *)g_malloc (sizeof (struct config_file)); + bzero (cfg, sizeof (struct config_file)); + cfg->cfg_pool = memory_pool_new (memory_pool_get_size ()); + cfg->dns_retransmits = 10; + cfg->dns_timeout = 1000; + + pool = memory_pool_new (memory_pool_get_size ()); + + resolver = dns_resolver_init (base, cfg); + + g_assert (resolver != NULL); + + ctx = rspamd_create_dkim_context (test_dkim_sig, pool, &err); + + g_assert (ctx != NULL); + + /* Key part */ + s = new_async_session (pool, session_fin, NULL, NULL, NULL); + + g_assert (rspamd_get_dkim_key (ctx, resolver, s, test_key_handler, s)); + + event_base_loop (base, 0); +} diff --git a/test/rspamd_test_suite.c b/test/rspamd_test_suite.c index 5f9a77097..283cae57d 100644 --- a/test/rspamd_test_suite.c +++ b/test/rspamd_test_suite.c @@ -69,6 +69,7 @@ main (int argc, char **argv) g_test_add_func ("/rspamd/statfile", rspamd_statfile_test_func); g_test_add_func ("/rspamd/dns", rspamd_dns_test_func); g_test_add_func ("/rspamd/aio", rspamd_async_test_func); + g_test_add_func ("/rspamd/dkim", rspamd_dkim_test_func); g_test_run (); diff --git a/test/tests.h b/test/tests.h index be2c29fca..135bfd163 100644 --- a/test/tests.h +++ b/test/tests.h @@ -29,4 +29,7 @@ void rspamd_dns_test_func (); /* Async IO */ void rspamd_async_test_func (); +/* DKIM test */ +void rspamd_dkim_test_func (); + #endif |