diff --git a/spec/requests/login_spec.rb b/spec/requests/login_spec.rb index d8458fe15..987397eca 100644 --- a/spec/requests/login_spec.rb +++ b/spec/requests/login_spec.rb @@ -7,72 +7,90 @@ require 'rspec' require 'spec/support/constants.rb' # require '../common/beef_test' + + RSpec.describe 'Beef Login' do - # let(:session) { Capybara::Session.new(:selenium_headless) } + let(:session) { Capybara::Session.new(:selenium_headless) } - # before(:each) do - # session.visit(ATTACK_URL) - # sleep 2.0 - # end + before(:each) do + @pid = start_beef_server + # sleep 2.0 + end - # after(:each) do - # BeefTest.save_screenshot(session) - # session.driver.browser.close - # end + after(:each) do + stop_beef_server(@pid) + # BeefTest.save_screenshot(session) + session.driver.browser.close + end - # it 'logs in successfully' do - # session.fill_in 'user', with: BEEF_USER - # session.fill_in 'pass', with: BEEF_PASSWD - # session.click_button('Login') - # sleep 10.0 - # expect(session).to have_content('Logout') - # end + it 'logs in successfully' do + session.visit(ATTACK_URL) - # it 'logs out successfully' do - # session.fill_in 'user', with: BEEF_USER - # session.fill_in 'pass', with: BEEF_PASSWD - # session.click_button('Login') - # sleep 2.0 - # session.click_link('Logout') - # sleep 2.0 - # expect(session).to have_title('BeEF Authentication') - # end + expect(session.has_content?('Authentication', wait: 10)) + expect(session.has_no_content?('Hooked Browsers', wait: 10)) - # it 'displays logs tab' do - # session.fill_in 'user', with: BEEF_USER - # session.fill_in 'pass', with: BEEF_PASSWD - # session.click_button('Login') - # sleep 2.0 - # session.click_on('Logs') - # expect(session).to have_content('Logout') - # expect(session).to have_content('Hooked Browsers') - # expect(session).to have_content('Type') - # expect(session).to have_content('Event') - # expect(session).to have_content('Date') - # expect(session).to have_content('Page') - # expect(session).to have_content('User with ip 127.0.0.1 has successfully authenticated in the application') - # end + if session.has_field?('user', visible: true) + session.fill_in 'user', with: BEEF_USER + end - # it 'hooks a browser successfully' do - # attacker = BeefTest.new_attacker - # victim = BeefTest.new_victim + if session.has_field?('pass', visible: true) + session.fill_in 'pass', with: BEEF_PASSWD + end - # sleep 5.0 + if session.has_button?('Login', visible: true) + session.click_button('Login') + end - # expect(attacker).to have_content(VICTIM_DOMAIN) - # expect(attacker).to have_content('127.0.0.1') - # attacker.click_on("127.0.0.1", match: :first) + expect(session.has_no_content?('Authentication', wait: 10)) + expect(session.has_content?('Hooked Browsers', wait: 10)) + end - # sleep 1.0 + it 'logs out successfully' do + session = BeefTest.login() - # expect(attacker).to have_content('Details') - # expect(attacker).to have_content('Commands') + expect(session).not_to be_nil + expect(session.has_content?('Hooked Browsers', wait: 10)) + expect(session.has_content?('Logout', wait: 10)) - # BeefTest.save_screenshot(attacker) - # BeefTest.save_screenshot(victim) + session.click_link('Logout') - # BeefTest.logout(attacker) - # attacker.driver.browser.close - # victim.driver.browser.close - # end + expect(session.has_no_content?('Hooked Browsers', wait: 10)) + expect(session.has_content?('Logout', wait: 10)) + expect(session.has_content?('BeEF Authentication', wait: 10)) + end + + it 'displays logs tab' do + session = BeefTest.login() + + expect(session.has_content?('Hooked Browsers', wait: 10)) + expect(session.has_content?('Logout', wait: 10)) + expect(session.has_content?('Logs', wait: 10)) + + session.click_on('Logs') + + expect(session).to have_content('Logout', wait: 10) + expect(session).to have_content('Hooked Browsers', wait: 10) + expect(session).to have_content('Type', wait: 10) + expect(session).to have_content('Event', wait: 10) + expect(session).to have_content('Date', wait: 10) + expect(session).to have_content('Page', wait: 10) + expect(session).to have_content('User with ip 127.0.0.1 has successfully authenticated in the application', wait: 10) + end + + it 'hooks a browser successfully' do + attacker = BeefTest.new_attacker + victim = BeefTest.new_victim + + expect(attacker).to have_content('Logout', wait: 10) + expect(attacker).to have_content(VICTIM_DOMAIN, wait: 10) + + attacker.click_on("127.0.0.1", match: :first) + + expect(attacker).to have_content('Details') + expect(attacker).to have_content('Commands') + + BeefTest.logout(attacker) + attacker.driver.browser.close + victim.driver.browser.close + end end \ No newline at end of file diff --git a/test/integration/tc_login.rb b/test/integration/tc_login.rb deleted file mode 100644 index 82e80fa3d..000000000 --- a/test/integration/tc_login.rb +++ /dev/null @@ -1,95 +0,0 @@ -# -# Copyright (c) 2006-2024 Wade Alcorn - wade@bindshell.net -# Browser Exploitation Framework (BeEF) - https://beefproject.com -# See the file 'doc/COPYING' for copying permission -# -require 'test/unit' -require '../common/test_constants' -require '../common/beef_test' -require 'rspec/expectations' - -class TC_Login < Test::Unit::TestCase - include RSpec::Matchers - - def test_log_in - session = Capybara::Session.new(:selenium_headless) - session.visit(ATTACK_URL) - sleep 2.0 - BeefTest.save_screenshot(session) - session.should have_title('BeEF Authentication') - session.fill_in 'user', :with => BEEF_USER - session.fill_in 'pass', :with => BEEF_PASSWD - BeefTest.save_screenshot(session) - session.click_button('Login') - sleep 10.0 - session.should have_content('Logout') - BeefTest.save_screenshot(session) - session.driver.browser.close - end - - def test_beef_test_login_function - session = BeefTest.login - session.should have_content('Logout') - BeefTest.save_screenshot(session) - session.driver.browser.close - end - - def test_log_out - session = BeefTest.login - session.click_link('Logout') - sleep 2.0 - session.should have_title('BeEF Authentication') - BeefTest.save_screenshot(session) - session.driver.browser.close - end - - def test_beef_test_logout_function - session = BeefTest.login - session = BeefTest.logout(session) - sleep 2.0 - session.should have_title('BeEF Authentication') - BeefTest.save_screenshot(session) - session.driver.browser.close - end - - def test_logs_tab - session = BeefTest.login - session.click_on('Logs') - session.should have_content('Logout') - session.should have_content('Hooked Browsers') - session.should have_content('Type') - session.should have_content('Event') - session.should have_content('Date') - session.should have_content('Page') - session.should have_content('User with ip 127.0.0.1 has successfully authenticated in the application') - - BeefTest.save_screenshot(session) - BeefTest.logout(session) - session.driver.browser.close - end - - def test_hooking_browser - attacker = BeefTest.new_attacker - victim = BeefTest.new_victim - - sleep 5.0 - - attacker.should have_content(VICTIM_DOMAIN) - attacker.should have_content('127.0.0.1') - attacker.click_on("127.0.0.1", match: :first) - - sleep 1.0 - - attacker.should have_content('Details') - attacker.should have_content('Commands') - # attacker.should have_content('Rider') # Old functionality - - BeefTest.save_screenshot(attacker) - BeefTest.save_screenshot(victim) - - BeefTest.logout(attacker) - attacker.driver.browser.close - victim.driver.browser.close - end - -end