tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

test_process_descs.c (2521B)


      1 /* Copyright (c) 2019-2021, The Tor Project, Inc. */
      2 /* See LICENSE for licensing information */
      3 
      4 #include "orconfig.h"
      5 
      6 #include "core/or/or.h"
      7 #include "feature/dirauth/process_descs.h"
      8 
      9 #include "test/test.h"
     10 
     11 static void
     12 test_process_descs_versions(void *arg)
     13 {
     14  (void)arg;
     15  struct {
     16    const char *version;
     17    bool should_reject;
     18  } cases[] = {
     19    // a very old version: reject.
     20    { "Tor 0.1.2.3-alpha", true },
     21    // a non-tor program: don't reject.
     22    { "Wombat 0.1.2.3-alpha", false },
     23    // some unsupported versions: reject.
     24    { "Tor 0.2.9.100", true },
     25    { "Tor 0.2.9.4-alpha", true },
     26    { "Tor 0.2.9.5-alpha", true },
     27    { "Tor 0.3.0.0-alpha-dev", true },
     28    { "Tor 0.3.0.2-alpha", true },
     29    { "Tor 0.3.0.5", true },
     30    { "Tor 0.3.1.4", true },
     31    { "Tor 0.3.2.4", true },
     32    { "Tor 0.3.3.4", true },
     33    { "Tor 0.3.4.1-alpha", true },
     34    { "Tor 0.3.4.100", true },
     35    { "Tor 0.3.5.1-alpha", true },
     36    { "Tor 0.3.5.6-rc", true},
     37    { "Tor 0.3.5.7", true },
     38    { "Tor 0.3.5.8", true },
     39    { "Tor 0.4.0.1-alpha", true },
     40    { "Tor 0.4.0.5", true },
     41    { "Tor 0.4.1.1-alpha", true },
     42    { "Tor 0.4.1.4-rc", true },
     43    { "Tor 0.4.1.5", true },
     44    { "Tor 0.4.2.1-alpha", true },
     45    { "Tor 0.4.2.4-rc", true },
     46    { "Tor 0.4.2.5", true },
     47    { "Tor 0.4.3.0-alpha-dev", true },
     48    { "Tor 0.4.3.8", true },
     49    { "Tor 0.4.4.9", true },
     50    { "Tor 0.4.5.5-rc", true },
     51    { "Tor 0.4.5.6", true },
     52    { "Tor 0.4.5.15", true },
     53    { "Tor 0.4.6.0-alpha-dev", true },
     54    { "Tor 0.4.6.1-alpha", true },
     55    { "Tor 0.4.6.5", true },
     56    { "Tor 0.4.6.50", true }, /* Non existing one in the 0.4.6 series */
     57    { "Tor 0.4.7.0-alpha-dev", true },
     58    { "Tor 0.4.7.3-alpha", true },
     59    { "Tor 0.4.7.12", true },
     60 
     61    /* The 0.4.8.x series is supported. */
     62    { "Tor 0.4.8.0-alpha-dev", false },
     63    { "Tor 0.4.8.2-alpha", false },
     64    { "Tor 0.4.8.3-rc", false },
     65    { "Tor 0.4.8.12", false },
     66 
     67    // Very far in the future
     68    { "Tor 100.100.1.5", false },
     69  };
     70  size_t n_cases = ARRAY_LENGTH(cases);
     71 
     72  for (unsigned i = 0; i < n_cases; ++i) {
     73    const char *msg = NULL;
     74    bool rejected = dirserv_rejects_tor_version(cases[i].version, &msg);
     75    tt_int_op(rejected, OP_EQ, cases[i].should_reject);
     76    tt_int_op(msg == NULL, OP_EQ, rejected == false);
     77  }
     78 
     79 done:
     80  ;
     81 }
     82 
     83 #define T(name,flags)                                   \
     84  { #name, test_process_descs_##name, (flags), NULL, NULL }
     85 
     86 struct testcase_t process_descs_tests[] = {
     87  T(versions,0),
     88  END_OF_TESTCASES
     89 };