legitbot 1.7.1 → 1.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 929689d8f5882d4c13a3d03175a2a6197f11ce04c6512caa4312dc67a927e8a1
4
- data.tar.gz: 809f94a123ca7f43b8ad0fda1421ee01e442b42a1c8e28e2e12c0e23ad4d0ca5
3
+ metadata.gz: 1eb23292d664c393d5b39a9d7a69b0469dbf326f1c5ef2cda2236cd16baf6eda
4
+ data.tar.gz: fefe1fd716e81ff8e0f38950be0790006cc84bb9b9c4b1a53997331010efc861
5
5
  SHA512:
6
- metadata.gz: e40267f56b07a22f719f91a8b2c1b43b4e8b81e599b8aef854a72c2eba804d7c5ffecf1916fdf812fc6c772cc7aa854878f4939ba46550001b7f6a4b351f855e
7
- data.tar.gz: edf9fc3ba2b87c20cec3b87d08d20c3c304702fcd81098a41d43f4b40d747eac79197251069db0453213adfd10d3d714d42df99bedeb2d5072d5fe66520531d3
6
+ metadata.gz: 7d156a7574284f8b401f6bcf78bb3f005f6f8c4ad11e67c9f30b515ed08d7855481052716cc2dd60f1eb33f19702b5b6bf8a5bd42b56c7907bc24d791cc4fa63
7
+ data.tar.gz: b33800ac92eaa874a4b74372281b3d512f34b6ab18e7743ef9857237508188ab92fdca1b554a0307397cf63d898f69c23f02462adbe8d52e0a58011cbda9ec4f
@@ -11,7 +11,7 @@ jobs:
11
11
  strategy:
12
12
  fail-fast: false
13
13
  matrix:
14
- ruby: [ jruby, 2.6, 2.7, 3.0 ]
14
+ ruby: [ jruby, 2.7, 3.0, 3.1, 3.2 ]
15
15
 
16
16
  steps:
17
17
  - uses: actions/checkout@v3
@@ -32,6 +32,10 @@ jobs:
32
32
  bundle install --jobs 4 --retry 3
33
33
  - name: Run tests
34
34
  run: bundle exec rake test
35
+ - name: Upload coverage
36
+ uses: codecov/codecov-action@v3
37
+ with:
38
+ files: coverage/coverage.xml
35
39
 
36
40
  lint:
37
41
  needs: test
data/.gitignore CHANGED
@@ -2,6 +2,7 @@ Gemfile.lock
2
2
  .bundle
3
3
  *.gem
4
4
  *.gemfile.lock
5
+ /coverage
5
6
  /pkg
6
7
  /tags
7
8
  /vendor
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Legitbot ![](https://github.com/alaz/legitbot/workflows/build/badge.svg) ![](https://badge.fury.io/rb/legitbot.svg)
1
+ # Legitbot ![](https://github.com/alaz/legitbot/workflows/build/badge.svg) ![](https://badge.fury.io/rb/legitbot.svg) ![codecov](https://codecov.io/gh/alaz/legitbot/branch/master/graph/badge.svg?token=LKtJ3E9VUl)
2
2
 
3
3
  Ruby gem to make sure that an IP really belongs to a bot, typically a search
4
4
  engine.
data/codecov.yml ADDED
@@ -0,0 +1,15 @@
1
+ coverage:
2
+ status:
3
+ project:
4
+ default:
5
+ informational: true
6
+ only_pulls: true
7
+ threshold: 1%
8
+ patch:
9
+ default:
10
+ informational: true
11
+ only_pulls: true
12
+ threshold: 1%
13
+
14
+ comment:
15
+ require_changes: true
data/legitbot.gemspec CHANGED
@@ -26,10 +26,11 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'dns_mock', '~> 1.5.0', '>= 1.5.0'
27
27
  spec.add_development_dependency 'minitest', '~> 5.1', '>= 5.1.0'
28
28
  spec.add_development_dependency 'minitest-hooks', '~> 1.5', '>= 1.5.0'
29
- spec.add_development_dependency 'nokogiri', '~> 1.13.0', '>= 1.13.0'
29
+ spec.add_development_dependency 'nokogiri', '~> 1.14', '>= 1.14.3'
30
30
  spec.add_development_dependency 'rake', '~> 13.0', '>= 13.0.0'
31
- spec.add_development_dependency 'rubocop', '~> 1.31.0', '>= 1.31.0'
32
- spec.add_development_dependency 'rubocop-minitest', '~> 0.20.0', '>= 0.20.0'
31
+ spec.add_development_dependency 'rubocop', '~> 1.50.0', '>= 1.50.0'
32
+ spec.add_development_dependency 'rubocop-minitest', '~> 0.31.0', '>= 0.31.0'
33
+ spec.add_development_dependency 'simplecov-cobertura', '~> 2.0', '>= 2.0'
33
34
 
34
35
  spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
35
36
  spec.rdoc_options = ['--charset=UTF-8']
@@ -15,5 +15,10 @@ module Legitbot # :nodoc:
15
15
  Mediapartners-Google
16
16
  AdsBot-Google-Mobile-Apps
17
17
  FeedFetcher-Google
18
+ Google-Read-Aloud
19
+ DuplexWeb-Google
20
+ googleweblight
21
+ Storebot-Google
22
+ Google-Site-Verification
18
23
  ]
