ronin-web-user_agents 0.1.0.beta1

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.
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+ require 'ronin/web/user_agents/os/android'
3
+
4
+ describe Ronin::Web::UserAgents::OS::Android do
5
+ describe "VERSIONS" do
6
+ subject { described_class::VERSIONS }
7
+
8
+ it { expect(subject).to_not be_empty }
9
+ it { expect(subject).to include('10') }
10
+ it { expect(subject).to include('10.0') }
11
+ it { expect(subject).to include('11') }
12
+ it { expect(subject).to include('11.0') }
13
+ it { expect(subject).to include('12') }
14
+ it { expect(subject).to include('12.1') }
15
+ it { expect(subject).to include('4.0.4') }
16
+ it { expect(subject).to include('4.1.2') }
17
+ it { expect(subject).to include('4.2.2') }
18
+ it { expect(subject).to include('4.4.2') }
19
+ it { expect(subject).to include('4.4.4') }
20
+ it { expect(subject).to include('5.0') }
21
+ it { expect(subject).to include('5.0.2') }
22
+ it { expect(subject).to include('5.1') }
23
+ it { expect(subject).to include('5.1.1') }
24
+ it { expect(subject).to include('6.0') }
25
+ it { expect(subject).to include('6.0.1') }
26
+ it { expect(subject).to include('7.0') }
27
+ it { expect(subject).to include('7.1.1') }
28
+ it { expect(subject).to include('7.1.2') }
29
+ it { expect(subject).to include('8.0') }
30
+ it { expect(subject).to include('8.0.0') }
31
+ it { expect(subject).to include('8.1') }
32
+ it { expect(subject).to include('8.1.0') }
33
+ it { expect(subject).to include('9') }
34
+ it { expect(subject).to include('9.0') }
35
+ end
36
+
37
+ describe "ARCHES" do
38
+ subject { described_class::ARCHES }
39
+
40
+ it "must map :arm to 'arm'" do
41
+ expect(subject[:arm]).to eq('arm')
42
+ end
43
+
44
+ it "must map :arm64 to 'arm_64'" do
45
+ expect(subject[:arm64]).to eq('arm_64')
46
+ end
47
+ end
48
+
49
+ describe "DEVICES" do
50
+ subject { described_class::DEVICES }
51
+
52
+ it { expect(subject).to_not be_empty }
53
+ it { expect(subject).to all(be_kind_of(String)) }
54
+ end
55
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+ require 'ronin/web/user_agents/os/linux'
3
+
4
+ describe Ronin::Web::UserAgents::OS::Linux do
5
+ describe "DISTROS" do
6
+ subject { described_class::DISTROS }
7
+
8
+ it "must map :ubuntu to 'Ubuntu'" do
9
+ expect(subject[:ubuntu]).to eq('Ubuntu')
10
+ end
11
+
12
+ it "must map :fedora to 'Fedora'" do
13
+ expect(subject[:fedora]).to eq('Fedora')
14
+ end
15
+
16
+ it "must map :arch to 'Arch'" do
17
+ expect(subject[:arch]).to eq('Arch')
18
+ end
19
+
20
+ it "must map nil to nil" do
21
+ expect(subject[nil]).to be(nil)
22
+ end
23
+ end
24
+
25
+ describe "ARCHES" do
26
+ subject { described_class::ARCHES }
27
+
28
+ it "must map :x86_64 to 'x86_64'" do
29
+ expect(subject[:x86_64]).to eq('x86_64')
30
+ end
31
+
32
+ it "must map :aarch64 to 'aarch64'" do
33
+ expect(subject[:aarch64]).to eq('aarch64')
34
+ end
35
+
36
+ it "must map :arm64 to 'aarch64'" do
37
+ expect(subject[:arm64]).to eq('aarch64')
38
+ end
39
+
40
+ it "must map :i686 to 'i686'" do
41
+ expect(subject[:i686]).to eq('i686')
42
+ end
43
+
44
+ it "must map :x86 to 'i686'" do
45
+ expect(subject[:x86]).to eq('i686')
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+ require 'ronin/web/user_agents/os/mac_os'
3
+
4
+ describe Ronin::Web::UserAgents::OS::MacOS do
5
+ describe "VERSIONS" do
6
+ subject { described_class::VERSIONS }
7
+
8
+ it { expect(subject).to_not be_empty }
9
+ it { expect(subject).to include('10.10') }
10
+ it { expect(subject).to include('10.10.3') }
11
+ it { expect(subject).to include('10.10.4') }
12
+ it { expect(subject).to include('10.11.6') }
13
+ it { expect(subject).to include('10.12.0') }
14
+ it { expect(subject).to include('10.12.1') }
15
+ it { expect(subject).to include('10.12.6') }
16
+ it { expect(subject).to include('10.13.4') }
17
+ it { expect(subject).to include('10.13.6') }
18
+ it { expect(subject).to include('10.14.0') }
19
+ it { expect(subject).to include('10.14.1') }
20
+ it { expect(subject).to include('10.14.2') }
21
+ it { expect(subject).to include('10.14.5') }
22
+ it { expect(subject).to include('10.14.6') }
23
+ it { expect(subject).to include('10.14.8') }
24
+ it { expect(subject).to include('10.15.1') }
25
+ it { expect(subject).to include('10.15.2') }
26
+ it { expect(subject).to include('10.15.4') }
27
+ it { expect(subject).to include('10.15.6') }
28
+ it { expect(subject).to include('10.15.7') }
29
+ it { expect(subject).to include('10.16') }
30
+ it { expect(subject).to include('10.16.0') }
31
+ it { expect(subject).to include('10.31.7') }
32
+ it { expect(subject).to include('10.4') }
33
+ it { expect(subject).to include('10.55') }
34
+ it { expect(subject).to include('10.7.0') }
35
+ it { expect(subject).to include('11.0.0') }
36
+ it { expect(subject).to include('11.15') }
37
+ it { expect(subject).to include('11.6.3') }
38
+ it { expect(subject).to include('12.2.0') }
39
+ it { expect(subject).to include('16.55') }
40
+ end
41
+
42
+ describe "VERSIONS_UNDERSCORED" do
43
+ subject { described_class::VERSIONS_UNDERSCORED }
44
+
45
+ it "must map known X.Y versions to X_Y notation" do
46
+ expect(subject['10.10']).to eq('10_10')
47
+ end
48
+
49
+ it "must map known X.Y.Z versions to X_Y_Z notation" do
50
+ expect(subject['10.10.3']).to eq('10_10_3')
51
+ end
52
+
53
+ it "must map unknwon X.Y versions to X_Y notation" do
54
+ expect(subject['20.20']).to eq('20_20')
55
+ end
56
+
57
+ it "must map unknwon X.Y.Z versions to X_Y_Z notation" do
58
+ expect(subject['20.20.20']).to eq('20_20_20')
59
+ end
60
+ end
61
+
62
+ describe "ARCHES" do
63
+ subject { described_class::ARCHES }
64
+
65
+ it "must map :intel to 'Intel'" do
66
+ expect(subject[:intel]).to eq('Intel')
67
+ end
68
+
69
+ it "must map :x86_64 to 'Intel'" do
70
+ expect(subject[:x86_64]).to eq('Intel')
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+ require 'ronin/web/user_agents/os/windows'
3
+
4
+ describe Ronin::Web::UserAgents::OS::Windows do
5
+ describe "VERSIONS" do
6
+ subject { described_class::VERSIONS }
7
+
8
+ it "must map :xp to '5.2'" do
9
+ expect(subject[:xp]).to eq('5.2')
10
+ end
11
+
12
+ it "must map :vista to '6.0'" do
13
+ expect(subject[:vista]).to eq('6.0')
14
+ end
15
+
16
+ it "must map 7 to '6.1'" do
17
+ expect(subject[7]).to eq('6.1')
18
+ end
19
+
20
+ it "must map 8 to '6.2'" do
21
+ expect(subject[8]).to eq('6.2')
22
+ end
23
+
24
+ it "must map 8.1 to '6.3'" do
25
+ expect(subject[8.1]).to eq('6.3')
26
+ end
27
+
28
+ it "must map 10 to '10.0'" do
29
+ expect(subject[10]).to eq('10.0')
30
+ end
31
+ end
32
+
33
+ describe "ARCHES" do
34
+ subject { described_class::ARCHES }
35
+
36
+ it "must map :wow64 to 'WOW64'" do
37
+ expect(subject[:wow64]).to eq('WOW64')
38
+ end
39
+
40
+ it "must map :win64 to 'Win64; x64'" do
41
+ expect(subject[:win64]).to eq('Win64; x64')
42
+ end
43
+
44
+ it "must map :x86_64 to 'Win64; x64'" do
45
+ expect(subject[:x86_64]).to eq('Win64; x64')
46
+ end
47
+
48
+ it "must map nil to nil" do
49
+ expect(subject[nil]).to be(nil)
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,4 @@
1
+ require 'rspec'
2
+ require 'simplecov'
3
+
4
+ SimpleCov.start
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+ require 'ronin/web/user_agents'
3
+
4
+ describe Ronin::Web::UserAgents do
5
+ it "must define a VERSION constant" do
6
+ expect(subject.const_defined?('VERSION',false)).to be(true)
7
+ end
8
+
9
+ describe ".chrome" do
10
+ it "must return Ronin::Web::UserAgents::Chrome" do
11
+ expect(subject.chrome).to eq(Ronin::Web::UserAgents::Chrome)
12
+ end
13
+ end
14
+
15
+ describe ".google_chrome" do
16
+ it "must return Ronin::Web::UserAgents::Chrome" do
17
+ expect(subject.google_chrome).to eq(Ronin::Web::UserAgents::Chrome)
18
+ end
19
+ end
20
+
21
+ describe ".firefox" do
22
+ it "must return Ronin::Web::UserAgents::Firefox" do
23
+ expect(subject.firefox).to eq(Ronin::Web::UserAgents::Firefox)
24
+ end
25
+ end
26
+
27
+ describe ".google_bot" do
28
+ it "must return Ronin::Web::UserAgents::GoogleBot" do
29
+ expect(subject.google_bot).to eq(Ronin::Web::UserAgents::GoogleBot)
30
+ end
31
+ end
32
+
33
+ describe ".random" do
34
+ it "must return a random User-Agent string" do
35
+ expect(subject.random).to match(
36
+ %r{
37
+ ^(?:
38
+ Mozilla/5\.0\ \([^\)]+\)\ AppleWebKit/537\.36\ \(KHTML,\ like\ Gecko\)\ Chrome/\d+(\.\d+)*\ (?:Mobile\ )?Safari/537\.36|
39
+ Mozilla/5\.0\ \([^\)]+\)\ Gecko/(?:20100101|\d+(?:\.\d+)*)\ Firefox/\d+(\.\d+)*
40
+ )$
41
+ }x
42
+ )
43
+ end
44
+
45
+ it "must return a random User-Agent string each time" do
46
+ expect(subject.random).to_not eq(subject.random)
47
+ end
48
+ end
49
+ end
metadata ADDED
@@ -0,0 +1,110 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ronin-web-user_agents
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.beta1
5
+ platform: ruby
6
+ authors:
7
+ - Postmodern
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-01-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ description: Yet another User-Agent string generator library.
28
+ email: postmodern.mod3@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files:
32
+ - COPYING.txt
33
+ - ChangeLog.md
34
+ - README.md
35
+ files:
36
+ - ".document"
37
+ - ".github/workflows/ruby.yml"
38
+ - ".gitignore"
39
+ - ".rspec"
40
+ - ".ruby-version"
41
+ - ".yardopts"
42
+ - COPYING.txt
43
+ - ChangeLog.md
44
+ - Gemfile
45
+ - README.md
46
+ - Rakefile
47
+ - corpus/.gitkeep
48
+ - data/android/devices.txt
49
+ - data/chrome/versions.txt
50
+ - data/firefox/langs.txt
51
+ - data/firefox/versions.txt
52
+ - gemspec.yml
53
+ - lib/ronin/web/user_agents.rb
54
+ - lib/ronin/web/user_agents/chrome.rb
55
+ - lib/ronin/web/user_agents/data_dir.rb
56
+ - lib/ronin/web/user_agents/firefox.rb
57
+ - lib/ronin/web/user_agents/google_bot.rb
58
+ - lib/ronin/web/user_agents/os/android.rb
59
+ - lib/ronin/web/user_agents/os/linux.rb
60
+ - lib/ronin/web/user_agents/os/mac_os.rb
61
+ - lib/ronin/web/user_agents/os/windows.rb
62
+ - lib/ronin/web/user_agents/version.rb
63
+ - ronin-web-user_agents.gemspec
64
+ - scripts/index_user_agents
65
+ - spec/chrome_spec.rb
66
+ - spec/firefox_spec.rb
67
+ - spec/google_bot_spec.rb
68
+ - spec/os/android_spec.rb
69
+ - spec/os/linux_spec.rb
70
+ - spec/os/mac_os_spec.rb
71
+ - spec/os/windows_spec.rb
72
+ - spec/spec_helper.rb
73
+ - spec/user_agents_spec.rb
74
+ homepage: https://ronin-rb.dev/
75
+ licenses:
76
+ - LGPL-3.0
77
+ metadata:
78
+ documentation_uri: https://rubydoc.info/gems/ronin-web-user_agents
79
+ source_code_uri: https://github.com/ronin-rb/ronin-web-user_agents
80
+ bug_tracker_uri: https://github.com/ronin-rb/ronin-web-user_agents/issues
81
+ changelog_uri: https://github.com/ronin-rb/ronin-web-user_agents/blob/master/ChangeLog.md
82
+ rubygems_mfa_required: 'true'
83
+ post_install_message:
84
+ rdoc_options: []
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 3.0.0
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ requirements: []
98
+ rubygems_version: 3.3.26
99
+ signing_key:
100
+ specification_version: 4
101
+ summary: generate random User-Agent strings
102
+ test_files:
103
+ - spec/chrome_spec.rb
104
+ - spec/firefox_spec.rb
105
+ - spec/google_bot_spec.rb
106
+ - spec/os/android_spec.rb
107
+ - spec/os/linux_spec.rb
108
+ - spec/os/mac_os_spec.rb
109
+ - spec/os/windows_spec.rb
110
+ - spec/user_agents_spec.rb