Skip to content

Commit cc9d2b2

Browse files
committed
update tests & fix bool reader
1 parent 7c52817 commit cc9d2b2

File tree

4 files changed

+97
-4
lines changed

4 files changed

+97
-4
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,7 @@ testdata/GeoIP2-ISP.mmdb
55
testdata/GeoLite2-ASN.mmdb
66
testdata/GeoLite2-City.mmdb
77
testdata/GeoLite2-Country.mmdb
8+
9+
testdata/GeoIP2-Anonymous-IP-Test.mmdb
10+
testdata/GeoIP2-Domain-Test.mmdb
11+
testdata/GeoIP2-Enterprise-Test.mmdb

common.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,25 @@ func readBool(buffer []byte, offset uint) (bool, uint, error) {
173173
if err != nil {
174174
return false, 0, err
175175
}
176-
if dataType != dataTypeBool {
176+
switch dataType {
177+
case dataTypeBool:
178+
return size != 0, offset, nil
179+
case dataTypePointer:
180+
pointer, newOffset, err := readPointer(buffer, size, offset)
181+
if err != nil {
182+
return false, 0, err
183+
}
184+
dataType, size, _, err := readControl(buffer, pointer)
185+
if err != nil {
186+
return false, 0, err
187+
}
188+
if dataType != dataTypeBool {
189+
return false, 0, errors.New("invalid bool pointer type: " + strconv.Itoa(int(dataType)))
190+
}
191+
return size != 0, newOffset, nil
192+
default:
177193
return false, 0, errors.New("invalid bool type: " + strconv.Itoa(int(dataType)))
178194
}
179-
return size != 0, offset, nil
180195
}
181196

182197
func readString(buffer []byte, offset uint) (string, uint, error) {

geoip2_test.go

Lines changed: 68 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,75 @@ func TestReader(t *testing.T) {
6969
if err != nil {
7070
t.Fatal(err)
7171
}
72+
}
73+
74+
func TestDomain(t *testing.T) {
75+
reader, err := NewDomainReaderFromFile("testdata/GeoIP2-Domain-Test.mmdb")
76+
if err != nil {
77+
t.Fatal(err)
78+
}
79+
record, err := reader.Lookup(net.ParseIP("1.2.0.0"))
80+
if err != nil {
81+
t.Fatal(err)
82+
}
83+
if record != "maxmind.com" {
84+
t.Fatal()
85+
}
86+
}
7287

73-
// TODO: GeoIP2-Anonymous-IP
74-
// TODO: GeoIP2-Domain
88+
func TestAnonymousIP(t *testing.T) {
89+
reader, err := NewAnonymousIPReaderFromFile("testdata/GeoIP2-Anonymous-IP-Test.mmdb")
90+
if err != nil {
91+
t.Fatal(err)
92+
}
93+
record, err := reader.Lookup(net.ParseIP("1.2.0.0"))
94+
if err != nil {
95+
t.Fatal(err)
96+
}
97+
if record.IsAnonymous != true {
98+
t.Fatal()
99+
}
100+
if record.IsAnonymousVPN != true {
101+
t.Fatal()
102+
}
103+
if record.IsHostingProvider != false {
104+
t.Fatal()
105+
}
106+
if record.IsPublicProxy != false {
107+
t.Fatal()
108+
}
109+
if record.IsTorExitNode != false {
110+
t.Fatal()
111+
}
112+
}
113+
114+
func TestEnterprise(t *testing.T) {
115+
reader, err := NewEnterpriseReaderFromFile("testdata/GeoIP2-Enterprise-Test.mmdb")
116+
if err != nil {
117+
t.Fatal(err)
118+
}
119+
record, err := reader.Lookup(net.ParseIP("74.209.24.0"))
120+
if err != nil {
121+
t.Fatal(err)
122+
}
123+
if record.City.Confidence != 11 {
124+
t.Fatal()
125+
}
126+
if record.Traits.AutonomousSystemNumber != 14671 {
127+
t.Fatal()
128+
}
129+
if record.Traits.AutonomousSystemOrganization != "FairPoint Communications" {
130+
t.Fatal()
131+
}
132+
if record.Traits.ConnectionType != "Cable/DSL" {
133+
t.Fatal()
134+
}
135+
if record.Traits.Domain != "frpt.net" {
136+
t.Fatal()
137+
}
138+
if record.Traits.StaticIPScore != 0.34 {
139+
t.Fatal()
140+
}
75141
}
76142

77143
func TestBench(t *testing.T) {

reader_city.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,11 @@ func NewCityReaderFromFile(filename string) (*CityReader, error) {
105105
}
106106
return NewCityReader(buffer)
107107
}
108+
109+
func NewEnterpriseReader(buffer []byte) (*CityReader, error) {
110+
return NewCityReader(buffer)
111+
}
112+
113+
func NewEnterpriseReaderFromFile(filename string) (*CityReader, error) {
114+
return NewCityReaderFromFile(filename)
115+
}

0 commit comments

Comments
 (0)