summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStef Walter <stefw@collabora.co.uk>2010-12-09 22:14:38 +0000
committerStef Walter <stefw@collabora.co.uk>2010-12-24 07:40:02 -0600
commit430516c8f22e26821a22868621e59ec201d6a805 (patch)
tree03f98ffb2058b0014119cbe71f30bcd876ba0f7b
parentd6cacab44d2c134688c79be7d62ab4307ce7f527 (diff)
downloadempathy-430516c8f22e26821a22868621e59ec201d6a805.tar.gz
tests: Add test for basic verification.
This test depends on the certificates you have in gnome-keyring, will fix this dependency in later commits.
-rw-r--r--tests/empathy-tls-test.c60
1 files changed, 47 insertions, 13 deletions
diff --git a/tests/empathy-tls-test.c b/tests/empathy-tls-test.c
index 8da2cd002..12d2aa216 100644
--- a/tests/empathy-tls-test.c
+++ b/tests/empathy-tls-test.c
@@ -3,8 +3,11 @@
#include <string.h>
#include <libempathy/empathy-tls-certificate.h>
+#include <libempathy/empathy-tls-verifier.h>
#include "test-helper.h"
+#include <gnutls/gnutls.h>
+
#include <telepathy-glib/dbus-properties-mixin.h>
#include <telepathy-glib/enums.h>
#include <telepathy-glib/interfaces.h>
@@ -280,9 +283,23 @@ accepted_callback (GObject *object, GAsyncResult *res, gpointer user_data)
g_main_loop_quit (test->loop);
}
+static void
+prepared_callback (GObject *object, GAsyncResult *res, gpointer user_data)
+{
+ GError *error = NULL;
+ Test *test = user_data;
+
+ g_assert (EMPATHY_IS_TLS_CERTIFICATE (object));
+ empathy_tls_certificate_prepare_finish (EMPATHY_TLS_CERTIFICATE (object),
+ res, &error);
+ g_assert_no_error (error);
+
+ g_main_loop_quit (test->loop);
+}
+
/* A simple test to make sure the test infrastructure is working */
static void
-test_certificate_mock_accept (Test *test, gconstpointer data G_GNUC_UNUSED)
+test_certificate_mock_basics (Test *test, gconstpointer data G_GNUC_UNUSED)
{
GError *error = NULL;
EmpathyTLSCertificate *cert;
@@ -294,34 +311,40 @@ test_certificate_mock_accept (Test *test, gconstpointer data G_GNUC_UNUSED)
MOCK_TLS_CERTIFICATE_PATH, &error);
g_assert_no_error (error);
- empathy_tls_certificate_accept_async (cert, accepted_callback, test);
- g_object_unref (cert);
+ empathy_tls_certificate_prepare_async (cert, prepared_callback, test);
+ g_main_loop_run (test->loop);
+ empathy_tls_certificate_accept_async (cert, accepted_callback, test);
g_main_loop_run (test->loop);
+ g_object_unref (cert);
g_assert (test->mock->state == TP_TLS_CERTIFICATE_STATE_ACCEPTED);
}
static void
-prepared_callback (GObject *object, GAsyncResult *res, gpointer user_data)
+verifier_callback (GObject *object, GAsyncResult *res, gpointer user_data)
{
+ EmpTLSCertificateRejectReason reason = 0;
+ GHashTable *details = NULL;
GError *error = NULL;
Test *test = user_data;
- g_assert (EMPATHY_IS_TLS_CERTIFICATE (object));
- empathy_tls_certificate_prepare_finish (EMPATHY_TLS_CERTIFICATE (object),
- res, &error);
+ g_assert (EMPATHY_IS_TLS_VERIFIER (object));
+ empathy_tls_verifier_verify_finish (EMPATHY_TLS_VERIFIER (object),
+ res, &reason, &details, &error);
g_assert_no_error (error);
- /* Stop the tests */
+ if (details)
+ g_hash_table_destroy (details);
g_main_loop_quit (test->loop);
}
static void
-test_certificate_prepare (Test *test, gconstpointer data G_GNUC_UNUSED)
+test_certificate_verify (Test *test, gconstpointer data G_GNUC_UNUSED)
{
GError *error = NULL;
EmpathyTLSCertificate *cert;
+ EmpathyTLSVerifier *verifier;
test->mock = mock_tls_certificate_new_and_register (test->dbus,
"dhansak-collabora.cer");
@@ -331,9 +354,19 @@ test_certificate_prepare (Test *test, gconstpointer data G_GNUC_UNUSED)
g_assert_no_error (error);
empathy_tls_certificate_prepare_async (cert, prepared_callback, test);
+ g_main_loop_run (test->loop);
+
+ verifier = empathy_tls_verifier_new (cert, "another-host");
+ empathy_tls_verifier_verify_async (verifier, verifier_callback, test);
+ g_main_loop_run (test->loop);
+
+#if 0
+ empathy_tls_certificate_accept_async (cert, accepted_callback, test);
g_main_loop_run (test->loop);
+#endif
+ g_object_unref (verifier);
g_object_unref (cert);
}
@@ -344,11 +377,12 @@ main (int argc,
int result;
test_init (argc, argv);
+ gnutls_global_init ();
- g_test_add ("/tls/certificate_accept", Test, NULL,
- setup, test_certificate_mock_accept, teardown);
- g_test_add ("/tls/certificate_prepare", Test, NULL,
- setup, test_certificate_prepare, teardown);
+ g_test_add ("/tls/certificate_basics", Test, NULL,
+ setup, test_certificate_mock_basics, teardown);
+ g_test_add ("/tls/certificate_verify", Test, NULL,
+ setup, test_certificate_verify, teardown);
result = g_test_run ();
test_deinit ();