19
24
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Legitbot
4
- VERSION = '1.7.1'
4
+ VERSION = '1.7.3'
5
5
  end
data/test/ahrefs_test.rb CHANGED
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'minitest/hooks/test'
5
- require 'lib/dns_server_mock'
6
- require 'legitbot'
3
+ require_relative 'test_helper'
7
4
 
8
5
  class AhrefsTest < Minitest::Test
9
6
  include Minitest::Hooks
@@ -12,12 +9,14 @@ class AhrefsTest < Minitest::Test
12
9
  def test_malicious_ip
13
10
  ip = '149.210.164.47'
14
11
  match = Legitbot::Ahrefs.new ip
12
+
15
13
  refute_predicate match, :valid?
16
14
  end
17
15
 
18
16
  def test_valid_ip
19
17
  ip = '54.36.148.0'
20
18
  match = Legitbot::Ahrefs.new ip
19
+
21
20
  assert_predicate match, :valid?
22
21
  end
23
22
 
@@ -26,6 +25,7 @@ class AhrefsTest < Minitest::Test
26
25
  'Mozilla/5.0 (compatible; AhrefsBot/6.1; +http://ahrefs.com/robot/)',
27
26
  '149.210.164.47'
28
27
  )
28
+
29
29
  assert bot
30
30
  refute_predicate bot, :valid?
31
31
  end
@@ -35,6 +35,7 @@ class AhrefsTest < Minitest::Test
35
35
  'Mozilla/5.0 (compatible; AhrefsBot/6.1; +http://ahrefs.com/robot/)',
36
36
  '54.36.148.0'
37
37
  )
38
+
38
39
  assert bot
39
40
  assert_predicate bot, :valid?
40
41
  end
data/test/alexa_test.rb CHANGED
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'minitest/hooks/test'
5
- require 'lib/dns_server_mock'
6
- require 'legitbot'
3
+ require_relative 'test_helper'
7
4
 
8
5
  class AlexaTest < Minitest::Test
9
6
  include Minitest::Hooks
@@ -12,12 +9,14 @@ class AlexaTest < Minitest::Test
12
9
  def test_malicious_ip
13
10
  ip = '149.210.164.47'
14
11
  match = Legitbot::Alexa.new ip
12
+
15
13
  refute_predicate match, :valid?
16
14
  end
17
15
 
18
16
  def test_valid_ip
19
17
  ip = '52.86.176.3'
20
18
  match = Legitbot::Alexa.new ip
19
+
21
20
  assert_predicate match, :valid?
22
21
  end
23
22
 
@@ -26,6 +25,7 @@ class AlexaTest < Minitest::Test
26
25
  'Mozilla/5.0 (compatible; Alexabot/1.0; +http://www.alexa.com/help/certifyscan; certifyscan@alexa.com)',
27
26
  '149.210.164.47'
28
27
  )
28
+
29
29
  assert bot
30
30
  refute_predicate bot, :valid?
31
31
  end
