6ddefe7cad
If the EncryptColumns background migration runs in a sidekiq with a stale view of the database schema, or when the purported destination columns don't actually exist, data loss can result. Attempt to work around these issues by reloading schema information before running the migration, and raising errors if the model reports that any of its source or destination columns are missing.
30 lines
832 B
Ruby
30 lines
832 B
Ruby
require 'spec_helper'
|
|
|
|
describe 'GitLab monkey-patches to AttrEncrypted' do
|
|
describe '#attribute_instance_methods_as_symbols_available?' do
|
|
it 'returns false' do
|
|
expect(ActiveRecord::Base.__send__(:attribute_instance_methods_as_symbols_available?)).to be_falsy
|
|
end
|
|
|
|
it 'does not define virtual attributes' do
|
|
klass = Class.new(ActiveRecord::Base) do
|
|
# We need some sort of table to work on
|
|
self.table_name = 'projects'
|
|
|
|
attr_encrypted :foo
|
|
end
|
|
|
|
instance = klass.new
|
|
|
|
aggregate_failures do
|
|
%w[
|
|
encrypted_foo encrypted_foo=
|
|
encrypted_foo_iv encrypted_foo_iv=
|
|
encrypted_foo_salt encrypted_foo_salt=
|
|
].each do |method_name|
|
|
expect(instance).not_to respond_to(method_name)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|