--- /dev/null
+#!/usr/bin/env rspec
+
+require 'spec_helper'
+
+module MCollective
+ module Registration
+ describe Base do
+ before do
+ @config = mock
+ @config.stubs(:identity).returns("rspec")
+ @config.stubs(:main_collective).returns("main_collective")
+ Config.stubs(:instance).returns(@config)
+
+ @reg = Base.new
+ end
+
+ describe "#config" do
+ it "should provide access the main configuration class" do
+ @reg.config.should == @config
+ end
+
+ end
+
+ describe "#identity" do
+ it "should return the correct identity" do
+ @reg.config.identity.should == "rspec"
+ end
+ end
+
+ describe "#msg_filter" do
+ it "should target the registration agent" do
+ @reg.msg_filter["agent"].should == ["registration"]
+ end
+ end
+
+ describe "#target_collective" do
+ it "should return the configured registration_collective" do
+ @config.expects(:registration_collective).returns("registration").once
+ @config.expects(:collectives).returns(["main_collective", "registration"]).once
+ @reg.target_collective.should == "registration"
+ end
+
+ it "should use the main collective if registration collective is not valid" do
+ @config.expects(:registration_collective).returns("registration").once
+ @config.expects(:collectives).returns(["main_collective"]).once
+
+ Log.expects(:warn).with("Sending registration to main_collective: registration is not a valid collective").once
+
+ @reg.target_collective.should == "main_collective"
+ end
+ end
+
+ describe "#publish" do
+ it "should skip registration for empty messages" do
+ Log.expects(:debug).with("Skipping registration due to nil body")
+ @reg.publish(nil)
+ end
+
+ it "should publish via the message object" do
+ message = mock
+ message.expects(:encode!)
+ message.expects(:publish)
+ message.expects(:requestid).returns("123")
+ message.expects(:collective).returns("mcollective")
+
+ Message.expects(:new).returns(message)
+
+ Log.expects(:debug).with("Sending registration 123 to collective mcollective")
+
+ @reg.expects(:target_collective).returns("mcollective")
+
+ @reg.publish("message")
+ end
+ end
+ end
+ end
+end