025-device_id.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "catch.hpp"
  2. #include "test-utils.h"
  3. #include "model/device_id.h"
  4. #include "proto/luhn32.h"
  5. #include "utils/tls.h"
  6. using namespace syncspirit::test;
  7. using namespace syncspirit::utils;
  8. using namespace syncspirit::model;
  9. using namespace syncspirit::proto;
  10. namespace fs = boost::filesystem;
  11. using l32 = luhn32;
  12. TEST_CASE("luhn32", "[model]") {
  13. REQUIRE(l32::calculate("WG2IWWALPC2HZ") == 'H');
  14. REQUIRE(l32::calculate("KHQNO2S5QSILR") == 'K');
  15. REQUIRE(l32::validate("KHQNO2S5QSILRK"));
  16. REQUIRE(!l32::validate("KHQNO2S5QSILR"));
  17. REQUIRE(l32::validate("WG2IWWALPC2HZH"));
  18. REQUIRE(!l32::validate("WG2IWWALPC2HZ"));
  19. REQUIRE(l32::validate("MFZWI3DBONSGYC"));
  20. REQUIRE(!l32::validate("MFZWI3DBONSGY"));
  21. }
  22. TEST_CASE("device_id", "[model]") {
  23. auto cert_path = file_path("/data/sample-cert.pem");
  24. auto key_path = file_path("/data/sample-key.pem");
  25. auto load_result = load_pair(cert_path.c_str(), key_path.c_str());
  26. REQUIRE(load_result);
  27. auto &pair = load_result.value();
  28. auto opt_device_id = device_id_t::from_cert(pair.cert_data);
  29. REQUIRE(opt_device_id);
  30. auto &device_id = opt_device_id.value();
  31. auto expected = std::string("KHQNO2S-5QSILRK-YX4JZZ4-7L77APM-QNVGZJT-EKU7IFI-PNEPBMY-4MXFMQD");
  32. REQUIRE(device_id.get_value().size() == expected.size());
  33. REQUIRE(device_id.get_value() == expected);
  34. CHECK(device_id.get_short() == "KHQNO2S");
  35. auto opt = device_id_t::from_string("KHQNO2S-5QSILRK-YX4JZZ4-7L77APM-QNVGZJT-EKU7IFI-PNEPBMY-4MXFMQD");
  36. REQUIRE((bool)opt);
  37. CHECK(opt.value() == device_id);
  38. opt = device_id_t::from_string("KHQNO2S-5QSILRE-YX4JZZ4-7L77APM-QNVGZJT-EKU7IFI-PNEPBMY-4MXFMQD");
  39. REQUIRE(!opt);
  40. opt = device_id_t::from_sha256(device_id.get_sha256());
  41. REQUIRE((bool)opt);
  42. CHECK(opt.value() == device_id);
  43. CHECK(opt.value() != local_device_id);
  44. }