TEST: remaining core/filter specs
This commit is contained in:
70
spec/beef/core/filter/browser_spec.rb
Normal file
70
spec/beef/core/filter/browser_spec.rb
Normal file
@@ -0,0 +1,70 @@
|
||||
RSpec.describe BeEF::Filters do
|
||||
describe '.is_valid_browsername?' do
|
||||
it 'validates browser names' do
|
||||
expect(BeEF::Filters.is_valid_browsername?('FF')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_browsername?('IE')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_browsername?('CH')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_browsername?('TOOLONG')).to be(false)
|
||||
expect(BeEF::Filters.is_valid_browsername?('')).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_osname?' do
|
||||
it 'validates OS names' do
|
||||
expect(BeEF::Filters.is_valid_osname?('Windows XP')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_osname?('A')).to be(false) # too short
|
||||
expect(BeEF::Filters.is_valid_osname?('')).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_hwname?' do
|
||||
it 'validates hardware names' do
|
||||
expect(BeEF::Filters.is_valid_hwname?('iPhone')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_hwname?('A')).to be(false) # too short
|
||||
expect(BeEF::Filters.is_valid_hwname?('')).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_browserversion?' do
|
||||
it 'validates browser versions' do
|
||||
expect(BeEF::Filters.is_valid_browserversion?('1.0')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_browserversion?('1.2.3.4')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_browserversion?('UNKNOWN')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_browserversion?('ALL')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_browserversion?('invalid')).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_osversion?' do
|
||||
it 'validates OS versions' do
|
||||
expect(BeEF::Filters.is_valid_osversion?('10.0')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_osversion?('UNKNOWN')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_osversion?('ALL')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_osversion?('invalid!')).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_browserstring?' do
|
||||
it 'validates browser/UA strings' do
|
||||
expect(BeEF::Filters.is_valid_browserstring?('Mozilla/5.0')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_browserstring?('A' * 300)).to be(true)
|
||||
expect(BeEF::Filters.is_valid_browserstring?('A' * 301)).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_cookies?' do
|
||||
it 'validates cookie strings' do
|
||||
expect(BeEF::Filters.is_valid_cookies?('session=abc123')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_cookies?('A' * 2000)).to be(true)
|
||||
expect(BeEF::Filters.is_valid_cookies?('A' * 2001)).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_browser_plugins?' do
|
||||
it 'validates browser plugin strings' do
|
||||
expect(BeEF::Filters.is_valid_browser_plugins?('Flash, Java')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_browser_plugins?('A' * 1000)).to be(true)
|
||||
expect(BeEF::Filters.is_valid_browser_plugins?('A' * 1001)).to be(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
51
spec/beef/core/filter/command_spec.rb
Normal file
51
spec/beef/core/filter/command_spec.rb
Normal file
@@ -0,0 +1,51 @@
|
||||
RSpec.describe BeEF::Filters do
|
||||
describe '.is_valid_path_info?' do
|
||||
it 'validates path info' do
|
||||
expect(BeEF::Filters.is_valid_path_info?('/path/to/resource')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_path_info?("\x00")).to be(false)
|
||||
expect(BeEF::Filters.is_valid_path_info?(nil)).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_hook_session_id?' do
|
||||
it 'validates hook session IDs' do
|
||||
expect(BeEF::Filters.is_valid_hook_session_id?('abc123')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_hook_session_id?('')).to be(false)
|
||||
expect(BeEF::Filters.is_valid_hook_session_id?(nil)).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_command_module_datastore_key?' do
|
||||
it 'validates datastore keys' do
|
||||
expect(BeEF::Filters.is_valid_command_module_datastore_key?('test_key')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_command_module_datastore_key?('')).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_command_module_datastore_param?' do
|
||||
it 'validates datastore params' do
|
||||
expect(BeEF::Filters.is_valid_command_module_datastore_param?('test_value')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_command_module_datastore_param?("\x00")).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.has_valid_key_chars?' do
|
||||
it 'validates key characters' do
|
||||
expect(BeEF::Filters.has_valid_key_chars?('test_key')).to be(true)
|
||||
expect(BeEF::Filters.has_valid_key_chars?('')).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.has_valid_param_chars?' do
|
||||
it 'false' do
|
||||
chars = [nil, '', '+']
|
||||
chars.each do |c|
|
||||
expect(BeEF::Filters.has_valid_param_chars?(c)).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
it 'true' do
|
||||
expect(BeEF::Filters.has_valid_param_chars?('A')).to be(true)
|
||||
end
|
||||
end
|
||||
end
|
||||
44
spec/beef/core/filter/http_spec.rb
Normal file
44
spec/beef/core/filter/http_spec.rb
Normal file
@@ -0,0 +1,44 @@
|
||||
RSpec.describe BeEF::Filters do
|
||||
describe '.is_valid_hostname?' do
|
||||
it 'validates hostnames correctly' do
|
||||
expect(BeEF::Filters.is_valid_hostname?('example.com')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_hostname?('sub.example.com')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_hostname?('a' * 256)).to be(false) # too long
|
||||
expect(BeEF::Filters.is_valid_hostname?('')).to be(false)
|
||||
expect(BeEF::Filters.is_valid_hostname?(nil)).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_verb?' do
|
||||
it 'validates HTTP verbs' do
|
||||
%w[HEAD GET POST OPTIONS PUT DELETE].each do |verb|
|
||||
expect(BeEF::Filters.is_valid_verb?(verb)).to be(true)
|
||||
end
|
||||
expect(BeEF::Filters.is_valid_verb?('INVALID')).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_url?' do
|
||||
it 'validates URLs' do
|
||||
expect(BeEF::Filters.is_valid_url?(nil)).to be(false)
|
||||
expect(BeEF::Filters.is_valid_url?('http://example.com')).to be(true)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_http_version?' do
|
||||
it 'validates HTTP versions' do
|
||||
expect(BeEF::Filters.is_valid_http_version?('HTTP/1.0')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_http_version?('HTTP/1.1')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_http_version?('HTTP/2.0')).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_host_str?' do
|
||||
it 'validates host header strings' do
|
||||
expect(BeEF::Filters.is_valid_host_str?('Host:')).to be(true)
|
||||
host_str = "Host:\r".dup
|
||||
expect(BeEF::Filters.is_valid_host_str?(host_str)).to be(true)
|
||||
expect(BeEF::Filters.is_valid_host_str?('Invalid')).to be(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
18
spec/beef/core/filter/page_spec.rb
Normal file
18
spec/beef/core/filter/page_spec.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
RSpec.describe BeEF::Filters do
|
||||
describe '.is_valid_pagetitle?' do
|
||||
it 'validates page titles' do
|
||||
expect(BeEF::Filters.is_valid_pagetitle?('Test Page')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_pagetitle?('A' * 500)).to be(true)
|
||||
expect(BeEF::Filters.is_valid_pagetitle?('A' * 501)).to be(false)
|
||||
expect(BeEF::Filters.is_valid_pagetitle?("\x00")).to be(false)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.is_valid_pagereferrer?' do
|
||||
it 'validates page referrers' do
|
||||
expect(BeEF::Filters.is_valid_pagereferrer?('http://example.com')).to be(true)
|
||||
expect(BeEF::Filters.is_valid_pagereferrer?('A' * 350)).to be(true)
|
||||
expect(BeEF::Filters.is_valid_pagereferrer?('A' * 351)).to be(false)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user