# 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