File: test_request.rb

package info (click to toggle)
ruby-net-sftp 1%3A2.1.2-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 528 kB
  • ctags: 860
  • sloc: ruby: 5,015; makefile: 4
file content (71 lines) | stat: -rw-r--r-- 2,082 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
require 'common'

class RequestTest < Net::SFTP::TestCase
  def test_property_setter_should_symbolize_key
    request = Net::SFTP::Request.new(stub("session"), :open, 1)
    request["key"] = :value
    assert_equal :value, request['key']
    assert_equal :value, request[:key]
    assert_equal :value, request.properties[:key]
    assert_nil request.properties['key']
  end

  def test_pending_should_query_pending_requests_of_session
    session = stub("session", :pending_requests => {1 => true})
    request = Net::SFTP::Request.new(session, :open, 1)
    assert request.pending?
    request = Net::SFTP::Request.new(session, :open, 2)
    assert !request.pending?
  end

  def test_wait_should_run_loop_while_pending_and_return_self
    session = MockSession.new
    request = Net::SFTP::Request.new(session, :open, 1)
    request.expects(:pending?).times(4).returns(true, true, true, false)
    assert_equal 0, session.loops
    assert_equal request, request.wait
    assert_equal 4, session.loops
  end

  def test_respond_to_should_set_response_property
    packet = stub("packet", :type => 1)
    session = stub("session", :protocol => mock("protocol"))
    session.protocol.expects(:parse).with(packet).returns({})
    request = Net::SFTP::Request.new(session, :open, 1)
    assert_nil request.response
    request.respond_to(packet)
    assert_instance_of Net::SFTP::Response, request.response
  end

  def test_respond_to_with_callback_should_invoke_callback
    packet = stub("packet", :type => 1)
    session = stub("session", :protocol => mock("protocol"))
    session.protocol.expects(:parse).with(packet).returns({})

    called = false
    request = Net::SFTP::Request.new(session, :open, 1) do |response|
      called = true
      assert_equal request.response, response
    end

    request.respond_to(packet)
    assert called
  end

  private

    class MockSession
      attr_reader :loops

      def initialize
        @loops = 0
      end

      def loop
        while true
          @loops += 1
          break unless yield
        end
      end
    end
end