1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
require 'test_helper'
require 'ipaddress/mongoid'
class MongoidTest < Minitest::Test
def setup
@valid_host4 = "172.16.10.1"
@valid_host6 = "2001:0db8:0000:0000:0008:0800:200c:417a"
@valid_host6_compressed = IPAddress::IPv6.compress(@valid_host6)
@valid_network4 = "#{@valid_host4}/24"
@valid_network6 = "#{@valid_host6}/96"
@valid_network6_compressed = "#{@valid_host6_compressed}/96"
@host4 = IPAddress.parse(@valid_host4)
@host6 = IPAddress.parse(@valid_host6)
@network4 = IPAddress.parse(@valid_network4)
@network6 = IPAddress.parse(@valid_network6)
@invalid_values = [nil, "", "invalid"]
end
def test_mongoize
# Instance method should be delegated to class method
assert_equal @host4.mongoize, IPAddress.mongoize(@host4)
assert_equal @network4.mongoize, IPAddress.mongoize(@network4)
# Hosts addresses should be stored without prefix
assert_equal @valid_host4, IPAddress.mongoize(@host4)
assert_equal @valid_host6, IPAddress.mongoize(@host6)
assert_equal @valid_host4, IPAddress.mongoize("#{@host4}/32")
assert_equal @valid_host6, IPAddress.mongoize("#{@host6}/128")
# Network addresses should be stored with their prefix
assert_equal @valid_network4, IPAddress.mongoize(@network4)
assert_equal @valid_network6, IPAddress.mongoize(@network6)
# IPv6 addresses should always be stored uncompressed
assert_equal @valid_host6, IPAddress.mongoize(@valid_host6_compressed)
assert_equal @valid_network6, IPAddress.mongoize(@valid_network6_compressed)
@invalid_values.each do |invalid_value|
# Invalid addresses should serialize to nil
assert_nil IPAddress.mongoize(invalid_value)
end
end
def test_demongoize
# Valid stored values should be loaded with expected IPAddress type
assert_instance_of IPAddress::IPv4, IPAddress.demongoize(@valid_host4)
assert_instance_of IPAddress::IPv6, IPAddress.demongoize(@valid_host6)
assert_instance_of IPAddress::IPv4, IPAddress.demongoize(@valid_network4)
assert_instance_of IPAddress::IPv6, IPAddress.demongoize(@valid_network6)
# Valid stored values should be loaded as the original IPAddress object
assert_equal @host4, IPAddress.demongoize(@valid_host4)
assert_equal @host6, IPAddress.demongoize(@valid_host6)
assert_equal @network4, IPAddress.demongoize(@valid_network4)
assert_equal @network6, IPAddress.demongoize(@valid_network6)
@invalid_values.each do |invalid_value|
# Invalid stored value should be loaded as nil
assert_nil IPAddress.demongoize(invalid_value)
end
end
def test_evolve
# evolve should delegate to mongoize
assert_equal IPAddress.mongoize(@valid_host4), IPAddress.evolve(@valid_host4)
assert_equal IPAddress.mongoize(@valid_network4), IPAddress.evolve(@valid_network4)
end
end
|