I'm trying to get a test to pass and keep getting a "no method error"
I'm using the routines from Chapter 8 of "Security on Rails" and can't
get the test to pass. I keep getting "no method error" for decrypt.
Can someone help me with the correct "address" for decrypt so I can
call it directly.

Here is the routine definition:

module Encryptor
  module Routines
    def decrypt(cipher_text, key, opts)
      cipher = OpenSSL::Cipher::Cipher.new(algorithm(opts))
      decoded_cipher_text = Base64.decode64(cipher_text)
      #cipher.decrypt(key, decoded_cipher_text.slice!(0..15))
      cipher.decrypt
      cipher.pkcs5_keyivgen(key)
      # DW 11/3/10 Above two lines per deprecation warning and
stackoverflow site
      # TODO Use a real Salt instead of Thoracic1
      out = cipher.update(decoded_cipher_text)
      out << cipher.final
    end
  end
end


Here is the "after save" hook:

module Encryptor
  module ActiveRecord
    class Encryptor
      include ::Encryptor::Routines

      def after_save(model)
        unless mod...@field].blank?
          key = model.class.encryption_key
          mod...@field] = decrypt(mod...@field], key, @options)
        end
      end
    end
  end
end



Here is the test:

require 'test_helper'
class UserTest < ActiveSupport::TestCase

  fixtures  :users

  test "the_encrypter" do
    @user = users(:bob)
    @user.secret_answer = "Volvo"
    assert @user.save
    @answer = User.connection.select_all(
      "select secret_answer from users where id = 1"
    )
    cipher_text = @answer.first['secret_answer']
    opts = Encryptor::ActiveRecord::Encryptor.default_options
    @plain_text = decrypt(cipher_text, User.encryption_key, opts)
    assert_equal @plain_text, "Volvo"
  end
end

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to