A Python port of the Invisible Internet Project (I2P)
1"""Tests for RoutingKeyGenerator."""
2
3import os
4from datetime import datetime, timezone
5
6from i2p_netdb.routing_key import RoutingKeyGenerator
7
8
9def test_deterministic_same_date():
10 rkg = RoutingKeyGenerator()
11 key = os.urandom(32)
12 rk1 = rkg.get_routing_key(key)
13 rk2 = rkg.get_routing_key(key)
14 assert rk1 == rk2
15 assert len(rk1) == 32
16
17
18def test_different_keys_different_routing():
19 rkg = RoutingKeyGenerator()
20 rk1 = rkg.get_routing_key(b"\x01" * 32)
21 rk2 = rkg.get_routing_key(b"\x02" * 32)
22 assert rk1 != rk2
23
24
25def test_mod_data_format():
26 rkg = RoutingKeyGenerator()
27 # Should be YYYY-MM-DD format
28 mod = rkg.mod_data
29 assert len(mod) == 10
30 # Verify parseable as date
31 datetime.strptime(mod.decode("ascii"), "%Y-%m-%d")
32
33
34def test_generate_returns_false_same_day():
35 rkg = RoutingKeyGenerator()
36 # Already initialized with today's date
37 assert rkg.generate_date_based_mod_data() is False
38
39
40def test_time_till_midnight_positive():
41 rkg = RoutingKeyGenerator()
42 ttm = rkg.get_time_till_midnight_utc()
43 assert 0 < ttm <= 86400
44
45
46def test_last_changed_set():
47 rkg = RoutingKeyGenerator()
48 assert rkg.last_changed > 0