Skip to content
This repository has been archived by the owner on Feb 2, 2018. It is now read-only.

Commit

Permalink
fix validation error on encrypted field in embedded document.
Browse files Browse the repository at this point in the history
  • Loading branch information
juno committed Feb 25, 2011
1 parent 815bd8a commit 44e1d44
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/mongoid/encryptor.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def encrypts(*attrs)
mode = options.delete(:mode) || :sha
cipher_class = EncryptedStrings.const_get("#{mode.to_s.classify}Cipher")

send(:before_validation) do |doc|
send(:after_validation) do |doc|
doc.send(:write_encrypted_attribute, attr_name, cipher_class, options)
true
end
Expand Down
23 changes: 23 additions & 0 deletions spec/embedded_document_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# -*- encoding: utf-8 -*-
require 'spec_helper'

describe "Symmetric encryption on embedded document" do
let(:credit_card) { CreditCard.new(:number => '0000111122224444') }
let(:person) { Person.new(:first_name => 'John', :last_name => 'Smith', :credit_card => credit_card) }

context "Has valid attributes" do
context "Before save" do
subject { credit_card }
its(:number) { should eq('0000111122224444') }
it { should be_valid }
end

context "after save" do
before { credit_card.save! }
subject { credit_card }
its(:number) { should be_encrypted }
its(:number) { should eq('0000111122224444') }
end
end

end
10 changes: 10 additions & 0 deletions spec/models/credit_card.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class CreditCard
include Mongoid::Document
include Mongoid::Encryptor

field :number

validates_format_of :number, :with => /^\A\d{16}\z/

encrypts :number, :mode => :symmetric, :password => 'secret'
end
10 changes: 10 additions & 0 deletions spec/models/person.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class Person
include Mongoid::Document

field :first_name
field :last_name

embeds_one :credit_card

validates_presence_of :first_name, :last_name
end

0 comments on commit 44e1d44

Please sign in to comment.