mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-01 15:03:39 +02:00
Add a request_certificate virtual method to GTlsInteraction
This allows GTlsConnection implementations to request a certificate from the user. Fix ups by Dan Winship <danw@gnome.org> https://bugzilla.gnome.org/show_bug.cgi?id=637257
This commit is contained in:
@@ -24,11 +24,18 @@
|
||||
|
||||
#include <gio/gio.h>
|
||||
|
||||
#include "gtesttlsbackend.h"
|
||||
|
||||
static GPtrArray *fixtures = NULL;
|
||||
|
||||
typedef struct {
|
||||
/* Class virtual interaction methods */
|
||||
gpointer ask_password_func;
|
||||
gpointer ask_password_async_func;
|
||||
gpointer ask_password_finish_func;
|
||||
gpointer request_certificate_func;
|
||||
gpointer request_certificate_async_func;
|
||||
gpointer request_certificate_finish_func;
|
||||
|
||||
/* Expected results */
|
||||
GTlsInteractionResult result;
|
||||
@@ -40,6 +47,7 @@ typedef struct {
|
||||
typedef struct {
|
||||
GTlsInteraction *interaction;
|
||||
GTlsPassword *password;
|
||||
GTlsConnection *connection;
|
||||
GMainLoop *loop;
|
||||
GThread *interaction_thread;
|
||||
GThread *test_thread;
|
||||
@@ -213,6 +221,155 @@ test_interaction_ask_password_sync_failure (GTlsInteraction *interaction,
|
||||
return G_TLS_INTERACTION_FAILED;
|
||||
}
|
||||
|
||||
static void
|
||||
test_interaction_request_certificate_async_success (GTlsInteraction *interaction,
|
||||
GTlsConnection *connection,
|
||||
gint unused_flags,
|
||||
GCancellable *cancellable,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
GTask *task;
|
||||
TestInteraction *self;
|
||||
|
||||
g_assert (TEST_IS_INTERACTION (interaction));
|
||||
self = TEST_INTERACTION (interaction);
|
||||
|
||||
g_assert (g_thread_self () == self->test->interaction_thread);
|
||||
|
||||
g_assert (G_IS_TLS_CONNECTION (connection));
|
||||
g_assert (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
|
||||
g_assert (unused_flags == 0);
|
||||
|
||||
task = g_task_new (self, cancellable, callback, user_data);
|
||||
|
||||
/*
|
||||
* IRL would call g_tls_connection_set_certificate(). But here just touch
|
||||
* the connection in a detectable way.
|
||||
*/
|
||||
g_object_set_data (G_OBJECT (connection), "chosen-certificate", "my-certificate");
|
||||
g_task_return_int (task, G_TLS_INTERACTION_HANDLED);
|
||||
g_object_unref (task);
|
||||
}
|
||||
|
||||
static GTlsInteractionResult
|
||||
test_interaction_request_certificate_finish_success (GTlsInteraction *interaction,
|
||||
GAsyncResult *result,
|
||||
GError **error)
|
||||
{
|
||||
TestInteraction *self;
|
||||
|
||||
g_assert (TEST_IS_INTERACTION (interaction));
|
||||
self = TEST_INTERACTION (interaction);
|
||||
|
||||
g_assert (g_thread_self () == self->test->interaction_thread);
|
||||
|
||||
g_assert (g_task_is_valid (result, interaction));
|
||||
g_assert (error != NULL);
|
||||
g_assert (*error == NULL);
|
||||
|
||||
return g_task_propagate_int (G_TASK (result), error);
|
||||
}
|
||||
|
||||
static void
|
||||
test_interaction_request_certificate_async_failure (GTlsInteraction *interaction,
|
||||
GTlsConnection *connection,
|
||||
gint unused_flags,
|
||||
GCancellable *cancellable,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
GTask *task;
|
||||
TestInteraction *self;
|
||||
|
||||
g_assert (TEST_IS_INTERACTION (interaction));
|
||||
self = TEST_INTERACTION (interaction);
|
||||
|
||||
g_assert (g_thread_self () == self->test->interaction_thread);
|
||||
|
||||
g_assert (G_IS_TLS_CONNECTION (connection));
|
||||
g_assert (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
|
||||
g_assert (unused_flags == 0);
|
||||
|
||||
task = g_task_new (self, cancellable, callback, user_data);
|
||||
|
||||
g_task_return_new_error (task, G_FILE_ERROR, G_FILE_ERROR_NOENT, "Another message");
|
||||
g_object_unref (task);
|
||||
}
|
||||
|
||||
static GTlsInteractionResult
|
||||
test_interaction_request_certificate_finish_failure (GTlsInteraction *interaction,
|
||||
GAsyncResult *result,
|
||||
GError **error)
|
||||
{
|
||||
TestInteraction *self;
|
||||
|
||||
g_assert (TEST_IS_INTERACTION (interaction));
|
||||
self = TEST_INTERACTION (interaction);
|
||||
|
||||
g_assert (g_thread_self () == self->test->interaction_thread);
|
||||
|
||||
g_assert (g_task_is_valid (result, interaction));
|
||||
g_assert (error != NULL);
|
||||
g_assert (*error == NULL);
|
||||
|
||||
if (g_task_propagate_int (G_TASK (result), error) != -1)
|
||||
g_assert_not_reached ();
|
||||
|
||||
return G_TLS_INTERACTION_FAILED;
|
||||
}
|
||||
|
||||
static GTlsInteractionResult
|
||||
test_interaction_request_certificate_sync_success (GTlsInteraction *interaction,
|
||||
GTlsConnection *connection,
|
||||
gint unused_flags,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
TestInteraction *self;
|
||||
|
||||
g_assert (TEST_IS_INTERACTION (interaction));
|
||||
self = TEST_INTERACTION (interaction);
|
||||
|
||||
g_assert (g_thread_self () == self->test->interaction_thread);
|
||||
|
||||
g_assert (G_IS_TLS_CONNECTION (connection));
|
||||
g_assert (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
|
||||
g_assert (error != NULL);
|
||||
g_assert (*error == NULL);
|
||||
|
||||
/*
|
||||
* IRL would call g_tls_connection_set_certificate(). But here just touch
|
||||
* the connection in a detectable way.
|
||||
*/
|
||||
g_object_set_data (G_OBJECT (connection), "chosen-certificate", "my-certificate");
|
||||
return G_TLS_INTERACTION_HANDLED;
|
||||
}
|
||||
|
||||
static GTlsInteractionResult
|
||||
test_interaction_request_certificate_sync_failure (GTlsInteraction *interaction,
|
||||
GTlsConnection *connection,
|
||||
gint unused_flags,
|
||||
GCancellable *cancellable,
|
||||
GError **error)
|
||||
{
|
||||
TestInteraction *self;
|
||||
|
||||
g_assert (TEST_IS_INTERACTION (interaction));
|
||||
self = TEST_INTERACTION (interaction);
|
||||
|
||||
g_assert (g_thread_self () == self->test->interaction_thread);
|
||||
|
||||
g_assert (G_IS_TLS_CONNECTION (connection));
|
||||
g_assert (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
|
||||
g_assert (unused_flags == 0);
|
||||
g_assert (error != NULL);
|
||||
g_assert (*error == NULL);
|
||||
|
||||
g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT, "Another message");
|
||||
return G_TLS_INTERACTION_FAILED;
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* ACTUAL TESTS
|
||||
*/
|
||||
@@ -344,6 +501,133 @@ test_ask_password (Test *test,
|
||||
g_main_loop_quit (test->loop);
|
||||
}
|
||||
|
||||
static void
|
||||
on_request_certificate_async_call (GObject *source,
|
||||
GAsyncResult *result,
|
||||
gpointer user_data)
|
||||
{
|
||||
Test *test = user_data;
|
||||
GTlsInteractionResult res;
|
||||
GError *error = NULL;
|
||||
|
||||
g_assert (G_IS_TLS_INTERACTION (source));
|
||||
g_assert (G_TLS_INTERACTION (source) == test->interaction);
|
||||
|
||||
/* Check that this callback is being run in the right place */
|
||||
g_assert (g_thread_self () == test->interaction_thread);
|
||||
|
||||
res = g_tls_interaction_request_certificate_finish (test->interaction, result, &error);
|
||||
|
||||
/* Check that the results match the fixture */
|
||||
g_assert_cmpuint (test->fixture->result, ==, res);
|
||||
switch (test->fixture->result)
|
||||
{
|
||||
case G_TLS_INTERACTION_HANDLED:
|
||||
g_assert_no_error (error);
|
||||
g_assert_cmpstr (g_object_get_data (G_OBJECT (test->connection), "chosen-certificate"), ==, "my-certificate");
|
||||
break;
|
||||
case G_TLS_INTERACTION_FAILED:
|
||||
g_assert_error (error, test->fixture->error_domain, test->fixture->error_code);
|
||||
g_assert_cmpstr (error->message, ==, test->fixture->error_message);
|
||||
g_clear_error (&error);
|
||||
break;
|
||||
case G_TLS_INTERACTION_UNHANDLED:
|
||||
g_assert_no_error (error);
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
/* Signal the end of the test */
|
||||
g_main_loop_quit (test->loop);
|
||||
}
|
||||
|
||||
static void
|
||||
test_request_certificate_async (Test *test,
|
||||
gconstpointer unused)
|
||||
{
|
||||
/* This test only works with a main loop */
|
||||
g_assert (test->loop);
|
||||
|
||||
g_tls_interaction_request_certificate_async (test->interaction,
|
||||
test->connection, 0, NULL,
|
||||
on_request_certificate_async_call,
|
||||
test);
|
||||
|
||||
/* teardown waits until g_main_loop_quit(). called from callback */
|
||||
}
|
||||
|
||||
static void
|
||||
test_invoke_request_certificate (Test *test,
|
||||
gconstpointer unused)
|
||||
{
|
||||
GTlsInteractionResult res;
|
||||
GError *error = NULL;
|
||||
|
||||
res = g_tls_interaction_invoke_request_certificate (test->interaction,
|
||||
test->connection,
|
||||
0, NULL, &error);
|
||||
|
||||
/* Check that the results match the fixture */
|
||||
g_assert_cmpuint (test->fixture->result, ==, res);
|
||||
switch (test->fixture->result)
|
||||
{
|
||||
case G_TLS_INTERACTION_HANDLED:
|
||||
g_assert_no_error (error);
|
||||
g_assert_cmpstr (g_object_get_data (G_OBJECT (test->connection), "chosen-certificate"), ==, "my-certificate");
|
||||
break;
|
||||
case G_TLS_INTERACTION_FAILED:
|
||||
g_assert_error (error, test->fixture->error_domain, test->fixture->error_code);
|
||||
g_assert_cmpstr (error->message, ==, test->fixture->error_message);
|
||||
g_clear_error (&error);
|
||||
break;
|
||||
case G_TLS_INTERACTION_UNHANDLED:
|
||||
g_assert_no_error (error);
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
/* This allows teardown to stop if running with loop */
|
||||
if (test->loop)
|
||||
g_main_loop_quit (test->loop);
|
||||
}
|
||||
|
||||
static void
|
||||
test_request_certificate (Test *test,
|
||||
gconstpointer unused)
|
||||
{
|
||||
GTlsInteractionResult res;
|
||||
GError *error = NULL;
|
||||
|
||||
res = g_tls_interaction_request_certificate (test->interaction, test->connection,
|
||||
0, NULL, &error);
|
||||
|
||||
/* Check that the results match the fixture */
|
||||
g_assert_cmpuint (test->fixture->result, ==, res);
|
||||
switch (test->fixture->result)
|
||||
{
|
||||
case G_TLS_INTERACTION_HANDLED:
|
||||
g_assert_no_error (error);
|
||||
g_assert_cmpstr (g_object_get_data (G_OBJECT (test->connection), "chosen-certificate"), ==, "my-certificate");
|
||||
break;
|
||||
case G_TLS_INTERACTION_FAILED:
|
||||
g_assert_error (error, test->fixture->error_domain, test->fixture->error_code);
|
||||
g_assert_cmpstr (error->message, ==, test->fixture->error_message);
|
||||
g_clear_error (&error);
|
||||
break;
|
||||
case G_TLS_INTERACTION_UNHANDLED:
|
||||
g_assert_no_error (error);
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
/* This allows teardown to stop if running with loop */
|
||||
if (test->loop)
|
||||
g_main_loop_quit (test->loop);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* TEST SETUP
|
||||
*/
|
||||
@@ -354,6 +638,9 @@ setup_without_loop (Test *test,
|
||||
{
|
||||
const Fixture *fixture = user_data;
|
||||
GTlsInteractionClass *klass;
|
||||
GTlsBackend *backend;
|
||||
GError *error = NULL;
|
||||
|
||||
test->fixture = fixture;
|
||||
|
||||
test->interaction = g_object_new (TEST_TYPE_INTERACTION, NULL);
|
||||
@@ -365,6 +652,14 @@ setup_without_loop (Test *test,
|
||||
klass->ask_password = fixture->ask_password_func;
|
||||
klass->ask_password_async = fixture->ask_password_async_func;
|
||||
klass->ask_password_finish = fixture->ask_password_finish_func;
|
||||
klass->request_certificate = fixture->request_certificate_func;
|
||||
klass->request_certificate_async = fixture->request_certificate_async_func;
|
||||
klass->request_certificate_finish = fixture->request_certificate_finish_func;
|
||||
|
||||
backend = g_object_new (G_TYPE_TEST_TLS_BACKEND, NULL);
|
||||
test->connection = g_object_new (g_tls_backend_get_server_connection_type (backend), NULL);
|
||||
g_assert_no_error (error);
|
||||
g_object_unref (backend);
|
||||
|
||||
test->password = g_tls_password_new (0, "Description");
|
||||
test->test_thread = g_thread_self ();
|
||||
@@ -384,6 +679,8 @@ teardown_without_loop (Test *test,
|
||||
|
||||
g_object_add_weak_pointer (weak_pointer, &weak_pointer);
|
||||
|
||||
g_object_unref (test->connection);
|
||||
|
||||
g_object_unref (test->password);
|
||||
|
||||
g_object_unref (test->interaction);
|
||||
@@ -507,11 +804,10 @@ teardown_with_normal_loop (Test *test,
|
||||
typedef void (*TestFunc) (Test *test, gconstpointer data);
|
||||
|
||||
static void
|
||||
test_with_async_ask_password_implementations (const gchar *name,
|
||||
TestFunc setup,
|
||||
TestFunc func,
|
||||
TestFunc teardown,
|
||||
GPtrArray *fixtures)
|
||||
test_with_async_ask_password (const gchar *name,
|
||||
TestFunc setup,
|
||||
TestFunc func,
|
||||
TestFunc teardown)
|
||||
{
|
||||
gchar *test_name;
|
||||
Fixture *fixture;
|
||||
@@ -541,12 +837,12 @@ test_with_async_ask_password_implementations (const gchar *name,
|
||||
g_free (test_name);
|
||||
g_ptr_array_add (fixtures, fixture);
|
||||
}
|
||||
|
||||
static void
|
||||
test_with_unhandled_ask_password_implementations (const gchar *name,
|
||||
TestFunc setup,
|
||||
TestFunc func,
|
||||
TestFunc teardown,
|
||||
GPtrArray *fixtures)
|
||||
test_with_unhandled_ask_password (const gchar *name,
|
||||
TestFunc setup,
|
||||
TestFunc func,
|
||||
TestFunc teardown)
|
||||
{
|
||||
gchar *test_name;
|
||||
Fixture *fixture;
|
||||
@@ -564,11 +860,10 @@ test_with_unhandled_ask_password_implementations (const gchar *name,
|
||||
}
|
||||
|
||||
static void
|
||||
test_with_sync_ask_password_implementations (const gchar *name,
|
||||
test_with_sync_ask_password (const gchar *name,
|
||||
TestFunc setup,
|
||||
TestFunc func,
|
||||
TestFunc teardown,
|
||||
GPtrArray *fixtures)
|
||||
TestFunc teardown)
|
||||
{
|
||||
gchar *test_name;
|
||||
Fixture *fixture;
|
||||
@@ -599,11 +894,122 @@ test_with_sync_ask_password_implementations (const gchar *name,
|
||||
g_ptr_array_add (fixtures, fixture);
|
||||
}
|
||||
|
||||
static void
|
||||
test_with_all_ask_password (const gchar *name,
|
||||
TestFunc setup,
|
||||
TestFunc func,
|
||||
TestFunc teardown)
|
||||
{
|
||||
test_with_unhandled_ask_password (name, setup, func, teardown);
|
||||
test_with_async_ask_password (name, setup, func, teardown);
|
||||
test_with_sync_ask_password (name, setup, func, teardown);
|
||||
}
|
||||
|
||||
static void
|
||||
test_with_async_request_certificate (const gchar *name,
|
||||
TestFunc setup,
|
||||
TestFunc func,
|
||||
TestFunc teardown)
|
||||
{
|
||||
gchar *test_name;
|
||||
Fixture *fixture;
|
||||
|
||||
/* Async implementation that succeeds */
|
||||
fixture = g_new0 (Fixture, 1);
|
||||
fixture->request_certificate_async_func = test_interaction_request_certificate_async_success;
|
||||
fixture->request_certificate_finish_func = test_interaction_request_certificate_finish_success;
|
||||
fixture->request_certificate_func = NULL;
|
||||
fixture->result = G_TLS_INTERACTION_HANDLED;
|
||||
test_name = g_strdup_printf ("%s/async-implementation-success", name);
|
||||
g_test_add (test_name, Test, fixture, setup, func, teardown);
|
||||
g_free (test_name);
|
||||
g_ptr_array_add (fixtures, fixture);
|
||||
|
||||
/* Async implementation that fails */
|
||||
fixture = g_new0 (Fixture, 1);
|
||||
fixture->request_certificate_async_func = test_interaction_request_certificate_async_failure;
|
||||
fixture->request_certificate_finish_func = test_interaction_request_certificate_finish_failure;
|
||||
fixture->request_certificate_func = NULL;
|
||||
fixture->result = G_TLS_INTERACTION_FAILED;
|
||||
fixture->error_domain = G_FILE_ERROR;
|
||||
fixture->error_code = G_FILE_ERROR_NOENT;
|
||||
fixture->error_message = "Another message";
|
||||
test_name = g_strdup_printf ("%s/async-implementation-failure", name);
|
||||
g_test_add (test_name, Test, fixture, setup, func, teardown);
|
||||
g_free (test_name);
|
||||
g_ptr_array_add (fixtures, fixture);
|
||||
}
|
||||
|
||||
static void
|
||||
test_with_unhandled_request_certificate (const gchar *name,
|
||||
TestFunc setup,
|
||||
TestFunc func,
|
||||
TestFunc teardown)
|
||||
{
|
||||
gchar *test_name;
|
||||
Fixture *fixture;
|
||||
|
||||
/* Unhandled implementation */
|
||||
fixture = g_new0 (Fixture, 1);
|
||||
fixture->request_certificate_async_func = NULL;
|
||||
fixture->request_certificate_finish_func = NULL;
|
||||
fixture->request_certificate_func = NULL;
|
||||
fixture->result = G_TLS_INTERACTION_UNHANDLED;
|
||||
test_name = g_strdup_printf ("%s/unhandled-implementation", name);
|
||||
g_test_add (test_name, Test, fixture, setup, func, teardown);
|
||||
g_free (test_name);
|
||||
g_ptr_array_add (fixtures, fixture);
|
||||
}
|
||||
|
||||
static void
|
||||
test_with_sync_request_certificate (const gchar *name,
|
||||
TestFunc setup,
|
||||
TestFunc func,
|
||||
TestFunc teardown)
|
||||
{
|
||||
gchar *test_name;
|
||||
Fixture *fixture;
|
||||
|
||||
/* Sync implementation that succeeds */
|
||||
fixture = g_new0 (Fixture, 1);
|
||||
fixture->request_certificate_async_func = NULL;
|
||||
fixture->request_certificate_finish_func = NULL;
|
||||
fixture->request_certificate_func = test_interaction_request_certificate_sync_success;
|
||||
fixture->result = G_TLS_INTERACTION_HANDLED;
|
||||
test_name = g_strdup_printf ("%s/sync-implementation-success", name);
|
||||
g_test_add (test_name, Test, fixture, setup, func, teardown);
|
||||
g_free (test_name);
|
||||
g_ptr_array_add (fixtures, fixture);
|
||||
|
||||
/* Async implementation that fails */
|
||||
fixture = g_new0 (Fixture, 1);
|
||||
fixture->request_certificate_async_func = NULL;
|
||||
fixture->request_certificate_finish_func = NULL;
|
||||
fixture->request_certificate_func = test_interaction_request_certificate_sync_failure;
|
||||
fixture->result = G_TLS_INTERACTION_FAILED;
|
||||
fixture->error_domain = G_FILE_ERROR;
|
||||
fixture->error_code = G_FILE_ERROR_NOENT;
|
||||
fixture->error_message = "Another message";
|
||||
test_name = g_strdup_printf ("%s/sync-implementation-failure", name);
|
||||
g_test_add (test_name, Test, fixture, setup, func, teardown);
|
||||
g_free (test_name);
|
||||
g_ptr_array_add (fixtures, fixture);
|
||||
}
|
||||
|
||||
static void
|
||||
test_with_all_request_certificate (const gchar *name,
|
||||
TestFunc setup,
|
||||
TestFunc func,
|
||||
TestFunc teardown)
|
||||
{
|
||||
test_with_unhandled_request_certificate (name, setup, func, teardown);
|
||||
test_with_async_request_certificate (name, setup, func, teardown);
|
||||
test_with_sync_request_certificate (name, setup, func, teardown);
|
||||
}
|
||||
int
|
||||
main (int argc,
|
||||
char *argv[])
|
||||
{
|
||||
GPtrArray *fixtures;
|
||||
gint ret;
|
||||
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
@@ -611,52 +1017,44 @@ main (int argc,
|
||||
fixtures = g_ptr_array_new_with_free_func (g_free);
|
||||
|
||||
/* Tests for g_tls_interaction_invoke_ask_password */
|
||||
|
||||
test_with_unhandled_ask_password_implementations ("/tls-interaction/ask-password/invoke-with-loop",
|
||||
setup_with_thread_loop, test_invoke_ask_password,
|
||||
teardown_with_thread_loop, fixtures);
|
||||
test_with_async_ask_password_implementations ("/tls-interaction/ask-password/invoke-with-loop",
|
||||
setup_with_thread_loop, test_invoke_ask_password,
|
||||
teardown_with_thread_loop, fixtures);
|
||||
test_with_sync_ask_password_implementations ("/tls-interaction/ask-password/invoke-with-loop",
|
||||
setup_with_thread_loop, test_invoke_ask_password,
|
||||
teardown_with_thread_loop, fixtures);
|
||||
|
||||
test_with_unhandled_ask_password_implementations ("/tls-interaction/ask-password/invoke-without-loop",
|
||||
setup_without_loop, test_invoke_ask_password,
|
||||
teardown_without_loop, fixtures);
|
||||
test_with_async_ask_password_implementations ("/tls-interaction/ask-password/invoke-without-loop",
|
||||
setup_without_loop, test_invoke_ask_password,
|
||||
teardown_without_loop, fixtures);
|
||||
test_with_sync_ask_password_implementations ("/tls-interaction/ask-password/invoke-without-loop",
|
||||
setup_without_loop, test_invoke_ask_password,
|
||||
teardown_without_loop, fixtures);
|
||||
|
||||
test_with_unhandled_ask_password_implementations ("/tls-interaction/ask-password/invoke-in-loop",
|
||||
setup_with_normal_loop, test_invoke_ask_password,
|
||||
teardown_with_normal_loop, fixtures);
|
||||
test_with_async_ask_password_implementations ("/tls-interaction/ask-password/invoke-in-loop",
|
||||
setup_with_normal_loop, test_invoke_ask_password,
|
||||
teardown_with_normal_loop, fixtures);
|
||||
test_with_sync_ask_password_implementations ("/tls-interaction/ask-password/invoke-in-loop",
|
||||
setup_with_normal_loop, test_invoke_ask_password,
|
||||
teardown_with_normal_loop, fixtures);
|
||||
test_with_all_ask_password ("/tls-interaction/ask-password/invoke-with-loop",
|
||||
setup_with_thread_loop, test_invoke_ask_password, teardown_with_thread_loop);
|
||||
test_with_all_ask_password ("/tls-interaction/ask-password/invoke-without-loop",
|
||||
setup_without_loop, test_invoke_ask_password, teardown_without_loop);
|
||||
test_with_all_ask_password ("/tls-interaction/ask-password/invoke-in-loop",
|
||||
setup_with_normal_loop, test_invoke_ask_password, teardown_with_normal_loop);
|
||||
|
||||
/* Tests for g_tls_interaction_ask_password */
|
||||
test_with_unhandled_ask_password_implementations ("/tls-interaction/ask-password/sync",
|
||||
setup_without_loop, test_ask_password,
|
||||
teardown_without_loop, fixtures);
|
||||
test_with_sync_ask_password_implementations ("/tls-interaction/ask-password/sync",
|
||||
setup_without_loop, test_ask_password,
|
||||
teardown_without_loop, fixtures);
|
||||
test_with_unhandled_ask_password ("/tls-interaction/ask-password/sync",
|
||||
setup_without_loop, test_ask_password, teardown_without_loop);
|
||||
test_with_sync_ask_password ("/tls-interaction/ask-password/sync",
|
||||
setup_without_loop, test_ask_password, teardown_without_loop);
|
||||
|
||||
/* Tests for g_tls_interaction_ask_password_async */
|
||||
test_with_unhandled_ask_password_implementations ("/tls-interaction/ask-password/async",
|
||||
setup_with_normal_loop, test_ask_password_async,
|
||||
teardown_with_normal_loop, fixtures);
|
||||
test_with_async_ask_password_implementations ("/tls-interaction/ask-password/async",
|
||||
setup_with_normal_loop, test_ask_password_async,
|
||||
teardown_with_normal_loop, fixtures);
|
||||
test_with_unhandled_ask_password ("/tls-interaction/ask-password/async",
|
||||
setup_with_normal_loop, test_ask_password_async, teardown_with_normal_loop);
|
||||
test_with_async_ask_password ("/tls-interaction/ask-password/async",
|
||||
setup_with_normal_loop, test_ask_password_async, teardown_with_normal_loop);
|
||||
|
||||
/* Tests for g_tls_interaction_invoke_request_certificate */
|
||||
test_with_all_request_certificate ("/tls-interaction/request-certificate/invoke-with-loop",
|
||||
setup_with_thread_loop, test_invoke_request_certificate, teardown_with_thread_loop);
|
||||
test_with_all_request_certificate ("/tls-interaction/request-certificate/invoke-without-loop",
|
||||
setup_without_loop, test_invoke_request_certificate, teardown_without_loop);
|
||||
test_with_all_request_certificate ("/tls-interaction/request-certificate/invoke-in-loop",
|
||||
setup_with_normal_loop, test_invoke_request_certificate, teardown_with_normal_loop);
|
||||
|
||||
/* Tests for g_tls_interaction_ask_password */
|
||||
test_with_unhandled_request_certificate ("/tls-interaction/request-certificate/sync",
|
||||
setup_without_loop, test_request_certificate, teardown_without_loop);
|
||||
test_with_sync_request_certificate ("/tls-interaction/request-certificate/sync",
|
||||
setup_without_loop, test_request_certificate, teardown_without_loop);
|
||||
|
||||
/* Tests for g_tls_interaction_ask_password_async */
|
||||
test_with_unhandled_request_certificate ("/tls-interaction/request-certificate/async",
|
||||
setup_with_normal_loop, test_request_certificate_async, teardown_with_normal_loop);
|
||||
test_with_async_request_certificate ("/tls-interaction/request-certificate/async",
|
||||
setup_with_normal_loop, test_request_certificate_async, teardown_with_normal_loop);
|
||||
|
||||
ret = g_test_run();
|
||||
g_ptr_array_free (fixtures, TRUE);
|
||||
|
Reference in New Issue
Block a user