Binary info in test fixtures?


#1

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


#2

bumped… still seeking solution…

much thanks,

michael


#3

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.