@@ -35,6 +35,7 @@ class AlexaTest < Minitest::Test
35
35
  'Mozilla/5.0 (compatible; Alexabot/1.0; +http://www.alexa.com/help/certifyscan; certifyscan@alexa.com)',
36
36
  '52.86.176.3'
37
37
  )
38
+
38
39
  assert bot
39
40
  assert_predicate bot, :valid?
40
41
  end
data/test/amazon_test.rb CHANGED
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'minitest/hooks/test'
5
- require 'lib/dns_server_mock'
6
- require 'legitbot'
3
+ require_relative 'test_helper'
7
4
 
8
5
  class AmazonTest < Minitest::Test
9
6
  include Minitest::Hooks
@@ -12,12 +9,14 @@ class AmazonTest < Minitest::Test
12
9
  def test_malicious_ip
13
10
  ip = '149.210.164.47'
14
11
  match = Legitbot::Amazon.new ip
12
+
15
13
  refute_predicate match, :valid?
16
14
  end
17
15
 
18
16
  def test_valid_ip
19
17
  ip = '54.166.7.90'
20
18
  match = Legitbot::Amazon.new ip
19
+
21
20
  assert_predicate match, :valid?
22
21
  end
23
22
 
@@ -26,6 +25,7 @@ class AmazonTest < Minitest::Test
26
25
  'Mozilla/5.0 (compatible; AmazonAdBot/1.0; +https://adbot.amazon.com)',
27
26
  '149.210.164.47'
28
27
  )
28
+
29
29
  assert bot
30
30
  refute_predicate bot, :valid?
31
31
  end
@@ -35,6 +35,7 @@ class AmazonTest < Minitest::Test
35
35
  'Mozilla/5.0 (compatible; AmazonAdBot/1.0; +https://adbot.amazon.com)',
36
36
  '54.166.7.90'
37
37
  )
38
+
38
39
  assert bot
39
40
  assert_predicate bot, :valid?
40
41
  end
@@ -44,6 +45,7 @@ class AmazonTest < Minitest::Test
44
45
  'Mozilla/5.0 (compatible; AmazonAdBot/1.0; +https://adbot.amazon.com)',
45
46
  '54.166.7.90'
46
47
  )
48
+
47
49
  assert_equal :amazon, bot.detected_as
48
50
  end
49
51
 
@@ -52,6 +54,7 @@ class AmazonTest < Minitest::Test
52
54
  'Mozilla/5.0 (compatible; AmazonAdBot/1.0; +https://adbot.amazon.com)',
53
55
  '81.1.172.108'
54
56
  )
57
+
55
58
  assert_equal :amazon, bot.detected_as
56
59
  end
57
60
  end
data/test/apple_test.rb CHANGED
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'minitest/hooks/test'
5
- require 'lib/dns_server_mock'
6
- require 'legitbot'
3
+ require_relative 'test_helper'
7
4
 
8
5
  class AppleTest < Minitest::Test
9
6
  include Minitest::Hooks
@@ -12,12 +9,14 @@ class AppleTest < Minitest::Test
12
9
  def test_valid_ip
13
10
  ip = '17.58.98.60'
14
11
  match = Legitbot::Apple.new(ip)
12
+
15
13
  assert_predicate match, :valid?
16
14
  end
17
15
 
18
16
  def test_invalid_ip
19
17
  ip = '127.0.0.1'
20
18
  match = Legitbot::Apple.new(ip)
19
+
21
20
  assert_predicate match, :fake?
22
21
  end
23
22
 
@@ -27,6 +26,7 @@ class AppleTest < Minitest::Test
27
26
  'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Applebot/0.1; +http://www.apple.com/go/applebot)',
28
27
  '17.58.98.60'
29
28
  )
29
+
30
30
  assert_equal :apple, bot.detected_as
31
31
  assert_predicate bot, :valid?
32
32
  end
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'minitest/hooks/test'
5
- require 'lib/dns_server_mock'
6
- require 'legitbot'
3
+ require_relative 'test_helper'
7
4
 
8
5
  class BotMatchTest < Minitest::Test
9
6
  include Minitest::Hooks
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'legitbot'
3
+ require_relative 'test_helper'
5
4
 
6
5
  module Legitbot
7
6
  class Facebook
