Browse Source

Fix unit tests to work after own_link_cert assertion

The assert_nonfatal() I had added was triggered by some of the code
that tested the pre-ed case of CERTS cell generation.
Nick Mathewson 6 years ago
parent
commit
91f49bc0f0
3 changed files with 14 additions and 1 deletions
  1. 8 1
      src/or/connection_or.c
  2. 4 0
      src/or/connection_or.h
  3. 2 0
      src/test/test_link_handshake.c

+ 8 - 1
src/or/connection_or.c

@@ -2270,6 +2270,12 @@ add_ed25519_cert(certs_cell_t *certs_cell,
                              cert->encoded, cert->encoded_len);
 }
 
+#ifdef TOR_UNIT_TESTS
+int certs_cell_ed25519_disabled_for_testing = 0;
+#else
+#define certs_cell_ed25519_disabled_for_testing 0
+#endif
+
 /** Send a CERTS cell on the connection <b>conn</b>.  Return 0 on success, -1
  * on failure. */
 int
@@ -2320,7 +2326,8 @@ connection_or_send_certs_cell(or_connection_t *conn)
                    CERTTYPE_ED_ID_SIGN,
                    get_master_signing_key_cert());
   if (conn_in_server_mode) {
-    tor_assert_nonfatal(conn->handshake_state->own_link_cert);
+    tor_assert_nonfatal(conn->handshake_state->own_link_cert ||
+                        certs_cell_ed25519_disabled_for_testing);
     add_ed25519_cert(certs_cell,
                      CERTTYPE_ED_SIGN_LINK,
                      conn->handshake_state->own_link_cert);

+ 4 - 0
src/or/connection_or.h

@@ -112,5 +112,9 @@ void var_cell_free(var_cell_t *cell);
 
 void connection_or_group_set_badness_(smartlist_t *group, int force);
 
+#ifdef TOR_UNIT_TESTS
+extern int certs_cell_ed25519_disabled_for_testing;
+#endif
+
 #endif
 

+ 2 - 0
src/test/test_link_handshake.c

@@ -149,6 +149,8 @@ test_link_handshake_certs_ok(void *arg)
     /* If we're making a CERTS cell for an ed handshake, let's make sure we
      * have some Ed25519 certificates and keys. */
     init_mock_ed_keys(key2);
+  } else {
+    certs_cell_ed25519_disabled_for_testing = 1;
   }
 
   /* c1 has started_here == 1 */