Sha256: 39d79dcce1f13bc128a5a777f9dd0a2300ab99db5c71dd97eeb2d3b6551dcbf4

Contents?: true

Size: 1.25 KB

Versions: 6

Compression:

Stored size: 1.25 KB

Contents

# encoding: UTF-8

require 'vines'
require 'minitest/autorun'

class HandshakeTest < MiniTest::Unit::TestCase
  def setup
    @stream = MiniTest::Mock.new
    @state = Vines::Stream::Component::Handshake.new(@stream)
  end

  def test_invalid_element
    node = node('<message/>')
    assert_raises(Vines::StreamErrors::NotAuthorized) { @state.node(node) }
  end

  def test_missing_text
    @stream.expect(:secret, 'secr3t')
    node = node('<handshake/>')
    assert_raises(Vines::StreamErrors::NotAuthorized) { @state.node(node) }
    assert @stream.verify
  end

  def test_invalid_secret
    @stream.expect(:secret, 'secr3t')
    node = node('<handshake>bogus</handshake>')
    assert_raises(Vines::StreamErrors::NotAuthorized) { @state.node(node) }
    assert @stream.verify
  end

  def test_valid_secret
    router = MiniTest::Mock.new
    router.expect(:<<, nil, [@stream])
    @stream.expect(:router, router)
    @stream.expect(:secret, 'secr3t')
    @stream.expect(:write, nil, ['<handshake/>'])
    @stream.expect(:advance, nil, [Vines::Stream::Component::Ready.new(@stream)])
    node = node('<handshake>secr3t</handshake>')
    @state.node(node)
    assert @stream.verify
    assert router.verify
  end

  private

  def node(xml)
    Nokogiri::XML(xml).root
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
vines-0.4.5 test/stream/component/handshake_test.rb
vines-0.4.4 test/stream/component/handshake_test.rb
vines-0.4.3 test/stream/component/handshake_test.rb
vines-0.4.2 test/stream/component/handshake_test.rb
vines-0.4.1 test/stream/component/handshake_test.rb
vines-0.4.0 test/stream/component/handshake_test.rb