mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-13 04:00:21 +00:00
Enabling non-privileged postgres users to run specs
Addressing issue #245.
A combination of fixtures and foreign key constraints requires the postgres
user to be superuser. Otherwise an attempt to disable constraints fails.
This got fixed in Rails 4 and this patch brings the same behaviour back to
Rails 3. It will allow us to run the specs with a nosuperuser postgres user.
See:
- https://github.com/matthuhiggins/foreigner/issues/61
- 9bb27f7ffe
This commit is contained in:
@@ -48,6 +48,9 @@ Capybara.default_max_wait_time = 30
|
|||||||
|
|
||||||
require "paperclip/matchers"
|
require "paperclip/matchers"
|
||||||
|
|
||||||
|
#Fix fixtures with foreign keys, fixed in Rails4
|
||||||
|
require_relative "support/active_record_postgresql_referential_integrity_patch"
|
||||||
|
|
||||||
# Override setting in Spree engine: Spree::Core::MailSettings
|
# Override setting in Spree engine: Spree::Core::MailSettings
|
||||||
ActionMailer::Base.default_url_options[:host] = 'test.host'
|
ActionMailer::Base.default_url_options[:host] = 'test.host'
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# A combination of fixtures and foreign key constraints requires the postgres
|
||||||
|
# user to be superuser. Otherwise an attempt to disable constraints fails.
|
||||||
|
# This got fixed in Rails 4 and this patch brings the same behaviour back to
|
||||||
|
# Rails 3. It will allow us to run the specs with a nosuperuser postgres user.
|
||||||
|
#
|
||||||
|
# See:
|
||||||
|
# - https://github.com/matthuhiggins/foreigner/issues/61
|
||||||
|
# - https://github.com/garysweaver/rails/commit/9bb27f7ffe3eb732df737e477cd8fc25e007f77b
|
||||||
|
|
||||||
|
if Rails::VERSION::MAJOR < 4
|
||||||
|
class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
|
||||||
|
def disable_referential_integrity #:nodoc:
|
||||||
|
if supports_disable_referential_integrity? then
|
||||||
|
begin
|
||||||
|
execute(tables.collect { |name| "ALTER TABLE #{quote_table_name(name)} DISABLE TRIGGER ALL" }.join(";"))
|
||||||
|
rescue
|
||||||
|
execute(tables.collect { |name| "ALTER TABLE #{quote_table_name(name)} DISABLE TRIGGER USER" }.join(";"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
yield
|
||||||
|
ensure
|
||||||
|
if supports_disable_referential_integrity? then
|
||||||
|
begin
|
||||||
|
execute(tables.collect { |name| "ALTER TABLE #{quote_table_name(name)} ENABLE TRIGGER ALL" }.join(";"))
|
||||||
|
rescue
|
||||||
|
execute(tables.collect { |name| "ALTER TABLE #{quote_table_name(name)} ENABLE TRIGGER USER" }.join(";"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user