@@ -20,16 +19,19 @@ class FacebookTest < Minitest::Test
20
19
  def test_valid_ip
21
20
  ip = '69.63.186.89'
22
21
  match = Legitbot::Facebook.new(ip)
22
+
23
23
  assert_predicate match, :valid?
24
24
 
25
25
  ip = '69.171.251.1'
26
26
  match = Legitbot::Facebook.new(ip)
27
+
27
28
  assert_predicate match, :valid?
28
29
  end
29
30
 
30
31
  def test_invalid_ip
31
32
  ip = '127.0.0.1'
32
33
  match = Legitbot::Facebook.new(ip)
34
+
33
35
  assert_predicate match, :fake?
34
36
  end
35
37
 
data/test/google_test.rb CHANGED
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'minitest/hooks/test'
5
- require 'lib/dns_server_mock'
6
- require 'legitbot'
3
+ require_relative 'test_helper'
7
4
 
8
5
  class GoogleTest < Minitest::Test
9
6
  include Minitest::Hooks
@@ -12,12 +9,14 @@ class GoogleTest < Minitest::Test
12
9
  def test_malicious_ip
13
10
  ip = '149.210.164.47'
14
11
  match = Legitbot::Google.new ip
12
+
15
13
  refute_predicate match, :valid?
16
14
  end
17
15
 
18
16
  def test_valid_ip
19
17
  ip = '66.249.64.141'
20
18
  match = Legitbot::Google.new ip
19
+
21
20
  assert_predicate match, :valid?
22
21
  end
23
22
 
@@ -26,6 +25,7 @@ class GoogleTest < Minitest::Test
26
25
  'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
27
26
  '149.210.164.47'
28
27
  )
28
+
29
29
  assert bot
30
30
  refute_predicate bot, :valid?
31
31
  end
@@ -35,6 +35,7 @@ class GoogleTest < Minitest::Test
35
35
  'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
36
36
  '66.249.64.141'
37
37
  )
38
+
38
39
  assert bot
39
40
  assert_predicate bot, :valid?
40
41
  end
@@ -44,6 +45,7 @@ class GoogleTest < Minitest::Test
44
45
  'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
45
46
  '66.249.64.141'
46
47
  )
48
+
47
49
  assert_equal :google, bot.detected_as
48
50
  end
49
51
 
@@ -52,6 +54,7 @@ class GoogleTest < Minitest::Test
52
54
  'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)',
53
55
  '81.1.172.108'
54
56
  )
57
+
55
58
  assert_equal :google, bot.detected_as
56
59
  end
57
60
  end
@@ -60,17 +60,20 @@ module Legitbot
60
60
  class IpRangesTest < Minitest::Test
61
61
  def test_partition_method
62
62
  empty = NoRanges.partition_ips([])
63
+
63
64
  assert_empty empty
64
65
  end
65
66
 
66
67
  def test_ipv6_partition
67
68
  ipv6 = NoRanges.partition_ips(['2a03:2880:f234::/48'])
69
+
68
70
  assert_nil ipv6[:ipv4].top_node
69
71
  refute_nil ipv6[:ipv6].top_node
70
72
  end
71
73
 
72
74
  def test_ipv4_partition
73
75
  ipv4 = NoRanges.partition_ips(['66.220.144.0/21'])
76
+
74
77
  refute_nil ipv4[:ipv4].top_node
75
78
  assert_nil ipv4[:ipv6].top_node
76
79
  end
@@ -87,6 +90,7 @@ module Legitbot
87
90
  assert EmptyRanges.valid_ip?('2a03:2880:f234:0:0:0:0:1')
88
91
 
89
92
  matcher = EmptyRanges.new '127.0.0.0'
93
+
90
94
  assert_predicate matcher, :valid_ip?
91
95
  end
92
96
 
@@ -113,6 +117,7 @@ module Legitbot
113
117
  assert_equal 1, LoadRanges.counter
114
118
 
115
119
  LoadRanges.reload_ips
120
+
116
121
  refute_predicate LoadRanges.new('127.127.127.127'), :valid_ip?
117
122
  refute_predicate LoadRanges.new('10.10.10.10'), :valid_ip?
