net-sftp 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. data/doc/LICENSE-BSD +27 -0
  2. data/doc/LICENSE-GPL +280 -0
  3. data/doc/LICENSE-RUBY +56 -0
  4. data/examples/asynchronous.rb +57 -0
  5. data/examples/ssh-service.rb +31 -0
  6. data/examples/synchronous.rb +120 -0
  7. data/lib/net/sftp.rb +39 -0
  8. data/lib/net/sftp/errors.rb +25 -0
  9. data/lib/net/sftp/operations/abstract.rb +103 -0
  10. data/lib/net/sftp/operations/close.rb +31 -0
  11. data/lib/net/sftp/operations/errors.rb +76 -0
  12. data/lib/net/sftp/operations/fsetstat.rb +36 -0
  13. data/lib/net/sftp/operations/fstat.rb +32 -0
  14. data/lib/net/sftp/operations/lstat.rb +31 -0
  15. data/lib/net/sftp/operations/mkdir.rb +33 -0
  16. data/lib/net/sftp/operations/open.rb +32 -0
  17. data/lib/net/sftp/operations/opendir.rb +32 -0
  18. data/lib/net/sftp/operations/read.rb +84 -0
  19. data/lib/net/sftp/operations/readdir.rb +55 -0
  20. data/lib/net/sftp/operations/realpath.rb +37 -0
  21. data/lib/net/sftp/operations/remove.rb +31 -0
  22. data/lib/net/sftp/operations/rename.rb +32 -0
  23. data/lib/net/sftp/operations/rmdir.rb +31 -0
  24. data/lib/net/sftp/operations/services.rb +42 -0
  25. data/lib/net/sftp/operations/setstat.rb +33 -0
  26. data/lib/net/sftp/operations/stat.rb +31 -0
  27. data/lib/net/sftp/operations/write.rb +63 -0
  28. data/lib/net/sftp/protocol/01/attributes.rb +146 -0
  29. data/lib/net/sftp/protocol/01/impl.rb +251 -0
  30. data/lib/net/sftp/protocol/01/packet-assistant.rb +82 -0
  31. data/lib/net/sftp/protocol/01/services.rb +47 -0
  32. data/lib/net/sftp/protocol/02/impl.rb +39 -0
  33. data/lib/net/sftp/protocol/02/packet-assistant.rb +32 -0
  34. data/lib/net/sftp/protocol/02/services.rb +44 -0
  35. data/lib/net/sftp/protocol/03/impl.rb +42 -0
  36. data/lib/net/sftp/protocol/03/packet-assistant.rb +35 -0
  37. data/lib/net/sftp/protocol/03/services.rb +44 -0
  38. data/lib/net/sftp/protocol/04/attributes.rb +227 -0
  39. data/lib/net/sftp/protocol/04/impl.rb +134 -0
  40. data/lib/net/sftp/protocol/04/packet-assistant.rb +51 -0
  41. data/lib/net/sftp/protocol/04/services.rb +44 -0
  42. data/lib/net/sftp/protocol/05/services.rb +44 -0
  43. data/lib/net/sftp/protocol/constants.rb +60 -0
  44. data/lib/net/sftp/protocol/driver.rb +232 -0
  45. data/lib/net/sftp/protocol/packet-assistant.rb +84 -0
  46. data/lib/net/sftp/protocol/services.rb +55 -0
  47. data/lib/net/sftp/session.rb +215 -0
  48. data/lib/net/sftp/version.rb +25 -0
  49. data/test/ALL-TESTS.rb +21 -0
  50. data/test/operations/tc_abstract.rb +124 -0
  51. data/test/operations/tc_close.rb +40 -0
  52. data/test/operations/tc_fsetstat.rb +48 -0
  53. data/test/operations/tc_fstat.rb +40 -0
  54. data/test/operations/tc_lstat.rb +40 -0
  55. data/test/operations/tc_mkdir.rb +48 -0
  56. data/test/operations/tc_open.rb +42 -0
  57. data/test/operations/tc_opendir.rb +40 -0
  58. data/test/operations/tc_read.rb +103 -0
  59. data/test/operations/tc_readdir.rb +88 -0
  60. data/test/operations/tc_realpath.rb +54 -0
  61. data/test/operations/tc_remove.rb +40 -0
  62. data/test/operations/tc_rmdir.rb +40 -0
  63. data/test/operations/tc_setstat.rb +48 -0
  64. data/test/operations/tc_stat.rb +40 -0
  65. data/test/operations/tc_write.rb +91 -0
  66. data/test/protocol/01/tc_attributes.rb +138 -0
  67. data/test/protocol/01/tc_impl.rb +294 -0
  68. data/test/protocol/01/tc_packet_assistant.rb +81 -0
  69. data/test/protocol/02/tc_impl.rb +41 -0
  70. data/test/protocol/02/tc_packet_assistant.rb +31 -0
  71. data/test/protocol/03/tc_impl.rb +48 -0
  72. data/test/protocol/03/tc_packet_assistant.rb +34 -0
  73. data/test/protocol/04/tc_attributes.rb +174 -0
  74. data/test/protocol/04/tc_impl.rb +102 -0
  75. data/test/protocol/04/tc_packet_assistant.rb +41 -0
  76. data/test/protocol/tc_driver.rb +219 -0
  77. metadata +137 -0
