# encoding: UTF-8
require 'test_helper'
describe Vines::Stream::Server::Ready do
subject { Vines::Stream::Server::Ready.new(stream, nil) }
let(:stream) { MiniTest::Mock.new }
SERVER_STANZAS = []
before do
def subject.to_stanza(node)
Vines::Stanza.from_node(node, stream).tap do |stanza|
def stanza.process
SERVER_STANZAS << self
end if stanza
end
end
end
after do
SERVER_STANZAS.clear
end
it 'processes a valid node' do
config = MiniTest::Mock.new
config.expect(:local_jid?, true, [Vines::JID.new('romeo@verona.lit')])
stream.expect(:config, config)
stream.expect(:remote_domain, 'wonderland.lit')
stream.expect(:domain, 'verona.lit')
stream.expect(:user=, nil, [Vines::User.new(jid: 'alice@wonderland.lit')])
node = node(%Q{})
subject.node(node)
assert_equal 1, SERVER_STANZAS.size
assert stream.verify
assert config.verify
end
it 'raises unsupported-stanza-type stream error' do
node = node('')
-> { subject.node(node) }.must_raise Vines::StreamErrors::UnsupportedStanzaType
assert SERVER_STANZAS.empty?
assert stream.verify
end
it 'raises improper-addressing stream error when to address is missing' do
node = node(%Q{})
-> { subject.node(node) }.must_raise Vines::StreamErrors::ImproperAddressing
assert SERVER_STANZAS.empty?
assert stream.verify
end
it 'raises jid-malformed stanza error when to address is invalid' do
node = node(%Q{})
-> { subject.node(node) }.must_raise Vines::StanzaErrors::JidMalformed
assert SERVER_STANZAS.empty?
assert stream.verify
end
it 'raises improper-addressing stream error' do
node = node(%Q{})
-> { subject.node(node) }.must_raise Vines::StreamErrors::ImproperAddressing
assert SERVER_STANZAS.empty?
assert stream.verify
end
it 'raises jid-malformed stanza error for invalid from address' do
node = node(%Q{})
-> { subject.node(node) }.must_raise Vines::StanzaErrors::JidMalformed
assert SERVER_STANZAS.empty?
assert stream.verify
end
it 'raises invalid-from stream error' do
stream.expect(:remote_domain, 'wonderland.lit')
node = node(%Q{})
-> { subject.node(node) }.must_raise Vines::StreamErrors::InvalidFrom
assert SERVER_STANZAS.empty?
assert stream.verify
end
it 'raises host-unknown stream error' do
stream.expect(:remote_domain, 'wonderland.lit')
stream.expect(:domain, 'verona.lit')
node = node(%Q{})
-> { subject.node(node) }.must_raise Vines::StreamErrors::HostUnknown
assert SERVER_STANZAS.empty?
assert stream.verify
end
private
def node(xml)
Nokogiri::XML(xml).root
end
end