Hi all, I have a shopping application I am testing, and one of the models is an Order model, within which a credit card number is encrypted and stored in the db (mysql) as a BLOB field. When trying to run my unit tests, I cannot get my model fixtures to load the encrypted data. If, in my dynamic fixture (YAML) file, I could have access to my app's models, the problem would be trivial.. instead of: valid_order: id: 1 storefront_id: 1 total_charge: 50.00 tax_charge: 5.00 ship_charge: 10.00 ... payment_number: 4111111111111111 (which doesn't work), I could insert: valid_order: id: 1 storefront_id: 1 total_charge: 50.00 tax_charge: 5.00 ship_charge: 10.00 ... payment_number: <%= Order.encrypt("4111111111111111") %> which would give me what I want. My question is one of two things: a) Is there any ruby code I can put in the YAML file to "require" the Order model? Or, b) is there a way to get the BLOB data out of the database and stick it in a fixture? thanks, Michael
on 2006-04-17 22:01
on 2006-04-20 00:52
bumped... still seeking solution... much thanks, michael
on 2006-04-20 01:16
If you have the binary data you want to store in YAML, I believe you can use the !binary directive to encode that data into your YAML file- some info is at http://yaml.org/type/binary.html. I think you might want to write a bit of code that will get the relevant binary data and convert it to Base64. Then you can store that string into your YAML and not have to worry about it again. I think you can also do 'require' in your YAML (in a <% %> block) in the same way as in any other code, though the Rails load order may make this difficult in practice.