require 'spec_helper'

describe IcecastSecurity do

  let(:security) { IcecastSecurity.new }
  let(:output) { StringIO.new }
  let(:builder) { ::Builder::XmlMarkup.new(:target => output, :indent => 1) }

  it "save with chroot" do
    security.change_owner_user ="hotdog"
    security.change_owner_group ="mongrel"
    security.chroot = 1
    security.save!
    security.dumpXml(builder)

    output.rewind
    xml = Nokogiri::XML(output)
    xml.css('security chroot').text.should == '1'
    xml.css('security changeowner user').text.should == 'hotdog'
    xml.css('security changeowner group').text.should == 'mongrel'
  end

  it "save without chroot" do
    security.save!
    security.dumpXml(builder)

    output.rewind

    xml = Nokogiri::XML(output)
    xml.css('security chroot').text.should == '0'
    xml.css('security changeowner').length.should == 0
  end

  describe "poke configs" do
    let(:server) { a = FactoryGirl.create(:icecast_server_with_overrides); a.config_updated; IcecastServer.find(a.id) }

    it "success via template" do
      server.template.security.save!
      server.reload
      server.config_changed.should == 1
    end

    it "delete via template" do
      server.template.security.destroy
      server.reload
      server.config_changed.should == 1
    end

    it "success via server" do
      server.security.save!
      server.reload
      server.config_changed.should == 1
    end

    it "delete via server" do
      server.security.destroy
      server.reload
      server.config_changed.should == 1
    end
  end
end