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 };