summaryrefslogtreecommitdiff
path: root/p11-kit/test-proxy.c
diff options
context:
space:
mode:
Diffstat (limited to 'p11-kit/test-proxy.c')
-rw-r--r--p11-kit/test-proxy.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/p11-kit/test-proxy.c b/p11-kit/test-proxy.c
index bf894f8..f61f37e 100644
--- a/p11-kit/test-proxy.c
+++ b/p11-kit/test-proxy.c
@@ -233,6 +233,7 @@ teardown (void *unused)
#define TWO_MODULE "module: mock-two" SHLEXT "\n"
#define ENABLED "enable-in: test-proxy, p11-kit-proxy\n"
#define DISABLED "disable-in: p11-kit-proxy\n"
+#define EIGHT_MODULE "module: mock-eight" SHLEXT "\n"
static CK_ULONG
load_modules_and_count_slots (void)
@@ -311,6 +312,37 @@ test_disable (void)
assert_num_cmp (disabled, <, count);
}
+static void
+test_slot_appear (void)
+{
+ CK_FUNCTION_LIST_PTR proxy;
+ CK_ULONG count;
+ CK_RV rv;
+
+ p11_test_file_write (test.directory, "eight.module", EIGHT_MODULE, strlen (EIGHT_MODULE));
+
+ rv = C_GetFunctionList (&proxy);
+ assert (rv == CKR_OK);
+
+ assert (p11_proxy_module_check (proxy));
+
+ rv = proxy->C_Initialize (NULL);
+ assert (rv == CKR_OK);
+
+ rv = proxy->C_GetSlotList (CK_TRUE, NULL, &count);
+ assert (rv == CKR_OK);
+ assert_num_eq (count, 0);
+
+ rv = proxy->C_GetSlotList (CK_TRUE, NULL, &count);
+ assert (rv == CKR_OK);
+ assert_num_eq (count, 1);
+
+ rv = proxy->C_Finalize (NULL);
+ assert_num_eq (rv, CKR_OK);
+
+ p11_proxy_module_cleanup ();
+}
+
static CK_FUNCTION_LIST_PTR
setup_mock_module (CK_SESSION_HANDLE *session)
{
@@ -388,7 +420,6 @@ main (int argc,
{
p11_library_init ();
p11_kit_be_quiet ();
-
p11_test (test_initialize_finalize, "/proxy/initialize-finalize");
p11_test (test_initialize_multiple, "/proxy/initialize-multiple");
#ifndef _WIN32
@@ -398,6 +429,7 @@ main (int argc,
p11_fixture (setup, teardown);
p11_test (test_disable, "/proxy/disable");
p11_test (test_no_slot, "/proxy/no-slot");
+ p11_test (test_slot_appear, "/proxy/slot-appear");
test_mock_add_tests ("/proxy");