same_site_ua_checker 0.0.1 → 0.0.2

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
  SHA1:
3
- metadata.gz: e25e8d826c1ef9002e4b0573a44645c45314de1e
4
- data.tar.gz: 50237eb9f98b93a13517e037dcf779e12c981760
3
+ metadata.gz: cac5f900f23e94ca45ed79f15b2f0d1f07c70a21
4
+ data.tar.gz: ec49bc4aa4dac6f4e703ab5f87159617b9b78f64
5
5
  SHA512:
6
- metadata.gz: 3489ebf9a3f4db05625d93b172a83d8faeb31e70b09bfc2e455b54a3218c7cd282134931e9b463db98367f0d33f1ec9516492aa0c9010a5441dddd0591900010
7
- data.tar.gz: 19482340be6e6288390b9e8c9c3e8465211c6188b698000f955d03254ecaba7c4b98e5c5134cfefa8f2ec944ba91f56df2af58eb7419caa2e114b2d23a698f36
6
+ metadata.gz: 5b0b9e49364ae17fb2fbd9a72cd5c387ff0403d4329e75d958ac671ebe8482dc0fd2641a9ae2a7ecb1fc73f25d1a26b0db6baba66f0f90347a40aa3a1b862085
7
+ data.tar.gz: 61d68de36adf8974013970b3a9f6d3c6eaadb86ebb579f2a24aa5ab21fc5f7b5f14428e9d82d2998a65952896bdc72bf7a42e81a7a3461b7321b3a5cc65802bb
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in same_site_ua_checker.gemspec
4
+ gemspec
@@ -0,0 +1,32 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ same_site_ua_checker (0.0.2)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.4.4)
10
+ rspec (3.7.0)
11
+ rspec-core (~> 3.7.0)
12
+ rspec-expectations (~> 3.7.0)
13
+ rspec-mocks (~> 3.7.0)
14
+ rspec-core (3.7.1)
15
+ rspec-support (~> 3.7.0)
16
+ rspec-expectations (3.7.0)
17
+ diff-lcs (>= 1.2.0, < 2.0)
18
+ rspec-support (~> 3.7.0)
19
+ rspec-mocks (3.7.0)
20
+ diff-lcs (>= 1.2.0, < 2.0)
21
+ rspec-support (~> 3.7.0)
22
+ rspec-support (3.7.1)
23
+
24
+ PLATFORMS
25
+ ruby
26
+
27
+ DEPENDENCIES
28
+ rspec (~> 3.7.0, >= 3.7.0)
29
+ same_site_ua_checker!
30
+
31
+ BUNDLED WITH
32
+ 1.16.1
@@ -0,0 +1,56 @@
1
+ require 'pathname'
2
+
3
+ def fix_regex(regex_string)
4
+ regex_string.sub('~', '/').reverse.sub('~', '/').reverse
5
+ end
6
+
7
+ def generate_version_class(client, regex)
8
+ file_name = "regex_version_#{client}.rb"
9
+ code = <<-CODE
10
+ # Generated by generate_regex_classes.rb
11
+ class SameSiteUaChecker
12
+ class RegexVersion#{client.capitalize} < RegexVersionAbstract
13
+ def regex_version
14
+ #{fix_regex(regex)}
15
+ end
16
+ end
17
+ end
18
+ CODE
19
+ File.open(File.join(__dir__, '..', 'lib', 'same_site_ua_checker', file_name), 'w') { |f| f.puts(code) }
20
+ end
21
+
22
+ def generate_name_class(case_name, regexs)
23
+ parts = case_name.split('-')
24
+ file_name = "regex_list_#{parts.join('_')}.rb"
25
+ code = <<-CODE
26
+ # Generated by generate_regex_classes.rb
27
+ class SameSiteUaChecker
28
+ class RegexList#{parts.map(&:capitalize).join} < RegexListAbstract
29
+ def regex_list
30
+ [
31
+ #{regexs.map { |regex| fix_regex(regex) }.join(', ')}
32
+ ]
33
+ end
34
+ end
35
+ end
36
+ CODE
37
+ File.open(File.join(__dir__, '..', 'lib', 'same_site_ua_checker', file_name), 'w') { |f| f.puts(code) }
38
+ end
39
+
40
+ Dir[File.join(__dir__, '..', '..', '..', 'regex', 'version-match', '*')].each do |path|
41
+ f = File.open(path)
42
+ regex = f.read
43
+ f.close
44
+ client = Pathname.new(path).basename.to_s
45
+
46
+ generate_version_class(client, regex)
47
+ end
48
+
49
+ Dir[File.join(__dir__, '..', '..', '..', 'regex', 'check', '*')].each do |path|
50
+ f = File.open(path)
51
+ content = f.read
52
+ f.close
53
+ client = Pathname.new(path).basename.to_s
54
+
55
+ generate_name_class(client, content.split("\n"))
56
+ end
@@ -0,0 +1,40 @@
1
+ require 'pathname'
2
+
3
+ code = <<-CODE
4
+ # Generated by generate_tests.rb
5
+ require_relative '../lib/same_site_ua_checker'
6
+
7
+ describe SameSiteUaChecker do
8
+ subject { SameSiteUaChecker.call(ua_string) }
9
+ CODE
10
+
11
+ def generate_test_case(line)
12
+ line = line.strip
13
+ matches = line.match(/(true|false)\t(.+)/)
14
+ return '' if line == ''
15
+ return "\n # #{line}" unless matches
16
+
17
+ <<-CODE
18
+
19
+ context '#{matches[2]}' do
20
+ let(:ua_string) { '#{matches[2]}' }
21
+ it { should eq #{matches[1]} }
22
+ end
23
+ CODE
24
+ end
25
+
26
+ Dir[File.join(__dir__, '..', '..', '..', 'test-suite', '*')].each do |path|
27
+ f = File.open(path)
28
+ lines = f.readlines
29
+ f.close
30
+ set_name = Pathname.new(path).basename.to_s
31
+
32
+ code += "\n # Set name: #{set_name}"
33
+ lines.each do |line|
34
+ code += generate_test_case(line)
35
+ end
36
+ end
37
+
38
+ code += "end\n"
39
+
40
+ File.open(File.join(__dir__, '..', 'spec', 'same_site_ua_checker_spec.rb'), 'w') { |f| f.puts(code) }
@@ -0,0 +1,54 @@
1
+ require_relative 'same_site_ua_checker/version'
2
+
3
+ require_relative 'same_site_ua_checker/regex_version_abstract'
4
+ require_relative 'same_site_ua_checker/regex_version_chrome'
5
+ require_relative 'same_site_ua_checker/regex_version_ucbrowser'
6
+
7
+ require_relative 'same_site_ua_checker/regex_list_abstract'
8
+ require_relative 'same_site_ua_checker/regex_list_same_site_none_bug'
9
+ require_relative 'same_site_ua_checker/regex_list_same_site_not_supported'
10
+ require_relative 'same_site_ua_checker/regex_list_same_site_strict_bug'
11
+
12
+ class SameSiteUaChecker
13
+ # @param [String] user_agent_string
14
+ # @return [Boolean] Browser has bug and should NOT receive SameSite=None cookie attribute
15
+ def self.call(user_agent_string)
16
+ new.check(user_agent_string)
17
+ end
18
+
19
+ def check(user_agent_string)
20
+ raise ArgumentError, 'Only string argument is allowed' unless user_agent_string.is_a?(String)
21
+
22
+ check_same_site_not_supported(user_agent_string) ||
23
+ check_same_site_strict_bug(user_agent_string) ||
24
+ check_same_site_none_bug(user_agent_string)
25
+ end
26
+
27
+ private
28
+
29
+ def check_same_site_not_supported(user_agent_string)
30
+ RegexListSameSiteNotSupported.new.check(user_agent_string)
31
+ end
32
+
33
+ def check_same_site_none_bug(user_agent_string)
34
+ # Additional check for chrome browser version
35
+ is_chrome_based_browser = RegexListSameSiteNoneBug.new.check(user_agent_string)
36
+
37
+ return false unless is_chrome_based_browser
38
+
39
+ ucbrowser_version = RegexVersionUcbrowser.new.detect(user_agent_string)
40
+ return !ucbrowser_version.at_least?(12, 13, 2) if ucbrowser_version.major != 0
41
+
42
+ chrome_browser_version = RegexVersionChrome.new.detect(user_agent_string)
43
+ return chrome_browser_version.major_between_inc?(51, 66) if chrome_browser_version.major != 0
44
+
45
+ false
46
+ end
47
+
48
+ def check_same_site_strict_bug(user_agent_string)
49
+ is_chrome_based_browser = RegexListSameSiteNoneBug.new.check(user_agent_string)
50
+ return false if is_chrome_based_browser
51
+
52
+ RegexListSameSiteStrictBug.new.check(user_agent_string)
53
+ end
54
+ end
@@ -0,0 +1,3 @@
1
+ class SameSiteUaChecker
2
+ VERSION = '0.0.2'.freeze
3
+ end
@@ -0,0 +1,11 @@
1
+ class SameSiteUaChecker
2
+ class RegexListAbstract
3
+ def regex_list
4
+ raise NotImplementedError
5
+ end
6
+
7
+ def check(string_to_check)
8
+ regex_list.any? { |regexp| string_to_check.match?(Regexp.new(regexp)) }
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ # Generated by generate_regex_classes.rb
2
+ class SameSiteUaChecker
3
+ class RegexListSameSiteNoneBug < RegexListAbstract
4
+ def regex_list
5
+ [
6
+ /UCBrowser\//, /Chrom(e|ium)/
7
+ ]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # Generated by generate_regex_classes.rb
2
+ class SameSiteUaChecker
3
+ class RegexListSameSiteNotSupported < RegexListAbstract
4
+ def regex_list
5
+ [
6
+ /MSIE/, /Trident/
7
+ ]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # Generated by generate_regex_classes.rb
2
+ class SameSiteUaChecker
3
+ class RegexListSameSiteStrictBug < RegexListAbstract
4
+ def regex_list
5
+ [
6
+ /(iPhone; CPU iPhone OS 1[0-3]|iPad; CPU OS 1[0-3]|iPod touch; CPU iPhone OS 1[0-3]|Macintosh; Intel Mac OS X.*Version\x2F1[0-3].*Safari|Macintosh;.*Mac OS X 10_14.* AppleWebKit.*Version\x2F1[0-3].*Safari)/
7
+ ]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,23 @@
1
+ class SameSiteUaChecker
2
+ class RegexVersionAbstract
3
+ def regex_version
4
+ raise NotImplementedError
5
+ end
6
+
7
+ # @return [Version]
8
+ def detect(string_to_check)
9
+ version = Version.new
10
+ matches = string_to_check.match(regex_version)
11
+
12
+ return version unless matches
13
+
14
+ groups_count = matches.size - 1
15
+
16
+ version.major = matches[1].to_i
17
+ version.minor = matches[2].to_i if groups_count >= 2
18
+ version.build = matches[3].to_i if groups_count >= 3
19
+
20
+ version
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,8 @@
1
+ # Generated by generate_regex_classes.rb
2
+ class SameSiteUaChecker
3
+ class RegexVersionChrome < RegexVersionAbstract
4
+ def regex_version
5
+ /Chrom[^ \/]+\/(\d+)[\.\d]* /
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # Generated by generate_regex_classes.rb
2
+ class SameSiteUaChecker
3
+ class RegexVersionUcbrowser < RegexVersionAbstract
4
+ def regex_version
5
+ /UCBrowser\/(\d+)\.(\d+)\.(\d+)[\.\d]* /
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,26 @@
1
+ class SameSiteUaChecker
2
+ class Version
3
+ # integers
4
+ attr_accessor :major, :minor, :build
5
+
6
+ def initialize
7
+ @major = 0
8
+ @minor = 0
9
+ @build = 0
10
+ end
11
+
12
+ def at_least?(major, minor = nil, build = nil)
13
+ return false if self.major < major
14
+
15
+ return false if !minor.nil? && self.minor < minor
16
+
17
+ return false if !build.nil? && self.build < build
18
+
19
+ true
20
+ end
21
+
22
+ def major_between_inc?(from, to)
23
+ major >= from && major <= to
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ # Installation
2
+
3
+ ```ruby
4
+ # from RubyGems
5
+ gem 'same_site_ua_checker', '~> 0.0.2'
6
+
7
+ # from Git
8
+ gem 'same_site_ua_checker',
9
+ git: 'ssh://git@stash.sapient.ru:7999/com/same_site_ua_checker.git',
10
+ branch: 'master',
11
+ glob: 'src/ruby/*.gemspec'
12
+ ```
13
+
14
+ # Usage
15
+
16
+ ```ruby
17
+ SameSiteUaChecker.call(headers['User-Agent'])
18
+ # => true, so SameSite=None should NOT be added
19
+ ```
20
+
21
+ # Testing
22
+
23
+ ```bash
24
+ # gem install bundler -v 1.16.1
25
+ # bundle install
26
+ # bundle exec rspec
27
+ > 132 examples, 0 failures
28
+ ```
@@ -0,0 +1,21 @@
1
+ lib = File.expand_path('lib', __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'same_site_ua_checker/gem_version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'same_site_ua_checker'
7
+ spec.version = SameSiteUaChecker::VERSION
8
+ spec.authors = ['Ivan Reshetnikov']
9
+ spec.email = []
10
+ spec.summary = 'Check if User-Agent supports SameSite=None'
11
+ spec.description = ''
12
+ spec.homepage = ''
13
+ spec.license = 'private'
14
+
15
+ spec.files = Dir['**/*']
16
+ spec.executables = []
17
+ spec.test_files = spec.files.grep(%r{^spec/})
18
+ spec.require_paths = ['lib']
19
+
20
+ spec.add_development_dependency 'rspec', '~> 3.7.0', '>= 3.7.0'
21
+ end
@@ -0,0 +1,670 @@
1
+ # Generated by generate_tests.rb
2
+ require_relative '../lib/same_site_ua_checker'
3
+
4
+ describe SameSiteUaChecker do
5
+ subject { SameSiteUaChecker.call(ua_string) }
6
+
7
+ # Set name: check-same-site-none-bug
8
+ context 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.19 Safari/537.36' do
9
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.19 Safari/537.36' }
10
+ it { should eq true }
11
+ end
12
+
13
+ context 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.4670.1154 Mobile Safari/537.36' do
14
+ let(:ua_string) { 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.4670.1154 Mobile Safari/537.36' }
15
+ it { should eq true }
16
+ end
17
+
18
+ context 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2710.19 Safari/537.36' do
19
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2710.19 Safari/537.36' }
20
+ it { should eq true }
21
+ end
22
+
23
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2725.20 Safari/537.36' do
24
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2725.20 Safari/537.36' }
25
+ it { should eq true }
26
+ end
27
+
28
+ context 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3032.32 Safari/537.36' do
29
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3032.32 Safari/537.36' }
30
+ it { should eq true }
31
+ end
32
+
33
+ context 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3065.70 Safari/537.36' do
34
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3065.70 Safari/537.36' }
35
+ it { should eq true }
36
+ end
37
+
38
+ context 'Mozilla/5.0 (Linux; Android 6.0; X-StyleTab_A102 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Safari/537.36' do
39
+ let(:ua_string) { 'Mozilla/5.0 (Linux; Android 6.0; X-StyleTab_A102 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Safari/537.36' }
40
+ it { should eq true }
41
+ end
42
+
43
+ context 'Mozilla/5.0 (Linux; Android 7.1.2; Redmi 5A Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 YaApp_Android/9.75 YaSearchBrowser/9.75' do
44
+ let(:ua_string) { 'Mozilla/5.0 (Linux; Android 7.1.2; Redmi 5A Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 YaApp_Android/9.75 YaSearchBrowser/9.75' }
45
+ it { should eq true }
46
+ end
47
+
48
+ context 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3089.32 Safari/537.36' do
49
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3089.32 Safari/537.36' }
50
+ it { should eq true }
51
+ end
52
+
53
+ context 'Mozilla/5.0 (Linux; Android 7.1.1; MI MAX 2 Build/NMF26F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36 YaApp_Android/9.35 YaSearchBrowser/9.35' do
54
+ let(:ua_string) { 'Mozilla/5.0 (Linux; Android 7.1.1; MI MAX 2 Build/NMF26F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.158 Mobile Safari/537.36 YaApp_Android/9.35 YaSearchBrowser/9.35' }
55
+ it { should eq true }
56
+ end
57
+
58
+ context 'Mozilla/5.0 (Linux; Android 8.1.0; SM-J260M Build/M1AJB) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.126 Mobile Safari/537.36' do
59
+ let(:ua_string) { 'Mozilla/5.0 (Linux; Android 8.1.0; SM-J260M Build/M1AJB) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.126 Mobile Safari/537.36' }
60
+ it { should eq true }
61
+ end
62
+
63
+ context 'Mozilla/5.0 (Linux; Android 9; PAR-AL00 Build/HUAWEIPAR-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.155 Mobile Safari/537.36 Zeus' do
64
+ let(:ua_string) { 'Mozilla/5.0 (Linux; Android 9; PAR-AL00 Build/HUAWEIPAR-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.155 Mobile Safari/537.36 Zeus' }
65
+ it { should eq true }
66
+ end
67
+
68
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36' do
69
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36' }
70
+ it { should eq true }
71
+ end
72
+
73
+ context 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3521.47 Safari/537.36' do
74
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3521.47 Safari/537.36' }
75
+ it { should eq true }
76
+ end
77
+
78
+ context 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3329.0 Safari/537.36' do
79
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3329.0 Safari/537.36' }
80
+ it { should eq true }
81
+ end
82
+
83
+ context 'Mozilla/5.0 (Linux; Android 6.0.1; ASUS_X00DDB Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36' do
84
+ let(:ua_string) { 'Mozilla/5.0 (Linux; Android 6.0.1; ASUS_X00DDB Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36' }
85
+ it { should eq false }
86
+ end
87
+
88
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2695.54 Safari/537.36' do
89
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2695.54 Safari/537.36' }
90
+ it { should eq false }
91
+ end
92
+
93
+ context 'Mozilla/5.0 (Linux; Android 6.0; M10A Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36' do
94
+ let(:ua_string) { 'Mozilla/5.0 (Linux; Android 6.0; M10A Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36' }
95
+ it { should eq false }
96
+ end
97
+
98
+ context 'Mozilla/5.0 (Linux; Android 9; SM-J600FN Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3371.0 Mobile Safari/537.36' do
99
+ let(:ua_string) { 'Mozilla/5.0 (Linux; Android 9; SM-J600FN Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3371.0 Mobile Safari/537.36' }
100
+ it { should eq false }
101
+ end
102
+
103
+ context 'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3074.87 Safari/537.36' do
104
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3074.87 Safari/537.36' }
105
+ it { should eq false }
106
+ end
107
+
108
+ context 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3388.0 Safari/537.36' do
109
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3388.0 Safari/537.36' }
110
+ it { should eq false }
111
+ end
112
+
113
+ context 'Mozilla/5.0 (Linux; Android 8.1.0; CPH1825) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36' do
114
+ let(:ua_string) { 'Mozilla/5.0 (Linux; Android 8.1.0; CPH1825) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36' }
115
+ it { should eq false }
116
+ end
117
+
118
+ context 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 Roku/DVP-8.10 (468.10E04145A)' do
119
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 Roku/DVP-8.10 (468.10E04145A)' }
120
+ it { should eq false }
121
+ end
122
+
123
+ context 'Mozilla/5.0 (Linux; Android 10; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4112.0 Mobile Safari/537.36' do
124
+ let(:ua_string) { 'Mozilla/5.0 (Linux; Android 10; POCOPHONE F1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4112.0 Mobile Safari/537.36' }
125
+ it { should eq false }
126
+ end
127
+
128
+ context 'Mozilla/5.0 (X11; CrOS x86_64 13041.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4114.0 Safari/537.36' do
129
+ let(:ua_string) { 'Mozilla/5.0 (X11; CrOS x86_64 13041.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4114.0 Safari/537.36' }
130
+ it { should eq false }
131
+ end
132
+
133
+ context 'Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4115.5 Safari/537.36' do
134
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1; ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4115.5 Safari/537.36' }
135
+ it { should eq false }
136
+ end
137
+
138
+ context 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4116.5 Safari/537.36' do
139
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4116.5 Safari/537.36' }
140
+ it { should eq false }
141
+ end
142
+
143
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4112.0 Safari/537.36' do
144
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4112.0 Safari/537.36' }
145
+ it { should eq false }
146
+ end
147
+
148
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4115.1 Safari/537.36' do
149
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4115.1 Safari/537.36' }
150
+ it { should eq false }
151
+ end
152
+
153
+ context 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/50.0.2661.102 Chrome/50.0.2661.102 Safari/537.36' do
154
+ let(:ua_string) { 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/50.0.2661.102 Chrome/50.0.2661.102 Safari/537.36' }
155
+ it { should eq false }
156
+ end
157
+
158
+ context 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36' do
159
+ let(:ua_string) { 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/55.0.2883.87 Chrome/55.0.2883.87 Safari/537.36' }
160
+ it { should eq true }
161
+ end
162
+
163
+ context 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) blackPanther OS Chromium/63.0.3239.108 Chrome/63.0.3239.108 Safari/537.36' do
164
+ let(:ua_string) { 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) blackPanther OS Chromium/63.0.3239.108 Chrome/63.0.3239.108 Safari/537.36' }
165
+ it { should eq true }
166
+ end
167
+
168
+ context 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/63.0.3239.84 Chrome/63.0.3239.84 Safari/537.36' do
169
+ let(:ua_string) { 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/63.0.3239.84 Chrome/63.0.3239.84 Safari/537.36' }
170
+ it { should eq true }
171
+ end
172
+
173
+ context 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 HeadlessChrome/66.0.3359.181 Safari/537.36' do
174
+ let(:ua_string) { 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 HeadlessChrome/66.0.3359.181 Safari/537.36' }
175
+ it { should eq true }
176
+ end
177
+
178
+ context 'Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.139 Chrome/66.0.3359.139 Safari/537.36' do
179
+ let(:ua_string) { 'Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.139 Chrome/66.0.3359.139 Safari/537.36' }
180
+ it { should eq true }
181
+ end
182
+
183
+ context 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/67.0.3396.99 Chrome/67.0.3396.99 Safari/537.36' do
184
+ let(:ua_string) { 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/67.0.3396.99 Chrome/67.0.3396.99 Safari/537.36' }
185
+ it { should eq false }
186
+ end
187
+
188
+ context 'Mozilla/5.0 (X11; Linux x86_64; SMARTEMB Build/3.2.2010) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/70.0.3538.64 Chrome/70.0.3538.64 Safari/537.36' do
189
+ let(:ua_string) { 'Mozilla/5.0 (X11; Linux x86_64; SMARTEMB Build/3.2.2010) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/70.0.3538.64 Chrome/70.0.3538.64 Safari/537.36' }
190
+ it { should eq false }
191
+ end
192
+
193
+ context 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/82.0.4085.12 Chrome/82.0.4085.12 Safari/537.36' do
194
+ let(:ua_string) { 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/82.0.4085.12 Chrome/82.0.4085.12 Safari/537.36' }
195
+ it { should eq false }
196
+ end
197
+
198
+ context 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 YaBrowser/16.3.0.7146 Yowser/2.5 Safari/537.36' do
199
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 YaBrowser/16.3.0.7146 Yowser/2.5 Safari/537.36' }
200
+ it { should eq false }
201
+ end
202
+
203
+ context 'Mozilla/5.0 (Linux; Android 6.0; GEM-702L Build/HUAWEIGEM-702L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 YaBrowser/16.9.1.1616.00 Mobile Safari/537.36' do
204
+ let(:ua_string) { 'Mozilla/5.0 (Linux; Android 6.0; GEM-702L Build/HUAWEIGEM-702L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 YaBrowser/16.9.1.1616.00 Mobile Safari/537.36' }
205
+ it { should eq true }
206
+ end
207
+
208
+ context 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 YaBrowser/16.9.1.1131 Yowser/2.5 Safari/CD81CA' do
209
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 YaBrowser/16.9.1.1131 Yowser/2.5 Safari/CD81CA' }
210
+ it { should eq true }
211
+ end
212
+
213
+ context 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 YaBrowser/17.9.0.2081 Yowser/2.5 Safari/537.36' do
214
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 YaBrowser/17.9.0.2081 Yowser/2.5 Safari/537.36' }
215
+ it { should eq true }
216
+ end
217
+
218
+ context 'Mozilla/5.0 (Linux; arm_64; Android 8.0.0; SM-A730F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 YaBrowser/19.12.1.121.00 Mobile Safari/537.36' do
219
+ let(:ua_string) { 'Mozilla/5.0 (Linux; arm_64; Android 8.0.0; SM-A730F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 YaBrowser/19.12.1.121.00 Mobile Safari/537.36' }
220
+ it { should eq false }
221
+ end
222
+
223
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 YaBrowser/19.1.1.573 (beta) Yowser/2.5 Safari/537.36' do
224
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.99 YaBrowser/19.1.1.573 (beta) Yowser/2.5 Safari/537.36' }
225
+ it { should eq false }
226
+ end
227
+
228
+ context 'Mozilla/5.0 (Linux; arm_64; Android 9; HTC U12+) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 YaBrowser/19.12.3.101.00 Mobile Safari/537.36' do
229
+ let(:ua_string) { 'Mozilla/5.0 (Linux; arm_64; Android 9; HTC U12+) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 YaBrowser/19.12.3.101.00 Mobile Safari/537.36' }
230
+ it { should eq false }
231
+ end
232
+
233
+ context 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.2.167 Yowser/2.5 Safari/537.36' do
234
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.2.167 Yowser/2.5 Safari/537.36' }
235
+ it { should eq false }
236
+ end
237
+
238
+ context 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 YaBrowser/19.4.0.2397 Yowser/2.5 Safari/D9B371' do
239
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 YaBrowser/19.4.0.2397 Yowser/2.5 Safari/D9B371' }
240
+ it { should eq false }
241
+ end
242
+
243
+ context 'Mozilla/5.0 (Linux; arm_64; Android 7.0; Lenovo TB-7504X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.6.88.00 Mobile Safari/537.36' do
244
+ let(:ua_string) { 'Mozilla/5.0 (Linux; arm_64; Android 7.0; Lenovo TB-7504X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.6.88.00 Mobile Safari/537.36' }
245
+ it { should eq false }
246
+ end
247
+
248
+ context 'Mozilla/5.0 (Linux; arm_64; Android 10; SM-A805F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.6.88.00 Mobile Safari/537.36' do
249
+ let(:ua_string) { 'Mozilla/5.0 (Linux; arm_64; Android 10; SM-A805F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 YaBrowser/19.9.6.88.00 Mobile Safari/537.36' }
250
+ it { should eq false }
251
+ end
252
+
253
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2220 Yowser/2.5 Yptp/1.21 Safari/537.36' do
254
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 YaBrowser/20.3.0.2220 Yowser/2.5 Yptp/1.21 Safari/537.36' }
255
+ it { should eq false }
256
+ end
257
+
258
+ context 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.195 Amigo/50.0.2661.195 MRCHROME SOC Safari/537.36' do
259
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.195 Amigo/50.0.2661.195 MRCHROME SOC Safari/537.36' }
260
+ it { should eq false }
261
+ end
262
+
263
+ context 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.191 Amigo/54.0.2840.191 MRCHROME SOC Safari/537.36' do
264
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.191 Amigo/54.0.2840.191 MRCHROME SOC Safari/537.36' }
265
+ it { should eq true }
266
+ end
267
+
268
+ context 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.197 Amigo/56.0.2924.197 MRCHROME SOC Safari/537.36' do
269
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.197 Amigo/56.0.2924.197 MRCHROME SOC Safari/537.36' }
270
+ it { should eq true }
271
+ end
272
+
273
+ context 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.125 Amigo/61.0.3163.125 MRCHROME SOC Safari/537.36' do
274
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.125 Amigo/61.0.3163.125 MRCHROME SOC Safari/537.36' }
275
+ it { should eq true }
276
+ end
277
+
278
+ context 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3029.110 Amigo/68.0.3029.110 MRCHROME SOC Safari/647.36' do
279
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3029.110 Amigo/68.0.3029.110 MRCHROME SOC Safari/647.36' }
280
+ it { should eq false }
281
+ end
282
+
283
+ context 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 SputnikBrowser/2.2.1162.0 Safari/537.36' do
284
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 SputnikBrowser/2.2.1162.0 Safari/537.36' }
285
+ it { should eq false }
286
+ end
287
+
288
+ context 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 SputnikBrowser/3.2.1694.0 (GOST) Safari/537.36' do
289
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 SputnikBrowser/3.2.1694.0 (GOST) Safari/537.36' }
290
+ it { should eq true }
291
+ end
292
+
293
+ context 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 SputnikBrowser/4.1.2801.0 Safari/537.36' do
294
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 SputnikBrowser/4.1.2801.0 Safari/537.36' }
295
+ it { should eq true }
296
+ end
297
+
298
+ context 'Mozilla/5.0 (Linux; U; Android 8.0.0; zh-CN; STF-AL00 Build/HUAWEISTF-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/11.9.7.977 Mobile Safari/537.36NULL' do
299
+ let(:ua_string) { 'Mozilla/5.0 (Linux; U; Android 8.0.0; zh-CN; STF-AL00 Build/HUAWEISTF-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/11.9.7.977 Mobile Safari/537.36NULL' }
300
+ it { should eq true }
301
+ end
302
+
303
+ context 'Mozilla/5.0 (Linux; U; Android 5.0.2; zh-CN; Redmi Note 2 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.9.0.1070 Mobile Safari/537.36' do
304
+ let(:ua_string) { 'Mozilla/5.0 (Linux; U; Android 5.0.2; zh-CN; Redmi Note 2 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.9.0.1070 Mobile Safari/537.36' }
305
+ it { should eq true }
306
+ end
307
+
308
+ context 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-US; FX100,8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.11.3.1204 Mobile Safari/537.36' do
309
+ let(:ua_string) { 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-US; FX100,8 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.11.3.1204 Mobile Safari/537.36' }
310
+ it { should eq true }
311
+ end
312
+
313
+ context 'Mozilla/5.0 (Linux; U; Android 8.1.0; en-US; SM-G615FU Build/M1AJQ) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.0.1207 Mobile Safari/537.36' do
314
+ let(:ua_string) { 'Mozilla/5.0 (Linux; U; Android 8.1.0; en-US; SM-G615FU Build/M1AJQ) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.0.1207 Mobile Safari/537.36' }
315
+ it { should eq true }
316
+ end
317
+
318
+ context 'Mozilla/5.0 (Linux; U; Android 10; en-US; SM-A515F Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.2.1208 Mobile Safari/537.36' do
319
+ let(:ua_string) { 'Mozilla/5.0 (Linux; U; Android 10; en-US; SM-A515F Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.2.1208 Mobile Safari/537.36' }
320
+ it { should eq false }
321
+ end
322
+
323
+ context 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-US; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.5.1209 Mobile Safari/537.36' do
324
+ let(:ua_string) { 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-US; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.13.5.1209 Mobile Safari/537.36' }
325
+ it { should eq false }
326
+ end
327
+
328
+ # Set name: check-same-site-strict-bug
329
+ context 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0 Mobile/15B202 Safari/604.3' do
330
+ let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/11.0 Mobile/15B202 Safari/604.3' }
331
+ it { should eq true }
332
+ end
333
+
334
+ context 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Hotjar Version/11.0 Mobile/15E148 Safari/604.1' do
335
+ let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Hotjar Version/11.0 Mobile/15E148 Safari/604.1' }
336
+ it { should eq true }
337
+ end
338
+
339
+ context 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X; Tesseract/1.0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1' do
340
+ let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X; Tesseract/1.0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1' }
341
+ it { should eq true }
342
+ end
343
+
344
+ context 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 YaBrowser/20.3.1.252.10 Mobile/15E148 Safari/604.1' do
345
+ let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 YaBrowser/20.3.1.252.10 Mobile/15E148 Safari/604.1' }
346
+ it { should eq true }
347
+ end
348
+
349
+ context 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/605.1.15' do
350
+ let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/605.1.15' }
351
+ it { should eq true }
352
+ end
353
+
354
+ context 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 YaBrowser/20.2.3.326.10 Mobile/15E148 Safari/604.1' do
355
+ let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 YaBrowser/20.2.3.326.10 Mobile/15E148 Safari/604.1' }
356
+ it { should eq true }
357
+ end
358
+
359
+ context 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/945AE' do
360
+ let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Mobile/15E148 Safari/945AE' }
361
+ it { should eq true }
362
+ end
363
+
364
+ context 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1.15/Smooz/1.100.0.2839' do
365
+ let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1.15/Smooz/1.100.0.2839' }
366
+ it { should eq true }
367
+ end
368
+
369
+ context 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/604.1' do
370
+ let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/604.1' }
371
+ it { should eq true }
372
+ end
373
+
374
+ context 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A362 Safari/604.1' do
375
+ let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A362 Safari/604.1' }
376
+ it { should eq true }
377
+ end
378
+
379
+ context 'Mozilla/5.0 (iPad; CPU OS 11_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0 Mobile/15C107 Safari/604.1' do
380
+ let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 11_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Version/11.0 Mobile/15C107 Safari/604.1' }
381
+ it { should eq true }
382
+ end
383
+
384
+ context 'Mozilla/5.0 (iPad; CPU OS 11_2_5 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0 EdgiOS/44.13.6 Mobile/15D60 Safari/604.5.6' do
385
+ let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 11_2_5 like Mac OS X) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0 EdgiOS/44.13.6 Mobile/15D60 Safari/604.5.6' }
386
+ it { should eq true }
387
+ end
388
+
389
+ context 'Mozilla/5.0 (iPad; CPU OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 EdgiOS/42.3.6 Mobile/15G77 Safari/605.1.15' do
390
+ let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 EdgiOS/42.3.6 Mobile/15G77 Safari/605.1.15' }
391
+ it { should eq true }
392
+ end
393
+
394
+ context 'Mozilla/5.0 (iPad; CPU OS 12_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 YaBrowser/20.3.2.277.11 Mobile/15E148 Safari/604.1' do
395
+ let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 12_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 YaBrowser/20.3.2.277.11 Mobile/15E148 Safari/604.1' }
396
+ it { should eq true }
397
+ end
398
+
399
+ context 'Mozilla/5.0 (iPad; CPU OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/605.1.15' do
400
+ let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/605.1.15' }
401
+ it { should eq true }
402
+ end
403
+
404
+ context 'Mozilla/5.0 (iPad; CPU OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 EdgiOS/44.13.7 Mobile/15E148 Safari/605.1.15' do
405
+ let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 EdgiOS/44.13.7 Mobile/15E148 Safari/605.1.15' }
406
+ it { should eq true }
407
+ end
408
+
409
+ context 'Mozilla/5.0 (iPad; CPU OS 13_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 YaBrowser/20.3.2.277.11 Mobile/15E148 Safari/604.1' do
410
+ let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 13_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 YaBrowser/20.3.2.277.11 Mobile/15E148 Safari/604.1' }
411
+ it { should eq true }
412
+ end
413
+
414
+ context 'Mozilla/5.0 (iPad; CPU OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1.15' do
415
+ let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1.15' }
416
+ it { should eq true }
417
+ end
418
+
419
+ context 'Mozilla/5.0 (iPad; CPU OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1 NAVER(inapp; search; 700; 10.20.0)' do
420
+ let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1 NAVER(inapp; search; 700; 10.20.0)' }
421
+ it { should eq true }
422
+ end
423
+
424
+ context 'Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 EdgiOS/45.2.16 Mobile/15E148 Safari/605.1.15' do
425
+ let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 EdgiOS/45.2.16 Mobile/15E148 Safari/605.1.15' }
426
+ it { should eq true }
427
+ end
428
+
429
+ context 'Mozilla/5.0 (iPad; CPU OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 EdgiOS/45.2.16 Mobile/15E148 Safari/605.1.15' do
430
+ let(:ua_string) { 'Mozilla/5.0 (iPad; CPU OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 EdgiOS/45.2.16 Mobile/15E148 Safari/605.1.15' }
431
+ it { should eq true }
432
+ end
433
+
434
+ context 'Mozilla/5.0 (iPod touch; CPU iPhone OS 11_0_1 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A402 Safari/604.1' do
435
+ let(:ua_string) { 'Mozilla/5.0 (iPod touch; CPU iPhone OS 11_0_1 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A402 Safari/604.1' }
436
+ it { should eq true }
437
+ end
438
+
439
+ context 'Mozilla/5.0 (iPod touch; CPU iPhone OS 11_0_2 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A421 Safari/604.1' do
440
+ let(:ua_string) { 'Mozilla/5.0 (iPod touch; CPU iPhone OS 11_0_2 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A421 Safari/604.1' }
441
+ it { should eq true }
442
+ end
443
+
444
+ context 'Mozilla/5.0 (iPod touch; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1' do
445
+ let(:ua_string) { 'Mozilla/5.0 (iPod touch; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1' }
446
+ it { should eq true }
447
+ end
448
+
449
+ context 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko)' do
450
+ let(:ua_string) { 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko)' }
451
+ it { should eq true }
452
+ end
453
+
454
+ context 'Mozilla/5.0 (iPod touch; CPU iPhone OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0' do
455
+ let(:ua_string) { 'Mozilla/5.0 (iPod touch; CPU iPhone OS 12_4_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0' }
456
+ it { should eq true }
457
+ end
458
+
459
+ context 'Mozilla/5.0 (iPod touch; CPU iPhone OS 13_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.1 Mobile/15E148 Safari/604.1' do
460
+ let(:ua_string) { 'Mozilla/5.0 (iPod touch; CPU iPhone OS 13_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.1 Mobile/15E148 Safari/604.1' }
461
+ it { should eq true }
462
+ end
463
+
464
+ context 'Mozilla/5.0 (iPod touch; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1.15' do
465
+ let(:ua_string) { 'Mozilla/5.0 (iPod touch; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/605.1.15' }
466
+ it { should eq true }
467
+ end
468
+
469
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/11.0.3 Safari/603.3.8' do
470
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/11.0.3 Safari/603.3.8' }
471
+ it { should eq true }
472
+ end
473
+
474
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1; en-US) AppleWebKit/536.26.21 (KHTML, like Gecko) Version/11.0.2 Safari/536.26.21' do
475
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1; en-US) AppleWebKit/536.26.21 (KHTML, like Gecko) Version/11.0.2 Safari/536.26.21' }
476
+ it { should eq true }
477
+ end
478
+
479
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1; en-IE) AppleWebKit/601.5.4 (KHTML, like Gecko) Version/12.0.4 Safari/601.5.4' do
480
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1; en-IE) AppleWebKit/601.5.4 (KHTML, like Gecko) Version/12.0.4 Safari/601.5.4' }
481
+ it { should eq true }
482
+ end
483
+
484
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/11.0.1 Safari/601.3.9' do
485
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/11.0.1 Safari/601.3.9' }
486
+ it { should eq true }
487
+ end
488
+
489
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Safari/604.1.38' do
490
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Safari/604.1.38' }
491
+ it { should eq true }
492
+ end
493
+
494
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/13.0 Safari/604.1' do
495
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/604.3.5 (KHTML, like Gecko) Version/13.0 Safari/604.1' }
496
+ it { should eq true }
497
+ end
498
+
499
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/604.4.3 (KHTML, like Gecko) Version/11.0.2 Safari/604.4.3' do
500
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/604.4.3 (KHTML, like Gecko) Version/11.0.2 Safari/604.4.3' }
501
+ it { should eq true }
502
+ end
503
+
504
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/17D50 Safari/604.1' do
505
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/17D50 Safari/604.1' }
506
+ it { should eq true }
507
+ end
508
+
509
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15/Smooz/1.96.6.2725' do
510
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Safari/605.1.15/Smooz/1.96.6.2725' }
511
+ it { should eq true }
512
+ end
513
+
514
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Safari/605.1.15' do
515
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.4 Safari/605.1.15' }
516
+ it { should eq true }
517
+ end
518
+
519
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/627.9.17 (KHTML, like Gecko) Version/13.0.4 Safari/627.9.17' do
520
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/627.9.17 (KHTML, like Gecko) Version/13.0.4 Safari/627.9.17' }
521
+ it { should eq true }
522
+ end
523
+
524
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15 DuckDuckGo/7' do
525
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15 DuckDuckGo/7' }
526
+ it { should eq true }
527
+ end
528
+
529
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1; en-US) AppleWebKit/604.4.6 (KHTML, like Gecko) Version/12.0.1 Safari/604.4.6' do
530
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1; en-US) AppleWebKit/604.4.6 (KHTML, like Gecko) Version/12.0.1 Safari/604.4.6' }
531
+ it { should eq true }
532
+ end
533
+
534
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15,gzip(gfe)' do
535
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15,gzip(gfe)' }
536
+ it { should eq true }
537
+ end
538
+
539
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.05 Safari/605.1.15' do
540
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.05 Safari/605.1.15' }
541
+ it { should eq true }
542
+ end
543
+
544
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Chrome/81.0.4044.62 Vivaldi/2.6.1566.49 Safari/605.1.15' do
545
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Chrome/81.0.4044.62 Vivaldi/2.6.1566.49 Safari/605.1.15' }
546
+ it { should eq false }
547
+ end
548
+
549
+ context 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Version/13.0 Safari/605.1.15 Chrome/75.0.3770.145 Vivaldi/2.6.1566.49' do
550
+ let(:ua_string) { 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Version/13.0 Safari/605.1.15 Chrome/75.0.3770.145 Vivaldi/2.6.1566.49' }
551
+ it { should eq false }
552
+ end
553
+
554
+ # Set name: check-same-site-not-supported
555
+ context 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)' do
556
+ let(:ua_string) { 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)' }
557
+ it { should eq true }
558
+ end
559
+
560
+ context 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)' do
561
+ let(:ua_string) { 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)' }
562
+ it { should eq true }
563
+ end
564
+
565
+ context 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)' do
566
+ let(:ua_string) { 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)' }
567
+ it { should eq true }
568
+ end
569
+
570
+ context 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)' do
571
+ let(:ua_string) { 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)' }
572
+ it { should eq true }
573
+ end
574
+
575
+ context 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)' do
576
+ let(:ua_string) { 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)' }
577
+ it { should eq true }
578
+ end
579
+
580
+ context 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)' do
581
+ let(:ua_string) { 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)' }
582
+ it { should eq true }
583
+ end
584
+
585
+ context 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; KTXN)' do
586
+ let(:ua_string) { 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; KTXN)' }
587
+ it { should eq true }
588
+ end
589
+
590
+ context 'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 125LA; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)' do
591
+ let(:ua_string) { 'Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; 125LA; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)' }
592
+ it { should eq true }
593
+ end
594
+
595
+ context 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2)' do
596
+ let(:ua_string) { 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2)' }
597
+ it { should eq true }
598
+ end
599
+
600
+ context 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)' do
601
+ let(:ua_string) { 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)' }
602
+ it { should eq true }
603
+ end
604
+
605
+ context 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)' do
606
+ let(:ua_string) { 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)' }
607
+ it { should eq true }
608
+ end
609
+
610
+ context 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko' do
611
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko' }
612
+ it { should eq true }
613
+ end
614
+
615
+ context 'Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko' do
616
+ let(:ua_string) { 'Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko' }
617
+ it { should eq true }
618
+ end
619
+
620
+ context 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko' do
621
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko' }
622
+ it { should eq true }
623
+ end
624
+
625
+ context 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' do
626
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko' }
627
+ it { should eq true }
628
+ end
629
+
630
+ context 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko' do
631
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko' }
632
+ it { should eq true }
633
+ end
634
+
635
+ context 'Mozilla/5.0 CK={} (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko' do
636
+ let(:ua_string) { 'Mozilla/5.0 CK={} (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko' }
637
+ it { should eq true }
638
+ end
639
+
640
+ # Set name: check
641
+ context 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:58.0) Gecko/20100101 Firefox/60.0' do
642
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:58.0) Gecko/20100101 Firefox/60.0' }
643
+ it { should eq false }
644
+ end
645
+
646
+ context 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0' do
647
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0' }
648
+ it { should eq false }
649
+ end
650
+
651
+ context 'Mozilla/5.0 (X11; Linux x86_64; rv:60.9) Gecko/20100101 Goanna/4.4 Firefox/60.9 PaleMoon/28.7.2' do
652
+ let(:ua_string) { 'Mozilla/5.0 (X11; Linux x86_64; rv:60.9) Gecko/20100101 Goanna/4.4 Firefox/60.9 PaleMoon/28.7.2' }
653
+ it { should eq false }
654
+ end
655
+
656
+ context 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:60.9) Gecko/20100101 Goanna/4.4 Firefox/60.9 PaleMoon/28.7.1' do
657
+ let(:ua_string) { 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:60.9) Gecko/20100101 Goanna/4.4 Firefox/60.9 PaleMoon/28.7.1' }
658
+ it { should eq false }
659
+ end
660
+
661
+ context 'Opera/9.80 (Windows NT 5.1; MRA 8.0 (build 5880)) Presto/2.12.388 Version/12.18' do
662
+ let(:ua_string) { 'Opera/9.80 (Windows NT 5.1; MRA 8.0 (build 5880)) Presto/2.12.388 Version/12.18' }
663
+ it { should eq false }
664
+ end
665
+
666
+ context 'Opera/9.80 (Windows NT 6.1; U; MRA 5.9 (build 4953); en) Presto/2.10.229 Version/11.61' do
667
+ let(:ua_string) { 'Opera/9.80 (Windows NT 6.1; U; MRA 5.9 (build 4953); en) Presto/2.10.229 Version/11.61' }
668
+ it { should eq false }
669
+ end
670
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: same_site_ua_checker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Reshetnikov
@@ -35,7 +35,24 @@ email: []
35
35
  executables: []
