test_process_descs.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /* Copyright (c) 2019, The Tor Project, Inc. */
  2. /* See LICENSE for licensing information */
  3. #include "orconfig.h"
  4. #include "core/or/or.h"
  5. #include "feature/dirauth/process_descs.h"
  6. #include "test/test.h"
  7. static void
  8. test_process_descs_versions(void *arg)
  9. {
  10. (void)arg;
  11. struct {
  12. const char *version;
  13. bool should_reject;
  14. } cases[] = {
  15. // a very old version: reject.
  16. { "Tor 0.1.2.3-alpha", true },
  17. // a non-tor program: don't reject.
  18. { "Wombat 0.1.2.3-alpha", false },
  19. // a slightly old version: reject
  20. { "Tor 0.2.9.4-alpha", true },
  21. // a slightly old version: just new enough to support.
  22. { "Tor 0.2.9.5-alpha", false },
  23. // a newer 0.2.9 version: supported.
  24. { "Tor 0.2.9.100", false },
  25. // some unsupported versions: reject.
  26. { "Tor 0.3.0.0-alpha-dev", true },
  27. { "Tor 0.3.0.2-alpha", true },
  28. { "Tor 0.3.0.5", true },
  29. { "Tor 0.3.1.4", true },
  30. { "Tor 0.3.2.4", true },
  31. { "Tor 0.3.3.4", true },
  32. { "Tor 0.3.4.1-alpha", true },
  33. { "Tor 0.3.4.100", true },
  34. { "Tor 0.3.5.1-alpha", true },
  35. { "Tor 0.3.5.6-rc", true},
  36. // new enough to be supported
  37. { "Tor 0.3.5.7", false },
  38. { "Tor 0.3.5.8", false },
  39. { "Tor 0.4.0.1-alpha", false },
  40. { "Tor 0.4.1.5", false },
  41. // Very far in the future
  42. { "Tor 100.100.1.5", false },
  43. };
  44. size_t n_cases = ARRAY_LENGTH(cases);
  45. for (unsigned i = 0; i < n_cases; ++i) {
  46. const char *msg = NULL;
  47. bool rejected = dirserv_rejects_tor_version(cases[i].version, &msg);
  48. tt_int_op(rejected, OP_EQ, cases[i].should_reject);
  49. tt_int_op(msg == NULL, OP_EQ, rejected == false);
  50. }
  51. done:
  52. ;
  53. }
  54. #define T(name,flags) \
  55. { #name, test_process_descs_##name, (flags), NULL, NULL }
  56. struct testcase_t process_descs_tests[] = {
  57. T(versions,0),
  58. END_OF_TESTCASES
  59. };