[glib-networking] tls: fix installed tests



commit 9cd6bfcacb05acc0405d34238e215f5162a23820
Author: Dan Winship <danw gnome org>
Date:   Tue Oct 8 16:28:28 2013 -0400

    tls: fix installed tests
    
    The support files weren't being installed, but rather were still being
    read out of the source tree. Fix that.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=709628

 tls/tests/Makefile.am     |   21 ++++++++++-
 tls/tests/certificate.c   |   77 +++++++++++++++++++++++++++++------------
 tls/tests/connection.c    |   31 ++++++++++++----
 tls/tests/file-database.c |   84 +++++++++++++++++++++++++++++++++------------
 4 files changed, 158 insertions(+), 55 deletions(-)
---
diff --git a/tls/tests/Makefile.am b/tls/tests/Makefile.am
index ef91554..e8c19c3 100644
--- a/tls/tests/Makefile.am
+++ b/tls/tests/Makefile.am
@@ -35,6 +35,23 @@ pkcs11_slot_SOURCES = pkcs11-slot.c \
 
 endif
 
-EXTRA_DIST += \
-       files \
+testfilesdir = $(installed_testdir)/files
+testfiles_DATA =                               \
+       files/ca.pem                            \
+       files/ca-roots.pem                      \
+       files/ca-verisign-sha1.pem              \
+       files/chain-with-verisign-md2.pem       \
+       files/client-and-key.pem                \
+       files/client-future.pem                 \
+       files/client-past.pem                   \
+       files/client.pem                        \
+       files/non-ca.pem                        \
+       files/server-and-key.pem                \
+       files/server.der                        \
+       files/server-key.der                    \
+       files/server-key.pem                    \
+       files/server.pem                        \
+       files/server-self.pem                   \
        $(NULL)
+
+EXTRA_DIST += $(testfiles_DATA)
diff --git a/tls/tests/certificate.c b/tls/tests/certificate.c
index 408f3e2..d1818bd 100644
--- a/tls/tests/certificate.c
+++ b/tls/tests/certificate.c
@@ -24,8 +24,6 @@
 #include <sys/types.h>
 #include <string.h>
 