36
36
  extensions: []
37
37
  extra_rdoc_files: []
38
- files: []
38
+ files:
39
+ - Gemfile
40
+ - Gemfile.lock
41
+ - _cli/generate_regex_classes.rb
42
+ - _cli/generate_tests.rb
43
+ - lib/same_site_ua_checker.rb
44
+ - lib/same_site_ua_checker/gem_version.rb
45
+ - lib/same_site_ua_checker/regex_list_abstract.rb
46
+ - lib/same_site_ua_checker/regex_list_same_site_none_bug.rb
47
+ - lib/same_site_ua_checker/regex_list_same_site_not_supported.rb
48
+ - lib/same_site_ua_checker/regex_list_same_site_strict_bug.rb
49
+ - lib/same_site_ua_checker/regex_version_abstract.rb
50
+ - lib/same_site_ua_checker/regex_version_chrome.rb
51
+ - lib/same_site_ua_checker/regex_version_ucbrowser.rb
52
+ - lib/same_site_ua_checker/version.rb
53
+ - readme.md
54
+ - same_site_ua_checker.gemspec
55
+ - spec/same_site_ua_checker_spec.rb
39
56
  homepage: ''
40
57
  licenses:
41
58
  - private
@@ -60,4 +77,5 @@ rubygems_version: 2.6.11
60
77
  signing_key:
61
78
  specification_version: 4
62
79
  summary: Check if User-Agent supports SameSite=None
63
- test_files: []
80
+ test_files:
81
+ - spec/same_site_ua_checker_spec.rb