cartodb-4.42/spec/helpers/spec_helper_helpers.rb
2024-04-06 05:25:13 +00:00

55 lines
1.7 KiB
Ruby

module SpecHelperHelpers
def clean_redis_databases
$tables_metadata.flushdb
$api_credentials.flushdb
$users_metadata.flushdb
end
def clean_metadata_database
if ENV['STELLAR'].present?
SequelRails.connection.disconnect
system "#{ENV['STELLAR']} restore"
else
protected_tables = [:schema_migrations, :spatial_ref_sys]
SequelRails.connection.tables.each do |t|
if !protected_tables.include?(t)
begin
SequelRails.connection.run("TRUNCATE TABLE \"#{t}\" CASCADE")
rescue Sequel::DatabaseError => e
raise e unless e.message =~ /PG::Error: ERROR: relation ".*" does not exist/
end
end
end
end
end
def close_pool_connections
# To avoid Travis and connection leaks
$pool.close_connections!
end
def drop_leaked_test_user_databases
user_database_names = SequelRails.connection[
"SELECT datname FROM pg_database WHERE datistemplate IS FALSE AND datallowconn IS TRUE AND datname like 'cartodb_test_user_%'"
]
user_database_names.map(:datname).each do |user_database_name|
puts "Dropping leaked test database #{user_database_name}"
CartoDB::UserModule::DBService.terminate_database_connections(
user_database_name, ::SequelRails.configuration.environment_for(Rails.env)['host']
)
SequelRails.connection.run("drop database \"#{user_database_name}\"")
end
end
def delete_database_test_users
usernames = SequelRails.connection['SELECT u.usename FROM pg_catalog.pg_user u'].map do |r|
r.values.first
end
usernames.each do |username|
SequelRails.connection.run("drop user \"#{username}\"") if username =~ /^test_cartodb_user_/
end
end
end