118
123
  assert_predicate LoadRanges.new('192.168.127.254'), :valid_ip?
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'legitbot'
3
+ require_relative 'test_helper'
5
4
 
6
5
  class LegitbotTest < Minitest::Test
7
6
  def test_rules
data/test/oracle_test.rb CHANGED
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'legitbot'
3
+ require_relative 'test_helper'
5
4
 
6
5
  class OracleTest < Minitest::Test
7
6
  def test_malicious_ip
8
7
  ip = '149.210.164.47'
9
8
  match = Legitbot::Oracle.new ip
9
+
10
10
  refute_predicate match, :valid?
11
11
  end
12
12
 
13
13
  def test_valid_ip
14
14
  ip = '148.64.56.64'
15
15
  match = Legitbot::Oracle.new ip
16
+
16
17
  assert_predicate match, :valid?
17
18
  end
18
19
 
@@ -21,6 +22,7 @@ class OracleTest < Minitest::Test
21
22
  'Mozilla/5.0 (compatible; GrapeshotCrawler/2.0; +http://www.grapeshot.co.uk/crawler.php)',
22
23
  '149.210.164.47'
23
24
  )
25
+
24
26
  assert bot
25
27
  refute_predicate bot, :valid?
26
28
  end
@@ -30,6 +32,7 @@ class OracleTest < Minitest::Test
30
32
  'Mozilla/5.0 (compatible; GrapeshotCrawler/2.0; +http://www.grapeshot.co.uk/crawler.php)',
31
33
  '148.64.56.64'
32
34
  )
35
+
33
36
  assert bot
34
37
  assert_predicate bot, :valid?
35
38
  end
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'minitest/hooks/test'
5
- require 'lib/dns_server_mock'
6
- require 'legitbot'
3
+ require_relative 'test_helper'
7
4
 
8
5
  class PetalbotTest < Minitest::Test
9
6
  include Minitest::Hooks
@@ -12,12 +9,14 @@ class PetalbotTest < Minitest::Test
12
9
  def test_malicious_ip
13
10
  ip = '149.210.164.47'
14
11
  match = Legitbot::Petalbot.new ip
12
+
15
13
  refute_predicate match, :valid?
16
14
  end
17
15
 
18
16
  def test_valid_ip
19
17
  ip = '114.119.134.10'
20
18
  match = Legitbot::Petalbot.new ip
19
+
21
20
  assert_predicate match, :valid?
22
21
  end
23
22
 
@@ -26,6 +25,7 @@ class PetalbotTest < Minitest::Test
26
25
  'Mozilla/5.0 (compatible;PetalBot; +https://aspiegel.com/petalbot)',
27
26
  '149.210.164.47'
28
27
  )
28
+
29
29
  assert bot
30
30
  refute_predicate bot, :valid?
31
31
  end
@@ -35,6 +35,7 @@ class PetalbotTest < Minitest::Test
35
35
  'Mozilla/5.0 (compatible;PetalBot; +https://aspiegel.com/petalbot)',
36
36
  '114.119.134.10'
37
37
  )
38
+
38
39
  assert bot
39
40
  assert_predicate bot, :valid?
40
41
  end
@@ -44,6 +45,7 @@ class PetalbotTest < Minitest::Test
44
45
  'Mozilla/5.0 (compatible;PetalBot; +https://aspiegel.com/petalbot)',
45
46
  '66.249.64.141'
46
47
  )
48
+
47
49
  assert_equal :petalbot, bot.detected_as
48
50
  end
49
51
 
@@ -52,6 +54,7 @@ class PetalbotTest < Minitest::Test
52
54
  'Mozilla/5.0 (compatible; PetalBot/2.1; +http://www.google.com/bot.html)',
53
55
  '81.1.172.108'
54
56
  )
57
+
55
58
  assert_equal :petalbot, bot.detected_as
56
59
  end
57
60
  end
@@ -1,9 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'minitest/hooks/test'
5
- require 'lib/dns_server_mock'
6
- require 'legitbot'
3
+ require_relative 'test_helper'
7
4
 
8
5
  class PinterestTest < Minitest::Test
9
6
  include Minitest::Hooks
@@ -12,12 +9,14 @@ class PinterestTest < Minitest::Test
12
9
  def test_malicious_ip
