From 7d7c39e3dc9af0a53bd800bd40ce566511eab20a Mon Sep 17 00:00:00 2001 From: Raphael <raphael@joindiaspora.com> Date: Sat, 17 Jul 2010 14:09:21 -0700 Subject: [PATCH] callbacks not running on photo save --- app/models/photo.rb | 4 +++- app/models/post.rb | 8 ++++---- lib/encryptable.rb | 10 +++++++--- spec/models/photo_spec.rb | 24 +++++++++++++++++++++--- spec/spec_helper.rb | 29 +++++++++++++++-------------- 5 files changed, 50 insertions(+), 25 deletions(-) diff --git a/app/models/photo.rb b/app/models/photo.rb index 8de0e993a0..42e7042736 100644 --- a/app/models/photo.rb +++ b/app/models/photo.rb @@ -1,6 +1,8 @@ class Photo < Post require 'carrierwave/orm/mongomapper' include MongoMapper::Document - + before_validation {puts "I'M GONNA VALIDATE"} + before_save {puts "I'M GONNA SAVE"} + before_create {puts "I'M GONNA CREATE"} mount_uploader :image, ImageUploader end diff --git a/app/models/post.rb b/app/models/post.rb index 9b711d6ce7..383d56b107 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -36,15 +36,15 @@ class Post self.first(:person_id => person.id, :order => '_id desc') end - def self.my_newest - self.newest(User.owner) - end + def self.my_newest + self.newest(User.owner) + end def self.newest_by_email(email) self.newest(Person.first(:email => email)) end #ENCRYPTION - before_validation :sign_if_mine + before_validation :sign_if_mine validates_true_for :creator_signature, :logic => lambda {self.verify_creator_signature} xml_accessor :creator_signature diff --git a/lib/encryptable.rb b/lib/encryptable.rb index 75e23632e3..226ae5e1f0 100644 --- a/lib/encryptable.rb +++ b/lib/encryptable.rb @@ -3,6 +3,7 @@ "" end def verify_creator_signature + #creator_signature = sign if creator_signature.nil? && person == User.owner verify_signature(creator_signature, person) end @@ -10,21 +11,24 @@ return false unless signature && person.key_fingerprint validity = nil GPGME::verify(signature, signable_string, - {:armor => true, :always_trust => true}){ |sig| - validity = sig.status == GPGME::GPG_ERR_NO_ERROR && - sig.fpr == person.key_fingerprint + {:armor => true, :always_trust => true}){ |signature_analysis| + puts signature_analysis + validity = signature_analysis.status == GPGME::GPG_ERR_NO_ERROR && + signature_analysis.fpr == person.key_fingerprint } return validity end protected def sign_if_mine + puts "In sign_if_mine" if self.person == User.owner self.creator_signature = sign end end def sign + puts "signing" sign_with_key(User.owner.key) end diff --git a/spec/models/photo_spec.rb b/spec/models/photo_spec.rb index ce23dc471a..2b70223ccf 100644 --- a/spec/models/photo_spec.rb +++ b/spec/models/photo_spec.rb @@ -3,20 +3,38 @@ require File.dirname(__FILE__) + '/../spec_helper' describe Photo do before do @user = Factory.create(:user) + @fixture_name = File.dirname(__FILE__) + '/../fixtures/bp.jpeg' end it 'should save a photo to GridFS' do photo = Photo.new(:person => @user) - fixture_name = File.dirname(__FILE__) + '/../fixtures/bp.jpeg' - file = File.open(fixture_name) + file = File.open(@fixture_name) photo.image = file photo.save.should == true binary = photo.image.read - fixture_binary = File.open(fixture_name).read + fixture_binary = File.open(@fixture_name).read binary.should == fixture_binary end it 'should create thumbnails' do pending('need to figure this out... tearing issue') end + describe 'with encryption' do + + before do + unstub_mocha_stubs + end + + after do + stub_signature_verification + end + it 'should save a signed photo to GridFS' do + photo = Photo.new(:person => @user) + photo.image = File.open(@fixture_name) + #photo.creator_signature = photo.send(:sign) + photo.verify_creator_signature.should be true + photo.save.should == true + end + + end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 960ee7844e..7194908bb1 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -42,30 +42,31 @@ end end def stub_signature_verification + post_models = [] get_models.each{ |model| - puts model + constant_model = model.camelize.constantize + if constant_model == Post || constant_model.superclass == Post + post_models << constant_model + end } - Post.any_instance.stubs(:verify_creator_signature).returns(true) - StatusMessage.any_instance.stubs(:verify_creator_signature).returns(true) - Blog.any_instance.stubs(:verify_creator_signature).returns(true) - Bookmark.any_instance.stubs(:verify_creator_signature).returns(true) - Comment.any_instance.stubs(:verify_creator_signature).returns(true) + post_models.each{ | model| + model.any_instance.stubs(:verify_creator_signature).returns(true) + } + Comment.any_instance.stubs(:verify_post_creator_signature).returns(true) - Photo.any_instance.stubs(:verify_creator_signature).returns(true) Person.any_instance.stubs(:remove_key).returns(true) User.any_instance.stubs(:remove_key).returns(true) end def unstub_mocha_stubs Mocha::Mockery.instance.stubba.unstub_all - end -def get_models - models = [] - Dir.glob( RAILS_ROOT + '/app/models/*' ).each do |f| - models << File.basename( f ).gsub( /^(.+).rb/, '\1') + def get_models + models = [] + Dir.glob( File.dirname(__FILE__) + '/../app/models/*' ).each do |f| + models << File.basename( f ).gsub( /^(.+).rb/, '\1') + end + models end - models -end -- GitLab