34 lines
938 B
Ruby
34 lines
938 B
Ruby
|
shared_context 'DatabaseCleaner' do
|
||
|
def with_established_connection
|
||
|
begin
|
||
|
ActiveRecord::Base.connection_pool.with_connection do
|
||
|
yield
|
||
|
end
|
||
|
rescue ActiveRecord::ConnectionNotEstablished
|
||
|
# if there isn't a connection established, then established one and try
|
||
|
# again
|
||
|
ActiveRecord::Base.configurations = Metasploit::Framework::Database.configurations
|
||
|
spec = ActiveRecord::Base.configurations[Metasploit::Framework.env]
|
||
|
ActiveRecord::Base.establish_connection(spec)
|
||
|
|
||
|
retry
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# clean before all in case last test run was interrupted before
|
||
|
# after(:each) could clean up
|
||
|
before(:all) do
|
||
|
with_established_connection do
|
||
|
DatabaseCleaner.clean_with(:truncation)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Clean up after each test
|
||
|
after(:each) do
|
||
|
with_established_connection do
|
||
|
# Testing using both :truncation and :deletion; :truncation took long
|
||
|
# for testing.
|
||
|
DatabaseCleaner.clean_with(:deletion)
|
||
|
end
|
||
|
end
|
||
|
end
|