@@ -0,0 +1,40 @@
1
+ #--
2
+ # =============================================================================
3
+ # Copyright (c) 2004, Jamis Buck (jgb3@email.byu.edu)
4
+ # All rights reserved.
5
+ #
6
+ # This source file is distributed as part of the Net::SFTP Secure FTP Client
7
+ # library for Ruby. This file (and the library as a whole) may be used only as
8
+ # allowed by either the BSD license, or the Ruby license (or, by association
9
+ # with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SFTP
10
+ # distribution for the texts of these licenses.
11
+ # -----------------------------------------------------------------------------
12
+ # net-sftp website: http://net-ssh.rubyforge.org/sftp
13
+ # project website : http://rubyforge.org/projects/net-ssh
14
+ # =============================================================================
15
+ #++
16
+
17
+ $:.unshift "../../lib"
18
+
19
+ require 'test/unit'
20
+ require 'net/sftp/operations/close'
21
+ require 'flexmock'
22
+
23
+ class TC_Operations_Close < Test::Unit::TestCase
24
+
25
+ def setup
26
+ @log = FlexMock.new
27
+ @session = FlexMock.new
28
+ @driver = FlexMock.new
29
+ @operation = Net::SFTP::Operations::Close.new( @log, @session, @driver )
30
+ end
31
+
32
+ def test_perform
33
+ id = handle = nil
34
+ @driver.mock_handle( :close_handle ) { |i,h| id, handle = i, h; 10 }
35
+ assert_equal 10, @operation.perform( "foo" )
36
+ assert_nil id
37
+ assert_equal "foo", handle
38
+ end
39
+
40
+ end
@@ -0,0 +1,48 @@
1
+ #--
2
+ # =============================================================================
3
+ # Copyright (c) 2004, Jamis Buck (jgb3@email.byu.edu)
4
+ # All rights reserved.
5
+ #
6
+ # This source file is distributed as part of the Net::SFTP Secure FTP Client
7
+ # library for Ruby. This file (and the library as a whole) may be used only as
8
+ # allowed by either the BSD license, or the Ruby license (or, by association
9
+ # with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SFTP
10
+ # distribution for the texts of these licenses.
11
+ # -----------------------------------------------------------------------------
12
+ # net-sftp website: http://net-ssh.rubyforge.org/sftp
13
+ # project website : http://rubyforge.org/projects/net-ssh
14
+ # =============================================================================
15
+ #++
16
+
17
+ $:.unshift "../../lib"
18
+
19
+ require 'test/unit'
20
+ require 'net/sftp/operations/fsetstat'
21
+ require 'flexmock'
22
+
23
+ class TC_Operations_Fsetstat < Test::Unit::TestCase
24
+
25
+ def setup
26
+ @log = FlexMock.new
27
+ @session = FlexMock.new
28
+ @attr_factory = FlexMock.new
29
+ @driver = FlexMock.new
30
+ @driver.mock_handle( :attr_factory ) { @attr_factory }
31
+ @operation = Net::SFTP::Operations::Fsetstat.new( @log, @session, @driver )
32
+ end
33
+
34
+ def test_perform
35
+ hash = nil
36
+ @attr_factory.mock_handle( :from_hash ) { |h| hash = h; :foo }
37
+
38
+ id = handle = attrs = nil
39
+ @driver.mock_handle( :fsetstat ) { |i,h,a| id, handle, attrs = i, h, a; 10 }
40
+
41
+ assert_equal 10, @operation.perform( "foo", "bar" )
42
+ assert_nil id
43
+ assert_equal "foo", handle
44
+ assert_equal "bar", hash
45
+ assert_equal :foo, attrs
46
+ end
47
+
48
+ end
@@ -0,0 +1,40 @@
1
+ #--
2
+ # =============================================================================
3
+ # Copyright (c) 2004, Jamis Buck (jgb3@email.byu.edu)
4
+ # All rights reserved.
5
+ #
6
+ # This source file is distributed as part of the Net::SFTP Secure FTP Client
7
+ # library for Ruby. This file (and the library as a whole) may be used only as
8
+ # allowed by either the BSD license, or the Ruby license (or, by association
9
+ # with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SFTP
10
+ # distribution for the texts of these licenses.
11
+ # -----------------------------------------------------------------------------
12
+ # net-sftp website: http://net-ssh.rubyforge.org/sftp
13
+ # project website : http://rubyforge.org/projects/net-ssh
14
+ # =============================================================================
15
+ #++
16
+
17
+ $:.unshift "../../lib"
18
+
19
+ require 'test/unit'
20
+ require 'net/sftp/operations/fstat'
21
+ require 'flexmock'
22
+
23
+ class TC_Operations_Fstat < Test::Unit::TestCase
24
+
25
+ def setup
26
+ @log = FlexMock.new
27
+ @session = FlexMock.new
28
+ @driver = FlexMock.new
29
+ @operation = Net::SFTP::Operations::Fstat.new( @log, @session, @driver )
30
+ end
31
+
32
+ def test_perform
33
+ id = handle = nil
34
+ @driver.mock_handle( :fstat ) { |i,h| id, handle = i, h; 10 }
35
+ assert_equal 10, @operation.perform( "foo" )
36
+ assert_nil id
37
+ assert_equal "foo", handle
38
+ end
39
+
40
+ end
@@ -0,0 +1,40 @@
1
+ #--
2
+ # =============================================================================
3
+ # Copyright (c) 2004, Jamis Buck (jgb3@email.byu.edu)
4
+ # All rights reserved.
5
+ #
6
+ # This source file is distributed as part of the Net::SFTP Secure FTP Client
7
+ # library for Ruby. This file (and the library as a whole) may be used only as
8
+ # allowed by either the BSD license, or the Ruby license (or, by association
9
+ # with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SFTP
10
+ # distribution for the texts of these licenses.
11
+ # -----------------------------------------------------------------------------
12
+ # net-sftp website: http://net-ssh.rubyforge.org/sftp
13
+ # project website : http://rubyforge.org/projects/net-ssh
14
+ # =============================================================================
15
+ #++
16
+
17
+ $:.unshift "../../lib"
18
+
19
+ require 'test/unit'
20
+ require 'net/sftp/operations/lstat'
21
+ require 'flexmock'
22
+
23
+ class TC_Operations_Lstat < Test::Unit::TestCase
24
+
25
+ def setup
26
+ @log = FlexMock.new
27
+ @session = FlexMock.new
28
+ @driver = FlexMock.new
29
+ @operation = Net::SFTP::Operations::Lstat.new( @log, @session, @driver )
30
+ end
31
+
32
+ def test_perform
33
+ id = path = nil
34
+ @driver.mock_handle( :lstat ) { |i,p| id, path = i, p; 10 }
35
+ assert_equal 10, @operation.perform( "foo" )
36
+ assert_nil id
37
+ assert_equal "foo", path
38
+ end
39
+
40
+ end
@@ -0,0 +1,48 @@
1
+ #--
2
+ # =============================================================================
3
+ # Copyright (c) 2004, Jamis Buck (jgb3@email.byu.edu)
4
+ # All rights reserved.
5
+ #
6
+ # This source file is distributed as part of the Net::SFTP Secure FTP Client
7
+ # library for Ruby. This file (and the library as a whole) may be used only as
8
+ # allowed by either the BSD license, or the Ruby license (or, by association
9
+ # with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SFTP
10
+ # distribution for the texts of these licenses.
11
+ # -----------------------------------------------------------------------------
12
+ # net-sftp website: http://net-ssh.rubyforge.org/sftp
13
+ # project website : http://rubyforge.org/projects/net-ssh
14
+ # =============================================================================
15
+ #++
16
+
17
+ $:.unshift "../../lib"
18
+
19
+ require 'test/unit'
20
+ require 'net/sftp/operations/mkdir'
21
+ require 'flexmock'
22
+
23
+ class TC_Operations_Mkdir < Test::Unit::TestCase
24
+
25
+ def setup
26
+ @log = FlexMock.new
27
+ @session = FlexMock.new
28
+ @attr_factory = FlexMock.new
29
+ @driver = FlexMock.new
30
+ @driver.mock_handle( :attr_factory ) { @attr_factory }
31
+ @operation = Net::SFTP::Operations::Mkdir.new( @log, @session, @driver )
32
+ end
33
+
34
+ def test_perform
35
+ hash = nil
36
+ @attr_factory.mock_handle( :from_hash ) { |h| hash = h; :foo }
37
+
38
+ id = handle = attrs = nil
39
+ @driver.mock_handle( :mkdir ) { |i,h,a| id, handle, attrs = i, h, a; 10 }
40
+
41
+ assert_equal 10, @operation.perform( "foo", "bar" )
42
+ assert_nil id
43
+ assert_equal "foo", handle
44
+ assert_equal "bar", hash
45
+ assert_equal :foo, attrs
46
+ end
47
+
48
+ end
@@ -0,0 +1,42 @@
1
+ #--
2
+ # =============================================================================
3
+ # Copyright (c) 2004, Jamis Buck (jgb3@email.byu.edu)
4
+ # All rights reserved.
5
+ #
6
+ # This source file is distributed as part of the Net::SFTP Secure FTP Client
7
+ # library for Ruby. This file (and the library as a whole) may be used only as
8
+ # allowed by either the BSD license, or the Ruby license (or, by association
9
+ # with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SFTP
10
+ # distribution for the texts of these licenses.
11
+ # -----------------------------------------------------------------------------
12
+ # net-sftp website: http://net-ssh.rubyforge.org/sftp
13
+ # project website : http://rubyforge.org/projects/net-ssh
14
+ # =============================================================================
15
+ #++
16
+
17
+ $:.unshift "../../lib"
18
+
19
+ require 'test/unit'
20
+ require 'net/sftp/operations/open'
21
+ require 'flexmock'
22
+
23
+ class TC_Operations_Open < Test::Unit::TestCase
24
+
25
+ def setup
26
+ @log = FlexMock.new
27
+ @session = FlexMock.new
28
+ @driver = FlexMock.new
29
+ @operation = Net::SFTP::Operations::Open.new( @log, @session, @driver )
30
+ end
31
+
32
+ def test_perform
33
+ id = handle = flags = mode = nil
34
+ @driver.mock_handle( :open ) { |i,h,f,m| id, handle, flags, mode = i, h, f, m; 10 }
35
+ assert_equal 10, @operation.perform( "foo" )
36
+ assert_nil id
37
+ assert_equal "foo", handle
38
+ assert_equal IO::RDONLY, flags
39
+ assert_equal 0660, mode
40
+ end
41
+
42
+ end
@@ -0,0 +1,40 @@
1
+ #--
2
+ # =============================================================================
3
+ # Copyright (c) 2004, Jamis Buck (jgb3@email.byu.edu)
4
+ # All rights reserved.
5
+ #
6
+ # This source file is distributed as part of the Net::SFTP Secure FTP Client
7
+ # library for Ruby. This file (and the library as a whole) may be used only as
8
+ # allowed by either the BSD license, or the Ruby license (or, by association
9
+ # with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SFTP
10
+ # distribution for the texts of these licenses.
11
+ # -----------------------------------------------------------------------------
12
+ # net-sftp website: http://net-ssh.rubyforge.org/sftp
13
+ # project website : http://rubyforge.org/projects/net-ssh
14
+ # =============================================================================
15
+ #++
16
+
17
+ $:.unshift "../../lib"
18
+
19
+ require 'test/unit'
20
+ require 'net/sftp/operations/opendir'
21
+ require 'flexmock'
22
+
23
+ class TC_Operations_Opendir < Test::Unit::TestCase
24
+
25
+ def setup
26
+ @log = FlexMock.new
27
+ @session = FlexMock.new
28
+ @driver = FlexMock.new
29
+ @operation = Net::SFTP::Operations::Opendir.new( @log, @session, @driver )
30
+ end
31
+
32
+ def test_perform
33
+ id = path = nil
34
+ @driver.mock_handle( :opendir ) { |i,p| id, path = i, p; 10 }
35
+ assert_equal 10, @operation.perform( "foo" )
36
+ assert_nil id
37
+ assert_equal "foo", path
38
+ end
39
+
40
+ end
@@ -0,0 +1,103 @@
1
+ #--
2
+ # =============================================================================
3
+ # Copyright (c) 2004, Jamis Buck (jgb3@email.byu.edu)
4
+ # All rights reserved.
5
+ #
6
+ # This source file is distributed as part of the Net::SFTP Secure FTP Client
7
+ # library for Ruby. This file (and the library as a whole) may be used only as
8
+ # allowed by either the BSD license, or the Ruby license (or, by association
9
+ # with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SFTP
10
+ # distribution for the texts of these licenses.
11
+ # -----------------------------------------------------------------------------
12
+ # net-sftp website: http://net-ssh.rubyforge.org/sftp
13
+ # project website : http://rubyforge.org/projects/net-ssh
14
+ # =============================================================================
15
+ #++
16
+
17
+ $:.unshift "../../lib"
18
+
19
+ require 'test/unit'
20
+ require 'net/sftp/operations/read'
21
+ require 'flexmock'
22
+
23
+ class TC_Operations_Read < Test::Unit::TestCase
24
+
25
+ def setup
26
+ @log = FlexMock.new
27
+ @log.mock_handle( :debug? )
28
+ @log.mock_handle( :debug )
29
+
30
+ @session = FlexMock.new
31
+ @driver = FlexMock.new
32
+ @operation = Net::SFTP::Operations::Read.new( @log, @session, @driver )
33
+ end
34
+
35
+ def test_perform_defaults
36
+ id = handle = offset = length = nil
37
+ @driver.mock_handle( :read ) { |i,h,o,l| id, handle, offset, length = i, h, o, l; 10 }
38
+ assert_equal 10, @operation.perform( "foo" )
39
+ assert_nil id
40
+ assert_equal "foo", handle
41
+ assert_equal 0, offset
42
+ assert_equal 64 * 1024, length
43
+ end
44
+
45
+ def test_perform_explicit
46
+ id = handle = offset = length = nil
47
+ @driver.mock_handle( :read ) { |i,h,o,l| id, handle, offset, length = i, h, o, l; 10 }
48
+ assert_equal 10, @operation.perform( "foo", 15, 72 )
49
+ assert_nil id
50
+ assert_equal "foo", handle
51
+ assert_equal 15, offset
52
+ assert_equal 72, length
53
+ end
54
+
55
+ def test_do_data_full
56
+ id = handle = offset = length = nil
57
+ @driver.mock_handle( :read ) { |i,h,o,l| id, handle, offset, length = i, h, o, l; 10 }
58
+ @session.mock_handle( :register )
59
+ @operation.perform( "foo" )
60
+ @operation.do_data( "harbinger of doom" )
61
+ assert_equal 2, @driver.mock_count( :read )
62
+ assert_equal 1, @session.mock_count( :register )
63
+ assert_equal "foo", handle
64
+ assert_equal 17, offset
65
+ assert_equal 64 * 1024, length
66
+ end
67
+
68
+ def test_do_data_partial
69
+ id = handle = offset = length = nil
70
+ @driver.mock_handle( :read ) { |i,h,o,l| id, handle, offset, length = i, h, o, l; 10 }
71
+ @session.mock_handle( :register )
72
+ @session.mock_handle( :loop )
73
+ @session.mock_handle( :status= )
74
+ called = false
75
+ @operation.execute( "foo", 15, 20 ) { called = true }
76
+ @operation.do_data( "harbinger of doom" )
77
+ @operation.do_data( "abc" )
78
+ assert_equal 2, @driver.mock_count( :read )
79
+ assert_equal 2, @session.mock_count( :register )
80
+ assert_equal "foo", handle
81
+ assert_equal 32, offset
82
+ assert_equal 3, length
83
+ assert called
84
+ end
85
+
86
+ def test_do_status_eof
87
+ @driver.mock_handle( :read )
88
+ @session.mock_handle( :register )
89
+ @session.mock_handle( :loop )
90
+ @session.mock_handle( :status= )
91
+ called = false
92
+ @operation.execute( "foo", 15, 20 ) { called = true }
93
+ assert_nothing_raised { @operation.do_status( 1, nil, nil ) }
94
+ assert called
95
+ end
96
+
97
+ def test_do_status_bad
98
+ assert_raise( Net::SFTP::Operations::StatusException ) do
99
+ @operation.do_status( 2, nil, nil )
100
+ end
101
+ end
102
+
103
+ end
@@ -0,0 +1,88 @@
1
+ #--
2
+ # =============================================================================
3
+ # Copyright (c) 2004, Jamis Buck (jgb3@email.byu.edu)
4
+ # All rights reserved.
5
+ #
6
+ # This source file is distributed as part of the Net::SFTP Secure FTP Client
7
+ # library for Ruby. This file (and the library as a whole) may be used only as
8
+ # allowed by either the BSD license, or the Ruby license (or, by association
9
+ # with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SFTP
10
+ # distribution for the texts of these licenses.
11
+ # -----------------------------------------------------------------------------
12
+ # net-sftp website: http://net-ssh.rubyforge.org/sftp
13
+ # project website : http://rubyforge.org/projects/net-ssh
14
+ # =============================================================================
15
+ #++
16
+
17
+ $:.unshift "../../lib"
18
+
19
+ require 'test/unit'
20
+ require 'net/sftp/operations/readdir'
21
+ require 'flexmock'
22
+
23
+ class TC_Operations_Readdir < Test::Unit::TestCase
24
+
25
+ def setup
26
+ @log = FlexMock.new
27
+ @session = FlexMock.new
28
+ @driver = FlexMock.new
29
+ @operation = Net::SFTP::Operations::Readdir.new( @log, @session, @driver )
30
+ end
31
+
32
+ def test_perform
33
+ id = handle = nil
34
+ @driver.mock_handle( :readdir ) { |i,h| id, handle = i, h; 10 }
35
+ assert_equal 10, @operation.perform( "foo" )
36
+ assert_nil id
37
+ assert_equal "foo", handle
38
+ end
39
+
40
+ def test_do_name
41
+ id = handle = nil
42
+ @log.mock_handle( :debug? )
43
+ @log.mock_handle( :debug )
44
+ @driver.mock_handle( :readdir ) { |i,h| id, handle = i, h; 10 }
45
+ @session.mock_handle( :register )
46
+ @operation.perform( "foo" )
47
+ @operation.do_name( [ :a, :b ] )
48
+ assert_equal 1, @session.mock_count( :register )
49
+ assert_equal "foo", handle
50
+ end
51
+
52
+ def test_do_status_ok
53
+ called = false
54
+
55
+ @log.mock_handle( :debug? )
56
+ @log.mock_handle( :debug )
57
+ @driver.mock_handle( :readdir )
58
+ @session.mock_handle( :register )
59
+ @session.mock_handle( :status= )
60
+ @session.mock_handle( :loop )
61
+
62
+ @operation.execute( "foo" ) { called = true }
63
+ assert_nothing_raised { @operation.do_status( 0, :a, :b ) }
64
+ assert called
65
+ end
66
+
67
+ def test_do_status_eof
68
+ called = false
69
+
70
+ @log.mock_handle( :debug? )
71
+ @log.mock_handle( :debug )
72
+ @driver.mock_handle( :readdir )
73
+ @session.mock_handle( :register )
74
+ @session.mock_handle( :status= )
75
+ @session.mock_handle( :loop )
76
+
77
+ @operation.execute( "foo" ) { called = true }
78
+ assert_nothing_raised { @operation.do_status( 1, :a, :b ) }
79
+ assert called
80
+ end
81
+
82
+ def test_do_status_bad
83
+ assert_raise( Net::SFTP::Operations::StatusException ) do
84
+ @operation.do_status( 2, :a, :b )
85
+ end
86
+ end
87
+
88
+ end