13
10
  ip = '149.210.164.47'
14
11
  match = Legitbot::Pinterest.new ip
12
+
15
13
  refute_predicate match, :valid?
16
14
  end
17
15
 
18
16
  def test_valid_ip
19
17
  ip = '54.236.1.11'
20
18
  match = Legitbot::Pinterest.new ip
19
+
21
20
  assert_predicate match, :valid?
22
21
  end
23
22
 
@@ -26,6 +25,7 @@ class PinterestTest < Minitest::Test
26
25
  'Mozilla/5.0 (compatible; Pinterestbot/1.0; +https://www.pinterest.com/bot.html)',
27
26
  '149.210.164.47'
28
27
  )
28
+
29
29
  assert bot
30
30
  refute_predicate bot, :valid?
31
31
  end
@@ -35,6 +35,7 @@ class PinterestTest < Minitest::Test
35
35
  'Mozilla/5.0 (compatible; Pinterestbot/1.0; +https://www.pinterest.com/bot.html)',
36
36
  '54.236.1.11'
37
37
  )
38
+
38
39
  assert bot
39
40
  assert_predicate bot, :valid?
40
41
  end
@@ -45,6 +46,7 @@ class PinterestTest < Minitest::Test
45
46
  'Mozilla/5.0 (Linux; Android 8.0.0; SM-G965F Build/R16NW; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.64 Mobile Safari/537.36 [Pinterest/Android]',
46
47
  '85.117.106.133'
47
48
  )
49
+
48
50
  assert_nil bot
49
51
  end
50
52
  # rubocop:enable Layout/LineLength
@@ -54,6 +56,7 @@ class PinterestTest < Minitest::Test
54
56
  'Mozilla/5.0 (compatible; Pinterestbot/1.0; +https://www.pinterest.com/bot.html)',
55
57
  '54.236.1.11'
56
58
  )
59
+
57
60
  assert_equal :pinterest, bot.detected_as
58
61
  end
59
62
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'simplecov'
4
+ require 'simplecov-cobertura'
5
+ SimpleCov.start do
6
+ formatter SimpleCov::Formatter::CoberturaFormatter
7
+ add_filter %r{^/lib/rubocop/}
8
+ add_filter %r{^/test/}
9
+ end
10
+
11
+ require 'legitbot'
12
+
13
+ require 'minitest/autorun'
14
+ require 'minitest/hooks/test'
15
+ require 'lib/dns_server_mock'
data/test/twitter_test.rb CHANGED
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'legitbot'
3
+ require_relative 'test_helper'
5
4
 
6
5
  class TwitterTest < Minitest::Test
7
6
  def test_malicious_ip
8
7
  ip = '149.210.164.47'
9
8
  match = Legitbot::Twitter.new ip
9
+
10
10
  refute_predicate match, :valid?
11
11
  end
12
12
 
13
13
  def test_valid_ip
14
14
  ip = '199.16.156.125'
15
15
  match = Legitbot::Twitter.new ip
16
+
16
17
  assert_predicate match, :valid?
17
18
  end
18
19
 
@@ -21,6 +22,7 @@ class TwitterTest < Minitest::Test
21
22
  'Twitterbot/1.0',
22
23
  '149.210.164.47'
23
24
  )
25
+
24
26
  assert bot
25
27
  refute_predicate bot, :valid?
26
28
  end
@@ -30,6 +32,7 @@ class TwitterTest < Minitest::Test
30
32
  'Twitterbot/1.0',
31
33
  '199.16.156.125'
32
34
  )
35
+
33
36
  assert bot
34
37
  assert_predicate bot, :valid?
35
38
  end
data/test/you_test.rb CHANGED
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'minitest/autorun'
4
- require 'legitbot'
3
+ require_relative 'test_helper'
5
4
 
6
5
  class YouTest < Minitest::Test
7
6
  def test_malicious_ip
8
7
  ip = '20.59.41.22'
9
8
  match = Legitbot::You.new ip
9
+
10
10
  refute_predicate match, :valid?
11
11
  end
12
12
 
13
13
  def test_valid_ip
14
14
  ip = '20.59.40.22'
15
15
  match = Legitbot::You.new ip
16
+
16
17
  assert_predicate match, :valid?
