master
go 161 lines 3.32 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package main
4
5 import (
6 "testing"
7
8 "github.com/stretchr/testify/require"
9 )
10
11 func TestMergeAsnSourcesSplitsOverlapsByPriority(t *testing.T) {
12 merged, err := mergeAsnSources([][]asnRange{
13 {
14 {
15 start: mustParseAddr(t, "10.20.0.0"),
16 end: mustParseAddr(t, "10.20.255.255"),
17 asn: 2,
18 org: "high",
19 },
20 },
21 {
22 {
23 start: mustParseAddr(t, "10.0.0.0"),
24 end: mustParseAddr(t, "10.255.255.255"),
25 asn: 1,
26 org: "low",
27 },
28 },
29 })
30 require.NoError(t, err)
31 require.Equal(t, []asnRange{
32 {
33 start: mustParseAddr(t, "10.0.0.0"),
34 end: mustParseAddr(t, "10.19.255.255"),
35 asn: 1,
36 org: "low",
37 },
38 {
39 start: mustParseAddr(t, "10.20.0.0"),
40 end: mustParseAddr(t, "10.20.255.255"),
41 asn: 2,
42 org: "high",
43 },
44 {
45 start: mustParseAddr(t, "10.21.0.0"),
46 end: mustParseAddr(t, "10.255.255.255"),
47 asn: 1,
48 org: "low",
49 },
50 }, merged)
51 }
52
53 func TestMergeGeoSourcesCoalescesAdjacentIntervals(t *testing.T) {
54 merged, err := mergeGeoSources([][]geoRange{
55 {
56 {
57 start: mustParseAddr(t, "1.0.0.0"),
58 end: mustParseAddr(t, "1.0.0.127"),
59 country: "US",
60 state: "California",
61 city: "Mountain View",
62 },
63 {
64 start: mustParseAddr(t, "1.0.0.128"),
65 end: mustParseAddr(t, "1.0.0.255"),
66 country: "US",
67 state: "California",
68 city: "Mountain View",
69 },
70 },
71 })
72 require.NoError(t, err)
73 require.Equal(t, []geoRange{
74 {
75 start: mustParseAddr(t, "1.0.0.0"),
76 end: mustParseAddr(t, "1.0.0.255"),
77 country: "US",
78 state: "California",
79 city: "Mountain View",
80 },
81 }, merged)
82 }
83
84 func TestMergeGeoSourcesKeepsHigherPriorityCityDetail(t *testing.T) {
85 merged, err := mergeGeoSources([][]geoRange{
86 {
87 {
88 start: mustParseAddr(t, "8.8.8.0"),
89 end: mustParseAddr(t, "8.8.8.255"),
90 country: "US",
91 state: "California",
92 city: "Mountain View",
93 latitude: 37.422,
94 longitude: -122.085,
95 hasLocation: true,
96 },
97 },
98 {
99 {
100 start: mustParseAddr(t, "8.8.8.0"),
101 end: mustParseAddr(t, "8.8.8.255"),
102 country: "US",
103 },
104 },
105 })
106 require.NoError(t, err)
107 require.Equal(t, []geoRange{
108 {
109 start: mustParseAddr(t, "8.8.8.0"),
110 end: mustParseAddr(t, "8.8.8.255"),
111 country: "US",
112 state: "California",
113 city: "Mountain View",
114 latitude: 37.422,
115 longitude: -122.085,
116 hasLocation: true,
117 },
118 }, merged)
119 }
120
121 func TestMergeAsnSourcesHandlesIPv6Independently(t *testing.T) {
122 merged, err := mergeAsnSources([][]asnRange{
123 {
124 {
125 start: mustParseAddr(t, "2001:db8::100"),
126 end: mustParseAddr(t, "2001:db8::1ff"),
127 asn: 65001,
128 org: "high",
129 },
130 },
131 {
132 {
133 start: mustParseAddr(t, "2001:db8::"),
134 end: mustParseAddr(t, "2001:db8::ffff"),
135 asn: 65000,
136 org: "low",
137 },
138 },
139 })
140 require.NoError(t, err)
141 require.Equal(t, []asnRange{
142 {
143 start: mustParseAddr(t, "2001:db8::"),
144 end: mustParseAddr(t, "2001:db8::ff"),
145 asn: 65000,
146 org: "low",
147 },
148 {
149 start: mustParseAddr(t, "2001:db8::100"),
150 end: mustParseAddr(t, "2001:db8::1ff"),
151 asn: 65001,
152 org: "high",
153 },
154 {
155 start: mustParseAddr(t, "2001:db8::200"),
156 end: mustParseAddr(t, "2001:db8::ffff"),
157 asn: 65000,
158 org: "low",
159 },
160 }, merged)
161 }