67 lines
1.9 KiB
Ruby
67 lines
1.9 KiB
Ruby
# Copyright (c) 2011, Diaspora Inc. This file is
|
|
# licensed under the Affero General Public License version 3 or later. See
|
|
# the COPYRIGHT file.
|
|
|
|
require 'spec_helper'
|
|
|
|
require File.join(Rails.root, 'lib/postzord')
|
|
require File.join(Rails.root, 'lib/postzord/receiver/public')
|
|
|
|
describe Postzord::Receiver::Public do
|
|
before do
|
|
@post = Factory.build(:status_message, :author => alice.person, :public => true)
|
|
@created_salmon = Salmon::Slap.create_by_user_and_activity(alice, @post.to_diaspora_xml)
|
|
@xml = @created_salmon.xml_for(nil)
|
|
end
|
|
|
|
describe '#initialize' do
|
|
it 'creates a Salmon instance variable' do
|
|
receiver = Postzord::Receiver::Public.new(@xml)
|
|
receiver.salmon.should_not be_nil
|
|
end
|
|
end
|
|
|
|
describe '#perform!' do
|
|
before do
|
|
@receiver = Postzord::Receiver::Public.new(@xml)
|
|
end
|
|
|
|
it 'calls verify_signature' do
|
|
@receiver.should_receive(:verified_signature?)
|
|
@receiver.perform!
|
|
end
|
|
|
|
context 'if signature is valid' do
|
|
it 'calls recipient_user_ids' do
|
|
@receiver.should_receive(:recipient_user_ids)
|
|
@receiver.perform!
|
|
end
|
|
|
|
it 'saves the parsed object' do
|
|
@receiver.should_receive(:save_object)
|
|
@receiver.perform!
|
|
end
|
|
|
|
it 'enqueues a Job::ReceiveLocalBatch' do
|
|
Resque.should_receive(:enqueue).with(Job::ReceiveLocalBatch, anything, anything)
|
|
@receiver.perform!
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#verify_signature?' do
|
|
it 'calls Slap#verified_for_key?' do
|
|
receiver = Postzord::Receiver::Public.new(@xml)
|
|
receiver.salmon.should_receive(:verified_for_key?).with(instance_of(OpenSSL::PKey::RSA))
|
|
receiver.verified_signature?
|
|
end
|
|
end
|
|
|
|
describe '#recipient_user_ids' do
|
|
it 'calls User.all_sharing_with_person' do
|
|
User.should_receive(:all_sharing_with_person).and_return(stub(:select => []))
|
|
receiver = Postzord::Receiver::Public.new(@xml)
|
|
receiver.perform!
|
|
end
|
|
end
|
|
end
|