17
18
  end
18
19
 
@@ -21,6 +22,7 @@ class YouTest < Minitest::Test
21
22
  'Mozilla/5.0 (compatible; YouBot/1.0; +https://about.you.com/youbot/)',
22
23
  '20.59.41.22'
23
24
  )
25
+
24
26
  assert bot
25
27
  refute_predicate bot, :valid?
26
28
  end
@@ -30,6 +32,7 @@ class YouTest < Minitest::Test
30
32
  'Mozilla/5.0 (compatible; YouBot/1.0; +https://about.you.com/youbot/)',
31
33
  '20.59.40.22'
32
34
  )
35
+
33
36
  assert bot
34
37
  assert_predicate bot, :valid?
35
38
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legitbot
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 1.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Azarov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-23 00:00:00.000000000 Z
11
+ date: 2023-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fast_interval_tree
@@ -136,20 +136,20 @@ dependencies:
136
136
  requirements:
137
137
  - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: 1.13.0
139
+ version: '1.14'
140
140
  - - ">="
141
141
  - !ruby/object:Gem::Version
142
- version: 1.13.0
142
+ version: 1.14.3
143
143
  type: :development
144
144
  prerelease: false
145
145
  version_requirements: !ruby/object:Gem::Requirement
146
146
  requirements:
147
147
  - - "~>"
148
148
  - !ruby/object:Gem::Version
149
- version: 1.13.0
149
+ version: '1.14'
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: 1.13.0
152
+ version: 1.14.3
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rake
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -176,40 +176,60 @@ dependencies:
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: 1.31.0
179
+ version: 1.50.0
180
180
  - - ">="
181
181
  - !ruby/object:Gem::Version
182
- version: 1.31.0
182
+ version: 1.50.0
183
183
  type: :development
184
184
  prerelease: false
185
185
  version_requirements: !ruby/object:Gem::Requirement
186
186
  requirements:
187
187
  - - "~>"
188
188
  - !ruby/object:Gem::Version
189
- version: 1.31.0
189
+ version: 1.50.0
190
190
  - - ">="
191
191
  - !ruby/object:Gem::Version
192
- version: 1.31.0
192
+ version: 1.50.0
193
193
  - !ruby/object:Gem::Dependency
194
194
  name: rubocop-minitest
195
195
  requirement: !ruby/object:Gem::Requirement
196
196
  requirements:
197
197
  - - "~>"
198
198
  - !ruby/object:Gem::Version
199
- version: 0.20.0
199
+ version: 0.31.0
200
200
  - - ">="
201
201
  - !ruby/object:Gem::Version
202
- version: 0.20.0
202
+ version: 0.31.0
203
203
  type: :development
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
207
  - - "~>"
208
208
  - !ruby/object:Gem::Version
209
- version: 0.20.0
209
+ version: 0.31.0
210
210
  - - ">="
211
211
  - !ruby/object:Gem::Version
212
- version: 0.20.0
212
+ version: 0.31.0
213
+ - !ruby/object:Gem::Dependency
214
+ name: simplecov-cobertura
215
+ requirement: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - "~>"
218
+ - !ruby/object:Gem::Version
219
+ version: '2.0'
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '2.0'
223
+ type: :development
224
+ prerelease: false
225
+ version_requirements: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - "~>"
228
+ - !ruby/object:Gem::Version
229
+ version: '2.0'
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ version: '2.0'
213
233
  description: Does Web request come from a real search engine or from an impersonating
214
234
  agent?
215
235
  email: self@alaz.me
@@ -227,6 +247,7 @@ files:
227
247
  - LICENSE.txt
228
248
  - README.md
229
249
  - Rakefile
250
+ - codecov.yml
230
251
  - legitbot.gemspec
231
252
  - lib/legitbot.rb
232
253
  - lib/legitbot/ahrefs.rb
@@ -270,6 +291,7 @@ files:
270
291
  - test/oracle_test.rb
271
292
  - test/petalbot_test.rb
272
293
  - test/pinterest_test.rb
294
+ - test/test_helper.rb
273
295
  - test/twitter_test.rb
274
296
  - test/you_test.rb
275
297
  homepage: https://github.com/alaz/legitbot