# encoding: UTF-8 require 'tmpdir' require 'vines' require 'ext/nokogiri' require 'minitest/autorun' class IqTest < MiniTest::Unit::TestCase def setup @stream = MiniTest::Mock.new @config = Vines::Config.new do host 'wonderland.lit' do storage(:fs) { dir Dir.tmpdir } end end end def test_allow_other_iq_to_route alice = Vines::User.new(:jid => 'alice@wonderland.lit/tea') hatter = Vines::User.new(:jid => 'hatter@wonderland.lit/crumpets') node = node(%q{ }.strip.gsub(/\n|\s{2,}/, '')) recipient = MiniTest::Mock.new recipient.expect(:user, alice, []) recipient.expect(:write, nil, [node]) @stream.expect(:config, @config) @stream.expect(:user, hatter) @stream.expect(:connected_resources, [recipient], [alice.jid]) stanza = Vines::Stanza::Iq.new(node, @stream) stanza.process assert @stream.verify assert recipient.verify end def test_feature_not_implemented node = node('') stanza = Vines::Stanza::Iq.new(node, @stream) assert_raises(Vines::StanzaErrors::FeatureNotImplemented) { stanza.process } end private def node(xml) Nokogiri::XML(xml).root end end