-#define TEST_FILE(name) (SRCDIR "/files/" name)
-
 typedef struct {
   GTlsBackend *backend;
   GType cert_gtype;
@@ -41,30 +39,34 @@ static void
 setup_certificate (TestCertificate *test, gconstpointer data)
 {
   GError *error = NULL;
-  gchar *contents;
+  gchar *file, *contents;
   gsize length;
 
   test->backend = g_tls_backend_get_default ();
   test->cert_gtype = g_tls_backend_get_certificate_type (test->backend);
 
-  g_file_get_contents (TEST_FILE ("server.pem"), &test->cert_pem,
-                       &test->cert_pem_length, &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/server.pem", NULL);
+  g_file_get_contents (file, &test->cert_pem, &test->cert_pem_length, &error);
+  g_free (file);
   g_assert_no_error (error);
 
-  g_file_get_contents (TEST_FILE ("server.der"),
-                      &contents, &length, &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/server.der", NULL);
+  g_file_get_contents (file, &contents, &length, &error);
+  g_free (file);
   g_assert_no_error (error);
 
   test->cert_der = g_byte_array_new ();
   g_byte_array_append (test->cert_der, (guint8 *)contents, length);
   g_free (contents);
 
-  g_file_get_contents (TEST_FILE ("server-key.pem"), &test->key_pem,
-                       &test->key_pem_length, &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/server-key.pem", NULL);
+  g_file_get_contents (file, &test->key_pem, &test->key_pem_length, &error);
+  g_free (file);
   g_assert_no_error (error);
 
-  g_file_get_contents (TEST_FILE ("server-key.der"),
-                       &contents, &length, &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/server-key.der", NULL);
+  g_file_get_contents (file, &contents, &length, &error);
+  g_free (file);
   g_assert_no_error (error);
 
   test->key_der = g_byte_array_new ();
@@ -174,8 +176,11 @@ test_create_certificate_with_issuer (TestCertificate   *test,
 {
   GTlsCertificate *cert, *issuer, *check;
   GError *error = NULL;
+  gchar *file;
 
-  issuer = g_tls_certificate_new_from_file (TEST_FILE ("ca.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/ca.pem", NULL);
+  issuer = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (issuer));
 
@@ -215,19 +220,24 @@ setup_verify (TestVerify     *test,
               gconstpointer   data)
 {
   GError *error = NULL;
+  gchar *file;
 
-  test->cert = g_tls_certificate_new_from_file (TEST_FILE ("server.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/server.pem", NULL);
+  test->cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (test->cert));
 
   test->identity = g_network_address_new ("server.example.com", 80);
 
-  test->anchor = g_tls_certificate_new_from_file (TEST_FILE ("ca.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/ca.pem", NULL);
+  test->anchor = g_tls_certificate_new_from_file (file, &error);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (test->anchor));
-  test->database = g_tls_file_database_new (TEST_FILE ("ca.pem"), &error);
+  test->database = g_tls_file_database_new (file, &error);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_DATABASE (test->database));
+  g_free (file);
 }
 
 static void
@@ -293,9 +303,12 @@ test_verify_certificate_bad_ca (TestVerify      *test,
   GTlsCertificateFlags errors;
   GTlsCertificate *cert;
   GError *error = NULL;
+  gchar *file;
 
   /* Use a client certificate as the CA, which is wrong */
-  cert = g_tls_certificate_new_from_file (TEST_FILE ("client.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/client.pem", NULL);
+  cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (cert));
 
@@ -312,9 +325,12 @@ test_verify_certificate_bad_before (TestVerify      *test,
   GTlsCertificateFlags errors;
   GTlsCertificate *cert;
   GError *error = NULL;
+  gchar *file;
 
   /* This is a certificate in the future */
-  cert = g_tls_certificate_new_from_file (TEST_FILE ("client-future.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/client-future.pem", NULL);
+  cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (cert));
 
@@ -331,9 +347,12 @@ test_verify_certificate_bad_expired (TestVerify      *test,
   GTlsCertificateFlags errors;
   GTlsCertificate *cert;
   GError *error = NULL;
+  gchar *file;
 
   /* This is a certificate in the future */
-  cert = g_tls_certificate_new_from_file (TEST_FILE ("client-past.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/client-past.pem", NULL);
+  cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (cert));
 
@@ -352,13 +371,18 @@ test_verify_certificate_bad_combo (TestVerify      *test,
   GSocketConnectable *identity;
   GTlsCertificateFlags errors;
   GError *error = NULL;
+  gchar *file;
 
-  cert = g_tls_certificate_new_from_file (TEST_FILE ("client-past.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/client-past.pem", NULL);
+  cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (cert));
 
   /* Unrelated cert used as certificate authority */
-  cacert = g_tls_certificate_new_from_file (TEST_FILE ("server-self.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/server-self.pem", NULL);
+  cacert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (cacert));
 
@@ -386,14 +410,21 @@ test_certificate_is_same (void)
   GTlsCertificate *two;
   GTlsCertificate *three;
   GError *error = NULL;
+  gchar *file;
 
-  one = g_tls_certificate_new_from_file (TEST_FILE ("client.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/client.pem", NULL);
+  one = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
 
-  two = g_tls_certificate_new_from_file (TEST_FILE ("client-and-key.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/client-and-key.pem", NULL);
+  two = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
 
-  three = g_tls_certificate_new_from_file (TEST_FILE ("server.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/server.pem", NULL);
+  three = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
 
   g_assert (g_tls_certificate_is_same (one, two) == TRUE);
diff --git a/tls/tests/connection.c b/tls/tests/connection.c
index 6236f83..8a03519 100644
--- a/tls/tests/connection.c
+++ b/tls/tests/connection.c
@@ -24,8 +24,6 @@
 #include <sys/types.h>
 #include <string.h>
 
-#define TEST_FILE(name) (SRCDIR "/files/" name)
-
 #define TEST_DATA "You win again, gravity!\n"
 #define TEST_DATA_LENGTH 24
 
@@ -204,8 +202,11 @@ on_incoming_connection (GSocketService     *service,
   GOutputStream *stream;
   GTlsCertificate *cert;
   GError *error = NULL;
+  gchar *file;
 
-  cert = g_tls_certificate_new_from_file (TEST_FILE ("server-and-key.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/server-and-key.pem", NULL);
+  cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
 
   test->server_connection = g_tls_server_connection_new (G_IO_STREAM (connection),
@@ -277,8 +278,11 @@ run_echo_server (GThreadedSocketService *service,
   GOutputStream *ostream;
   gssize nread, nwrote, total;
   gchar buf[128];
+  gchar *file;
 
-  cert = g_tls_certificate_new_from_file (TEST_FILE ("server-and-key.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/server-and-key.pem", NULL);
+  cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
 
   test->server_connection = g_tls_server_connection_new (G_IO_STREAM (connection),
@@ -435,8 +439,11 @@ test_verified_connection (TestConnection *test,
 {
   GIOStream *connection;
   GError *error = NULL;
+  gchar *file;
 
-  test->database = g_tls_file_database_new (TEST_FILE ("ca-roots.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/ca-roots.pem", NULL);
+  test->database = g_tls_file_database_new (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (test->database);
 
@@ -478,8 +485,11 @@ test_client_auth_connection (TestConnection *test,
   GTlsCertificate *cert;
   GTlsCertificate *peer;
   gboolean cas_changed;
+  gchar *file;
 
-  test->database = g_tls_file_database_new (TEST_FILE ("ca-roots.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/ca-roots.pem", NULL);
+  test->database = g_tls_file_database_new (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (test->database);
 
@@ -491,7 +501,9 @@ test_client_auth_connection (TestConnection *test,
 
   g_tls_connection_set_database (G_TLS_CONNECTION (test->client_connection), test->database);
 
-  cert = g_tls_certificate_new_from_file (TEST_FILE ("client-and-key.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/client-and-key.pem", NULL);
+  cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
 
   g_tls_connection_set_certificate (G_TLS_CONNECTION (test->client_connection), cert);
@@ -533,8 +545,11 @@ test_client_auth_failure (TestConnection *test,
   GIOStream *connection;
   GError *error = NULL;
   gboolean accepted_changed;
+  gchar *file;
 
-  test->database = g_tls_file_database_new (TEST_FILE ("ca-roots.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/ca-roots.pem", NULL);
+  test->database = g_tls_file_database_new (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (test->database);
 
diff --git a/tls/tests/file-database.c b/tls/tests/file-database.c
index 5b6756f..0f239b3 100644
--- a/tls/tests/file-database.c
+++ b/tls/tests/file-database.c
@@ -28,8 +28,6 @@
 #include <sys/types.h>
 #include <string.h>
 
-#define TEST_FILE(name) (SRCDIR "/files/" name)
-
 /* -----------------------------------------------------------------------------
  * CERTIFICATE VERIFY
  */
@@ -45,14 +43,19 @@ setup_verify (TestVerify     *test,
               gconstpointer   data)
 {
   GError *error = NULL;
+  gchar *file;
 
-  test->cert = g_tls_certificate_new_from_file (TEST_FILE ("server.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/server.pem", NULL);
+  test->cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (test->cert));
 
   test->identity = g_network_address_new ("server.example.com", 80);
 
-  test->database = g_tls_file_database_new (TEST_FILE ("ca.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/ca.pem", NULL);
+  test->database = g_tls_file_database_new (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_DATABASE (test->database));
 }
@@ -124,9 +127,12 @@ test_verify_database_bad_ca (TestVerify      *test,
   GTlsCertificateFlags errors;
   GTlsCertificate *cert;
   GError *error = NULL;
+  gchar *file;
 
   /* Use another certificate which isn't in our CA list */
-  cert = g_tls_certificate_new_from_file (TEST_FILE ("server-self.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/server-self.pem", NULL);
+  cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (cert));
 
@@ -146,9 +152,12 @@ test_verify_database_bad_before (TestVerify      *test,
   GTlsCertificateFlags errors;
   GTlsCertificate *cert;
   GError *error = NULL;
+  gchar *file;
 
   /* This is a certificate in the future */
-  cert = g_tls_certificate_new_from_file (TEST_FILE ("client-future.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/client-future.pem", NULL);
+  cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (cert));
 
@@ -168,9 +177,12 @@ test_verify_database_bad_expired (TestVerify      *test,
   GTlsCertificateFlags errors;
   GTlsCertificate *cert;
   GError *error = NULL;
+  gchar *file;
 
   /* This is a certificate in the future */
-  cert = g_tls_certificate_new_from_file (TEST_FILE ("client-past.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/client-past.pem", NULL);
+  cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (cert));
 
@@ -191,8 +203,11 @@ test_verify_database_bad_combo (TestVerify      *test,
   GSocketConnectable *identity;
   GTlsCertificateFlags errors;
   GError *error = NULL;
+  gchar *file;
 
-  cert = g_tls_certificate_new_from_file (TEST_FILE ("server-self.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/server-self.pem", NULL);
+  cert = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (cert));
 
@@ -267,18 +282,21 @@ test_verify_with_incorrect_root_in_chain (void)
   GTlsCertificate *chain;
   GSocketConnectable *identity;
   GTlsCertificateFlags errors;
+  gchar *file;
 
   /*
    * This database contains a single anchor certificate of:
    * C = US, O = "VeriSign, Inc.", OU = Class 3 Public Primary Certification Authority
    */
-  database = g_tls_file_database_new (TEST_FILE ("ca-verisign-sha1.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/ca-verisign-sha1.pem", NULL);
+  database = g_tls_file_database_new (file, &error);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_DATABASE (database));
 
-  ca_verisign_sha1 = g_tls_certificate_new_from_file (TEST_FILE ("ca-verisign-sha1.pem"), &error);
+  ca_verisign_sha1 = g_tls_certificate_new_from_file (file, &error);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (ca_verisign_sha1));
+  g_free (file);
 
   /*
    * This certificate chain contains a root certificate with that same issuer, public key:
@@ -288,7 +306,9 @@ test_verify_with_incorrect_root_in_chain (void)
    * verify this chain as valid, since the issuer fields and signatures should chain up
    * to the certificate in our database.
    */
-  chain = load_certificate_chain (TEST_FILE ("chain-with-verisign-md2.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/chain-with-verisign-md2.pem", NULL);
+  chain = load_certificate_chain (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (chain));
 
@@ -319,7 +339,7 @@ test_verify_with_incorrect_root_in_chain (void)
 
 typedef struct {
   GTlsDatabase *database;
-  const gchar *path;
+  gchar *path;
 } TestFileDatabase;
 
 static void
@@ -328,7 +348,7 @@ setup_file_database (TestFileDatabase *test,
 {
   GError *error = NULL;
 
-  test->path = TEST_FILE ("ca-roots.pem");
+  test->path = g_test_build_filename (G_TEST_DIST, "files/ca-roots.pem", NULL);
   test->database = g_tls_file_database_new (test->path, &error);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_DATABASE (test->database));
@@ -338,6 +358,7 @@ static void
 teardown_file_database (TestFileDatabase *test,
                         gconstpointer     data)
 {
+  g_free (test->path);
   g_assert (G_IS_TLS_DATABASE (test->database));
   g_object_add_weak_pointer (G_OBJECT (test->database),
                             (gpointer *)&test->database);
@@ -353,6 +374,7 @@ test_file_database_handle (TestFileDatabase *test,
   GTlsCertificate *check;
   GError *error = NULL;
   gchar *handle;
+  gchar *file;
 
   /*
    * ca.pem is in the ca-roots.pem that the test->database represents.
@@ -360,7 +382,9 @@ test_file_database_handle (TestFileDatabase *test,
    * is 'in' the database.
    */
 
-  certificate = g_tls_certificate_new_from_file (TEST_FILE ("ca.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/ca.pem", NULL);
+  certificate = g_tls_certificate_new_from_file (file, &error);
+  g_free (file);
   g_assert_no_error (error);
   g_assert (G_IS_TLS_CERTIFICATE (certificate));
 
@@ -403,15 +427,18 @@ test_anchors_property (void)
   GTlsDatabase *database;
   gchar *anchor_filename = NULL;
   GError *error = NULL;
+  gchar *file;
 
-  database = g_tls_file_database_new (TEST_FILE ("ca.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/ca.pem", NULL);
+  database = g_tls_file_database_new (file, &error);
   g_assert_no_error (error);
 
   g_object_get (database, "anchors", &anchor_filename, NULL);
-  g_assert_cmpstr (anchor_filename, ==, TEST_FILE ("ca.pem"));
+  g_assert_cmpstr (anchor_filename, ==, file);
   g_free (anchor_filename);
 
   g_object_unref (database);
+  g_free (file);
 }
 
 static gboolean
@@ -456,8 +483,11 @@ test_lookup_certificates_issued_by (void)
   GByteArray *issuer_dn;
   GTlsDatabase *database;
   GError *error = NULL;
+  gchar *file;
 
-  database = g_tls_file_database_new (TEST_FILE ("non-ca.pem"), &error);
+  file = g_test_build_filename (G_TEST_DIST, "files/non-ca.pem", NULL);
+  database = g_tls_file_database_new (file, &error);
+  g_free (file);
   g_assert_no_error (error);
 
   issuer_dn = g_byte_array_new ();
@@ -472,11 +502,21 @@ test_lookup_certificates_issued_by (void)
 
   g_assert_cmpuint (g_list_length (certificates), ==, 4);
 
-  g_assert (certificate_is_in_list (certificates, TEST_FILE ("client.pem")));
-  g_assert (certificate_is_in_list (certificates, TEST_FILE ("client-future.pem")));
-  g_assert (certificate_is_in_list (certificates, TEST_FILE ("client-past.pem")));
-  g_assert (certificate_is_in_list (certificates, TEST_FILE ("server.pem")));
-  g_assert (!certificate_is_in_list (certificates, TEST_FILE ("server-self.pem")));
+  file = g_test_build_filename (G_TEST_DIST, "files/client.pem", NULL);
+  g_assert (certificate_is_in_list (certificates, file));
+  g_free (file);
+  file = g_test_build_filename (G_TEST_DIST, "files/client-future.pem", NULL);
+  g_assert (certificate_is_in_list (certificates, file));
+  g_free (file);
+  file = g_test_build_filename (G_TEST_DIST, "files/client-past.pem", NULL);
+  g_assert (certificate_is_in_list (certificates, file));
+  g_free (file);
+  file = g_test_build_filename (G_TEST_DIST, "files/server.pem", NULL);
+  g_assert (certificate_is_in_list (certificates, file));
+  g_free (file);
+  file = g_test_build_filename (G_TEST_DIST, "files/server-self.pem", NULL);
+  g_assert (!certificate_is_in_list (certificates, file));
+  g_free (file);
 
   g_list_free_full (certificates, g_object_unref);
   g_object_unref (database);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]