Просмотр исходного кода

prop224 tests: Better HS address tests.

George Kadianakis 6 лет назад
Родитель
Сommit
e70341deb7
3 измененных файлов с 28 добавлено и 2 удалено
  1. 1 1
      src/or/hs_service.c
  2. 3 0
      src/or/hs_service.h
  3. 24 1
      src/test/test_hs_common.c

+ 1 - 1
src/or/hs_service.c

@@ -848,7 +848,7 @@ register_all_services(void)
 
 /* Write the onion address of a given service to the given filename fname_ in
  * the service directory. Return 0 on success else -1 on error. */
-static int
+STATIC int
 write_address_to_file(const hs_service_t *service, const char *fname_)
 {
   int ret = -1;

+ 3 - 0
src/or/hs_service.h

@@ -335,6 +335,9 @@ check_state_line_for_service_rev_counter(const char *state_line,
                                     const ed25519_public_key_t *blinded_pubkey,
                                     int *service_found_out);
 
+STATIC int
+write_address_to_file(const hs_service_t *service, const char *fname_);
+
 #endif /* TOR_UNIT_TESTS */
 
 #endif /* HS_SERVICE_PRIVATE */

+ 24 - 1
src/test/test_hs_common.c

@@ -7,6 +7,7 @@
  */
 
 #define HS_COMMON_PRIVATE
+#define HS_SERVICE_PRIVATE
 
 #include "test.h"
 #include "test_helpers.h"
@@ -14,6 +15,7 @@
 #include "hs_test_helpers.h"
 
 #include "hs_common.h"
+#include "hs_service.h"
 #include "config.h"
 
 /** Test the validation of HS v3 addresses */
@@ -70,6 +72,18 @@ test_validate_address(void *arg)
   ;
 }
 
+static int
+mock_write_str_to_file(const char *path, const char *str, int bin)
+{
+  (void)bin;
+  tt_str_op(path, OP_EQ, "/double/five/squared");
+  tt_str_op(str, OP_EQ,
+           "ijbeeqscijbeeqscijbeeqscijbeeqscijbeeqscijbeeqscijbezhid.onion\n");
+
+ done:
+  return 0;
+}
+
 /** Test building HS v3 onion addresses */
 static void
 test_build_address(void *arg)
@@ -77,9 +91,12 @@ test_build_address(void *arg)
   int ret;
   char onion_addr[HS_SERVICE_ADDR_LEN_BASE32 + 1];
   ed25519_public_key_t pubkey;
+  hs_service_t *service = NULL;
 
   (void) arg;
 
+  MOCK(write_str_to_file, mock_write_str_to_file);
+
   /* The following has been created with hs_build_address.py script that
    * follows proposal 224 specification to build an onion address. */
   static const char *test_addr =
@@ -94,8 +111,14 @@ test_build_address(void *arg)
   ret = hs_address_is_valid(onion_addr);
   tt_int_op(ret, OP_EQ, 1);
 
+  service = tor_malloc_zero(sizeof(hs_service_t));
+  memcpy(service->onion_address, onion_addr, sizeof(service->onion_address));
+  tor_asprintf(&service->config.directory_path, "/double/five");
+  ret = write_address_to_file(service, "squared");
+  tt_int_op(ret, OP_EQ, 0);
+
  done:
-  ;
+  hs_service_free(service);
 }
 
 /** Test that our HS time period calculation functions work properly */