Skip to content
Extraits de code Groupes Projets
Valider 8c75761b rédigé par ilya's avatar ilya
Parcourir les fichiers

RS IZ Friday night, key_fingerprint serialization weirdness

parent eec66395
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -6,6 +6,7 @@ class Person
xml_accessor :url
xml_accessor :profile, :as => Profile
xml_accessor :_id
xml_accessor :key_fingerprint
key :email, String
key :url, String
......@@ -37,6 +38,9 @@ class Person
GPGME::Ctx.new.get_key key_fingerprint
end
def export_key
GPGME::export(key_fingerprint, :armor => true)
end
protected
......
......@@ -8,12 +8,14 @@ class Request
xml_accessor :person, :as => Person
xml_accessor :destination_url
xml_accessor :callback_url
xml_accessor :exported_key
key :destination_url, String
key :callback_url, String
key :person_id, ObjectId
key :person, Person#_id, ObjectId
key :exported_key, String
belongs_to :person
#belongs_to :person
validates_presence_of :destination_url, :callback_url
......@@ -22,7 +24,7 @@ class Request
def self.instantiate(options ={})
person = options[:from]
self.new(:destination_url => options[:to], :callback_url => person.url, :person => person)
self.new(:destination_url => options[:to], :callback_url => person.url, :person => person, :exported_key => person.export_key)
end
def activate_friend
......
......@@ -28,10 +28,10 @@ class User < Person
######### Friend Requesting
def send_friend_request_to(friend_url)
unless Person.where(:url => friend_url).first
p = Request.instantiate(:to => friend_url, :from => self)
if p.save
p.push_to_url friend_url
p
request = Request.instantiate(:to => friend_url, :from => self)
if request.save
request.push_to_url friend_url
request
end
end
end
......@@ -41,6 +41,7 @@ class User < Person
request.activate_friend
request.person = self
request.destination_url = request.callback_url
request.exported_key = self.export_key
request.push_to_url(request.callback_url)
request.destroy
end
......
Aucun aperçu pour ce type de fichier
......@@ -17,7 +17,11 @@ module Diaspora
body = parse_body_contents_from_xml(xml)
body.children.each do |post|
begin
puts "people: #{Person.count}"
puts "requests: #{Request.count}"
object = post.name.camelize.constantize.from_xml post.to_s
puts "people: #{Person.count}"
puts "requests: #{Request.count}"
object.person = parse_owner_from_xml post.to_s if object.respond_to? :person
objects << object
rescue
......
......@@ -10,8 +10,9 @@ Factory.define :profile do |p|
end
Factory.define :person do |p|
p.email "bob@aol.com"
p.email "bob-person@aol.com"
p.sequence(:url) {|n|"http://google-#{n}.com/"}
p.key_fingerprint GPGME::list_keys("Aditi").first.subkeys.first.fingerprint
p.profile Profile.new( :first_name => "Robert", :last_name => "Grimm" )
end
......@@ -20,6 +21,7 @@ Factory.define :user do |u|
u.password "bluepin7"
u.password_confirmation "bluepin7"
u.url "www.example.com/"
u.key_fingerprint GPGME.list_keys(nil, true).first.subkeys.first.fingerprint
u.profile Profile.new( :first_name => "Bob", :last_name => "Smith" )
end
......
......@@ -11,7 +11,7 @@ describe Request do
end
it 'should generate xml for the User as a Person' do
user = User.create(:email => "rob@bob.com")
user = Factory.build(:user, :email => "rob@bob.com")
user.profile = Factory.create(:profile)
......
require File.dirname(__FILE__) + '/spec_helper'
include ApplicationHelper
describe 'user encryption' do
before :all do
......@@ -28,7 +29,28 @@ describe 'user encryption' do
end
describe 'key exchange on friending' do
it 'should send over a public key' do
Comment.send(:class_variable_get, :@@queue).stub!(:add_post_request)
request = @u.send_friend_request_to("http://example.com/")
Request.build_xml_for([request]).include?( @u.export_key).should be true
end
it 'should receive and marshal a public key from a request' do
puts "THIS IS FUCKED UP"
person = Factory.build(:person )
original_key = person.export_key
person.save
request = Request.instantiate(:to =>"http://www.google.com/", :from => person)
xml = Request.build_xml_for [request]
person.destroy
store_objects_from_xml(xml)
new_person = Person.first(:url => request.callback_url)
new_person.export_key.should == original_key
end
end
describe 'signing and verifying' do
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter