Refactor database migration handling in browser details and websocket hooked browser specs for improved synchronization

This commit is contained in:
zinduolis
2025-09-06 11:04:23 +10:00
parent 41b595ae00
commit 3df5bcb904
2 changed files with 21 additions and 6 deletions

View File

@@ -10,13 +10,19 @@ require_relative '../../../../spec_helper'
require_relative '../../../../support/constants'
require_relative '../../../../support/beef_test'
MUTEX = Mutex.new
RSpec.describe 'Browser Details Handler', run_on_browserstack: true do
before(:all) do
@config = BeEF::Core::Configuration.instance
db_file = @config.get('beef.database.file')
print_info 'Resetting the database for BeEF.'
File.delete(db_file) if File.exist?(db_file)
if ENV['RESET_DB']
File.delete(db_file) if File.exist?(db_file)
end
@config.set('beef.credentials.user', 'beef')
@config.set('beef.credentials.passwd', 'beef')
@username = @config.get('beef.credentials.user')
@@ -50,9 +56,12 @@ RSpec.describe 'Browser Details Handler', run_on_browserstack: true do
# Migrate (if required)
ActiveRecord::Migrator.migrations_paths = [File.join('core', 'main', 'ar-migrations')]
context = ActiveRecord::MigrationContext.new(ActiveRecord::Migrator.migrations_paths)
ActiveRecord::Migrator.new(:up, context.migrations, context.schema_migration, context.internal_metadata).migrate if context.needs_migration?
MUTEX.synchronize do
context = ActiveRecord::MigrationContext.new(ActiveRecord::Migrator.migrations_paths)
if context.needs_migration?
ActiveRecord::Migrator.new(:up, context.migrations, context.schema_migration, context.internal_metadata).migrate
end
end
BeEF::Core::Migration.instance.update_db!
# Spawn HTTP Server

View File

@@ -11,6 +11,8 @@ require_relative '../../support/beef_test'
require 'core/main/network_stack/websocket/websocket'
require 'websocket-client-simple'
MUTEX = Mutex.new
RSpec.describe 'Browser hooking with Websockets', run_on_browserstack: true do
before(:all) do
@config = BeEF::Core::Configuration.instance
@@ -49,8 +51,12 @@ RSpec.describe 'Browser hooking with Websockets', run_on_browserstack: true do
end
ActiveRecord::Migrator.migrations_paths = [File.join('core', 'main', 'ar-migrations')]
context = ActiveRecord::MigrationContext.new(ActiveRecord::Migrator.migrations_paths)
ActiveRecord::Migrator.new(:up, context.migrations, context.schema_migration, context.internal_metadata).migrate if context.needs_migration?
MUTEX.synchronize do
context = ActiveRecord::MigrationContext.new(ActiveRecord::Migrator.migrations_paths)
if context.needs_migration?
ActiveRecord::Migrator.new(:up, context.migrations, context.schema_migration, context.internal_metadata).migrate
end
end
BeEF::Core::Migration.instance.update_db!
# Spawn HTTP Server