ffi-geoip 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,61 @@
1
+ # encoding: UTF-8
2
+
3
+ $: << File.dirname(__FILE__)
4
+ require 'test_helper'
5
+
6
+ class GeoIPOrganizationTest < MiniTest::Test
7
+ ORGANIZATION = {
8
+ :name => "AT&T Worldnet Services"
9
+ }
10
+
11
+ ORGANIZATION_IP = '12.87.118.0'
12
+
13
+ def assert_look_up(db, expected = ORGANIZATION, lookup = ORGANIZATION_IP)
14
+ hash = db.look_up(lookup)
15
+ assert_kind_of(Hash, hash)
16
+ assert_equal(expected, hash)
17
+ end
18
+
19
+ def test_construction_default
20
+ db = GeoIP::ISP.new(ISP_DB)
21
+ assert_raises_type_error(db)
22
+ assert_look_up(db)
23
+ end
24
+
25
+ def test_construction_default
26
+ db = GeoIP::Organization.new(ORG_DB)
27
+ assert_raises_type_error(db)
28
+ assert_look_up(db)
29
+ end
30
+
31
+ def test_construction_index
32
+ db = GeoIP::Organization.new(ORG_DB, :index)
33
+ assert_raises_type_error(db)
34
+ assert_look_up(db)
35
+ end
36
+
37
+ def test_construction_filesystem
38
+ db = GeoIP::Organization.new(ORG_DB, :filesystem)
39
+ assert_raises_type_error(db)
40
+ assert_look_up(db)
41
+ end
42
+
43
+ def test_construction_memory
44
+ db = GeoIP::Organization.new(ORG_DB, :memory)
45
+ assert_raises_type_error(db)
46
+ assert_look_up(db)
47
+ end
48
+
49
+ def test_construction_filesystem_check
50
+ db = GeoIP::Organization.new(ORG_DB, :filesystem, true)
51
+ assert_raises_type_error(db)
52
+ assert_look_up(db)
53
+ end
54
+
55
+ def test_bad_db_file
56
+ assert_raises(Errno::ENOENT) do
57
+ GeoIP::Organization.new('/supposed-to-fail')
58
+ end
59
+ end
60
+ end
61
+
@@ -0,0 +1,53 @@
1
+ # encoding: UTF-8
2
+
3
+ if RUBY_VERSION >= '1.9'
4
+ require 'simplecov'
5
+
6
+ SimpleCov.command_name('Unit Tests')
7
+ SimpleCov.merge_timeout(3600)
8
+ SimpleCov.start do
9
+ add_filter '/test/'
10
+ end
11
+ end
12
+
13
+ require 'rubygems'
14
+ require 'minitest/autorun'
15
+ require 'minitest/reporters' if RUBY_VERSION >= '1.9'
16
+
17
+ if ENV['USE_BINARY']
18
+ Object.send(:remove_const, :GeoIP)
19
+ require 'geoip'
20
+ else
21
+ require File.join(File.dirname(__FILE__), %w{ .. lib ffi-geoip })
22
+ end
23
+
24
+ puts "Ruby version #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} - #{RbConfig::CONFIG['RUBY_INSTALL_NAME']}"
25
+ puts "ffi version #{Gem.loaded_specs['ffi'].version}" if Gem.loaded_specs['ffi']
26
+ puts "ffi-geoip version #{GeoIP::VERSION}" if defined?(GeoIP::VERSION)
27
+ puts "GeoIP version #{GeoIP.version}" if GeoIP.respond_to?(:version)
28
+
29
+ TEST_DIR = File.dirname(__FILE__)
30
+ DATA_DIR = File.join(TEST_DIR, 'data')
31
+
32
+ COUNTRY_DB = ENV.fetch('COUNTRY', File.join(DATA_DIR, 'GeoIP.dat'))
33
+ CITY_DB = ENV.fetch('CITY', File.join(DATA_DIR, 'GeoIPCity.dat'))
34
+ ISP_DB = ENV.fetch('ISP', File.join(DATA_DIR, 'GeoIPISP.dat'))
35
+ ORG_DB = ENV.fetch('ORG', File.join(DATA_DIR, 'GeoIPOrg.dat'))
36
+
37
+ if RUBY_VERSION >= '1.9'
38
+ MiniTest::Reporters.use!(MiniTest::Reporters::SpecReporter.new)
39
+ end
40
+
41
+ class Minitest::Test
42
+ def assert_look_up(db, addr, field, value)
43
+ h = db.look_up(addr)
44
+ assert_equal value, h[field]
45
+ h
46
+ end
47
+
48
+ def assert_raises_type_error(db)
49
+ assert_raises(TypeError) do
50
+ db.look_up(nil)
51
+ end
52
+ end
53
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ffi-geoip
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - J Smith
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ffi
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0
27
+ description: An ffi wrapper for GeoIP
28
+ email: dark.panda@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files:
32
+ - README.rdoc
33
+ files:
34
+ - ".gitignore"
35
+ - ".travis.yml"
36
+ - Gemfile
37
+ - Guardfile
38
+ - MIT-LICENSE
39
+ - README.rdoc
40
+ - Rakefile
41
+ - ffi-geoip.gemspec
42
+ - lib/ffi-geoip.rb
43
+ - lib/ffi-geoip/base.rb
44
+ - lib/ffi-geoip/city.rb
45
+ - lib/ffi-geoip/country.rb
46
+ - lib/ffi-geoip/isp.rb
47
+ - lib/ffi-geoip/organization.rb
48
+ - lib/ffi-geoip/record.rb
49
+ - lib/ffi-geoip/tools.rb
50
+ - lib/ffi-geoip/version.rb
51
+ - test/city_tests.rb
52
+ - test/country_tests.rb
53
+ - test/data/GeoIP.dat
54
+ - test/data/GeoIPASNum.dat
55
+ - test/data/GeoIPCity.dat
56
+ - test/data/GeoIPDistance.dat
57
+ - test/data/GeoIPDomain.dat
58
+ - test/data/GeoIPISP.dat
59
+ - test/data/GeoIPNetSpeedCell.dat
60
+ - test/data/GeoIPOrg.dat
61
+ - test/data/GeoIPUserType.dat
62
+ - test/data/GeoLiteCityv6.dat
63
+ - test/geoip_tests.rb
64
+ - test/isp_tests.rb
65
+ - test/organization_tests.rb
66
+ - test/test_helper.rb
67
+ homepage: http://github.com/dark-panda/ffi-geoip
68
+ licenses:
69
+ - MIT
70
+ metadata: {}
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubyforge_project:
87
+ rubygems_version: 2.2.5
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: An ffi wrapper for GeoIP
91
+ test_files:
92
+ - test/city_tests.rb
93
+ - test/country_tests.rb
94
+ - test/data/GeoIP.dat
95
+ - test/data/GeoIPASNum.dat
96
+ - test/data/GeoIPCity.dat
97
+ - test/data/GeoIPDistance.dat
98
+ - test/data/GeoIPDomain.dat
99
+ - test/data/GeoIPISP.dat
100
+ - test/data/GeoIPNetSpeedCell.dat
101
+ - test/data/GeoIPOrg.dat
102
+ - test/data/GeoIPUserType.dat
103
+ - test/data/GeoLiteCityv6.dat
104
+ - test/geoip_tests.rb
105
+ - test/isp_tests.rb
106
+ - test/organization_tests.rb
107
+ - test/test_helper.rb