Acts_as_secure und fixtures

Moin Moin,

ich wollte aus dem Buch Advanced Rails Recipes den Tipp mit
acts_as_secure umsetzen.
Das läuft auch alles wunderbar, das Plugin sorgt dafür, das alle
Attribute, die in einem
Model Objekt in der Datenbank gespeichert werden sollen und in der
Datenbank ein
Feld vom Typ Binary haben, verschlüsselt abgelegt werden. Dabei wird
jedes mal eine
Model Klasse MasterCryptoProvider zur Hilfe genommen, die die Daten
verschlüsselt:

require ‘ezcrypto’

class MasterCryptoProvider
CONFIG = YAML.load_file(RAILS_ROOT + ‘/config/crypto.yml’)
[ENV[‘RAILS_ENV’]].symbolize_keys

class << self
def encrypt(field)
key.encrypt field
end

 def decrypt(field)
   key.decrypt field
 end

 def key
   EzCrypto::Key.with_password CONFIG[:master_key], CONFIG[:salt]
 end

end
end

Bei meinem Testlauf mit RSpec gibt es Probleme, denn ich verwende
fixtures - und so, wie
ich das verstanden habe werden die ohne Umwege in die Datenbank
geschoben. Dabei
findet keine Verschlüsselung der Daten statt. Wenn dann aber später
bei den Tests die Daten
ausgelesen werden gibts nen Fehler, da die unverschlüsselten natürlich
nicht entschlüsselt
werden können.
Deshalb habe ich versucht mir in der Fixtures Datei den
MasterCryptoProvider zur Hilfe zu
nehmen und die Daten erst zu verschlüsseln und dann in die Datenbank
zu speichern:

addresses.yml:

daniel:
firstname: <%= MasterCryptoProvider.encrypt(“Daniel”) %>
lastname: Boekhoff

peter:
firstname: Peter
lastname: Mueller

Als ich den Test so hab laufen lassen wurde der firstname von daniel
verschlüsselt in der
Datenbank gespeichert, danach habe ich freudig in einem weiteren
Versuch den lastname
verschlüsseln wollen. Problem war dann, dass der Datensatz Peter nicht
mehr vollständig in
die Datenbank geladen wurde, es war zwar ein zweiter Eintrag da, aber
ohne ID und ähnliches.

Jetzt überlege ich was der Fehler sein könnte, gibt es Probleme
während des Durchlaufs durch
die yml Datei den MasterCryptoProvider mehrfach zu installieren, …
Ist mein Ansatz überhaupt richtig, gibt es evtl. noch einen besseren,
anderen Ansatz die Fixtures
dynamisch zu verändern.

Ich würde mich über ein Antwort sehr freuen!

Viele
Grüße,
Daniel


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug