--- /dev/null
+#!/usr/bin/env rspec
+
+require 'spec_helper'
+
+module MCollective
+ unless Util.windows?
+ require 'mcollective/logger/syslog_logger'
+
+ module Logger
+ describe Syslog_logger do
+ describe "#start" do
+ before do
+ Config.instance.stubs(:logfacility).returns("user")
+ Config.instance.stubs(:loglevel).returns("error")
+ end
+
+ it "should close the syslog if already opened" do
+ Syslog.expects("opened?").returns(true)
+ Syslog.expects(:close).once
+ Syslog.expects(:open).once
+
+ logger = Syslog_logger.new
+ logger.start
+ end
+
+ it "should open syslog with the correct facility" do
+ logger = Syslog_logger.new
+ Syslog.expects(:open).with("rspec", 3, Syslog::LOG_USER).once
+ logger.start
+ end
+
+ it "should set the logger level correctly" do
+ logger = Syslog_logger.new
+ Syslog.expects(:open).with("rspec", 3, Syslog::LOG_USER).once
+ logger.expects(:set_level).with(:error).once
+ logger.start
+ end
+ end
+
+ describe "#syslog_facility" do
+ it "should support valid facilities" do
+ logger = Syslog_logger.new
+ logger.syslog_facility("LOCAL1").should == Syslog::LOG_LOCAL1
+ logger.syslog_facility("local1").should == Syslog::LOG_LOCAL1
+ end
+
+ it "should set LOG_USER for unknown facilities" do
+ logger = Syslog_logger.new
+ IO.any_instance.expects(:puts).with("Invalid syslog facility rspec supplied, reverting to USER")
+ logger.syslog_facility("rspec").should == Syslog::LOG_USER
+ end
+ end
+
+ describe "#log" do
+ it "should log higher than configured levels" do
+ logger = Syslog_logger.new
+ logger.set_level(:debug)
+ Syslog.expects(:err).once
+ logger.log(:error, "rspec", "rspec")
+ end
+
+ it "should log using the correctly mapped level" do
+ logger = Syslog_logger.new
+ Syslog.expects(:err).with("rspec rspec").once
+ logger.set_level(:debug)
+ logger.log(:error, "rspec", "rspec")
+ end
+
+ it "should resort to STDERR output if all else fails" do
+ logger = Syslog_logger.new
+ IO.any_instance.expects(:puts).with("error: rspec").once
+
+ logger.log(:error, "rspec", "rspec")
+ end
+ end
+ end
+ end
+ end
+end