net-sftp 1.1.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. data/CHANGELOG.rdoc +23 -0
  2. data/Manifest +55 -0
  3. data/README.rdoc +96 -0
  4. data/Rakefile +30 -0
  5. data/lib/net/sftp.rb +53 -38
  6. data/lib/net/sftp/constants.rb +187 -0
  7. data/lib/net/sftp/errors.rb +34 -20
  8. data/lib/net/sftp/operations/dir.rb +93 -0
  9. data/lib/net/sftp/operations/download.rb +364 -0
  10. data/lib/net/sftp/operations/file.rb +176 -0
  11. data/lib/net/sftp/operations/file_factory.rb +60 -0
  12. data/lib/net/sftp/operations/upload.rb +387 -0
  13. data/lib/net/sftp/packet.rb +21 -0
  14. data/lib/net/sftp/protocol.rb +32 -0
  15. data/lib/net/sftp/protocol/01/attributes.rb +265 -96
  16. data/lib/net/sftp/protocol/01/base.rb +268 -0
  17. data/lib/net/sftp/protocol/01/name.rb +43 -0
  18. data/lib/net/sftp/protocol/02/base.rb +31 -0
  19. data/lib/net/sftp/protocol/03/base.rb +35 -0
  20. data/lib/net/sftp/protocol/04/attributes.rb +120 -195
  21. data/lib/net/sftp/protocol/04/base.rb +94 -0
  22. data/lib/net/sftp/protocol/04/name.rb +67 -0
  23. data/lib/net/sftp/protocol/05/base.rb +66 -0
  24. data/lib/net/sftp/protocol/06/attributes.rb +107 -0
  25. data/lib/net/sftp/protocol/06/base.rb +63 -0
  26. data/lib/net/sftp/protocol/base.rb +50 -0
  27. data/lib/net/sftp/request.rb +91 -0
  28. data/lib/net/sftp/response.rb +76 -0
  29. data/lib/net/sftp/session.rb +914 -238
  30. data/lib/net/sftp/version.rb +14 -21
  31. data/net-sftp.gemspec +60 -0
  32. data/setup.rb +1331 -0
  33. data/test/common.rb +173 -0
  34. data/test/protocol/01/test_attributes.rb +97 -0
  35. data/test/protocol/01/test_base.rb +210 -0
  36. data/test/protocol/01/test_name.rb +27 -0
  37. data/test/protocol/02/test_base.rb +26 -0
  38. data/test/protocol/03/test_base.rb +27 -0
  39. data/test/protocol/04/test_attributes.rb +148 -0
  40. data/test/protocol/04/test_base.rb +74 -0
  41. data/test/protocol/04/test_name.rb +49 -0
  42. data/test/protocol/05/test_base.rb +62 -0
  43. data/test/protocol/06/test_attributes.rb +124 -0
  44. data/test/protocol/06/test_base.rb +51 -0
  45. data/test/protocol/test_base.rb +42 -0
  46. data/test/test_all.rb +3 -0
  47. data/test/test_dir.rb +47 -0
  48. data/test/test_download.rb +252 -0
  49. data/test/test_file.rb +159 -0
  50. data/test/test_file_factory.rb +48 -0
  51. data/test/test_packet.rb +9 -0
  52. data/test/test_protocol.rb +17 -0
  53. data/test/test_request.rb +71 -0
  54. data/test/test_response.rb +53 -0
  55. data/test/test_session.rb +741 -0
  56. data/test/test_upload.rb +219 -0
  57. metadata +59 -111
  58. data/doc/LICENSE-BSD +0 -27
  59. data/doc/LICENSE-GPL +0 -280
  60. data/doc/LICENSE-RUBY +0 -56
  61. data/doc/faq/faq.html +0 -298
  62. data/doc/faq/faq.rb +0 -154
  63. data/doc/faq/faq.yml +0 -183
  64. data/examples/asynchronous.rb +0 -57
  65. data/examples/get-put.rb +0 -45
  66. data/examples/sftp-open-uri.rb +0 -30
  67. data/examples/ssh-service.rb +0 -30
  68. data/examples/synchronous.rb +0 -131
  69. data/lib/net/sftp/operations/abstract.rb +0 -108
  70. data/lib/net/sftp/operations/close.rb +0 -31
  71. data/lib/net/sftp/operations/errors.rb +0 -76
  72. data/lib/net/sftp/operations/fsetstat.rb +0 -36
  73. data/lib/net/sftp/operations/fstat.rb +0 -32
  74. data/lib/net/sftp/operations/lstat.rb +0 -31
  75. data/lib/net/sftp/operations/mkdir.rb +0 -33
  76. data/lib/net/sftp/operations/open.rb +0 -32
  77. data/lib/net/sftp/operations/opendir.rb +0 -32
  78. data/lib/net/sftp/operations/read.rb +0 -88
  79. data/lib/net/sftp/operations/readdir.rb +0 -55
  80. data/lib/net/sftp/operations/realpath.rb +0 -37
  81. data/lib/net/sftp/operations/remove.rb +0 -31
  82. data/lib/net/sftp/operations/rename.rb +0 -32
  83. data/lib/net/sftp/operations/rmdir.rb +0 -31
  84. data/lib/net/sftp/operations/services.rb +0 -42
  85. data/lib/net/sftp/operations/setstat.rb +0 -33
  86. data/lib/net/sftp/operations/stat.rb +0 -31
  87. data/lib/net/sftp/operations/write.rb +0 -63
  88. data/lib/net/sftp/protocol/01/impl.rb +0 -251
  89. data/lib/net/sftp/protocol/01/packet-assistant.rb +0 -82
  90. data/lib/net/sftp/protocol/01/services.rb +0 -47
  91. data/lib/net/sftp/protocol/02/impl.rb +0 -39
  92. data/lib/net/sftp/protocol/02/packet-assistant.rb +0 -32
  93. data/lib/net/sftp/protocol/02/services.rb +0 -44
  94. data/lib/net/sftp/protocol/03/impl.rb +0 -42
  95. data/lib/net/sftp/protocol/03/packet-assistant.rb +0 -35
  96. data/lib/net/sftp/protocol/03/services.rb +0 -44
  97. data/lib/net/sftp/protocol/04/impl.rb +0 -86
  98. data/lib/net/sftp/protocol/04/packet-assistant.rb +0 -45
  99. data/lib/net/sftp/protocol/04/services.rb +0 -44
  100. data/lib/net/sftp/protocol/05/impl.rb +0 -90
  101. data/lib/net/sftp/protocol/05/packet-assistant.rb +0 -34
  102. data/lib/net/sftp/protocol/05/services.rb +0 -44
  103. data/lib/net/sftp/protocol/constants.rb +0 -60
  104. data/lib/net/sftp/protocol/driver.rb +0 -235
  105. data/lib/net/sftp/protocol/packet-assistant.rb +0 -84
  106. data/lib/net/sftp/protocol/services.rb +0 -55
  107. data/lib/uri/open-sftp.rb +0 -54
  108. data/lib/uri/sftp.rb +0 -42
  109. data/test/ALL-TESTS.rb +0 -23
  110. data/test/operations/tc_abstract.rb +0 -124
  111. data/test/operations/tc_close.rb +0 -40
  112. data/test/operations/tc_fsetstat.rb +0 -48
  113. data/test/operations/tc_fstat.rb +0 -40
  114. data/test/operations/tc_lstat.rb +0 -40
  115. data/test/operations/tc_mkdir.rb +0 -48
  116. data/test/operations/tc_open.rb +0 -42
  117. data/test/operations/tc_opendir.rb +0 -40
  118. data/test/operations/tc_read.rb +0 -103
  119. data/test/operations/tc_readdir.rb +0 -88
  120. data/test/operations/tc_realpath.rb +0 -54
  121. data/test/operations/tc_remove.rb +0 -40
  122. data/test/operations/tc_rmdir.rb +0 -40
  123. data/test/operations/tc_setstat.rb +0 -48
  124. data/test/operations/tc_stat.rb +0 -40
  125. data/test/operations/tc_write.rb +0 -91
  126. data/test/protocol/01/tc_attributes.rb +0 -138
  127. data/test/protocol/01/tc_impl.rb +0 -294
  128. data/test/protocol/01/tc_packet_assistant.rb +0 -81
  129. data/test/protocol/02/tc_impl.rb +0 -41
  130. data/test/protocol/02/tc_packet_assistant.rb +0 -31
  131. data/test/protocol/03/tc_impl.rb +0 -48
  132. data/test/protocol/03/tc_packet_assistant.rb +0 -34
  133. data/test/protocol/04/tc_attributes.rb +0 -174
  134. data/test/protocol/04/tc_impl.rb +0 -91
  135. data/test/protocol/04/tc_packet_assistant.rb +0 -38
  136. data/test/protocol/05/tc_impl.rb +0 -61
  137. data/test/protocol/05/tc_packet_assistant.rb +0 -32
  138. data/test/protocol/tc_driver.rb +0 -219
@@ -1,81 +0,0 @@
1
- #--
2
- # =============================================================================
3
- # Copyright (c) 2004, Jamis Buck (jamis@37signals.com)
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/protocol/01/packet-assistant'
21
- require 'flexmock'
22
- require 'net/ssh/util/buffer'
23
-
24
- class TC_01_PacketAssistant < Test::Unit::TestCase
25
-
26
- class Buffers
27
- def writer
28
- Net::SSH::Util::WriterBuffer.new
29
- end
30
- end
31
-
32
- def setup
33
- @driver = FlexMock.new
34
- @driver.mock_handle( :next_request_id ) { 14 }
35
- @packets = packet_assistant_class.new( Buffers.new, @driver )
36
- end
37
-
38
- def packet_assistant_class
39
- Net::SFTP::Protocol::V_01::PacketAssistant
40
- end
41
-
42
- def self.packet( name, args, expect )
43
- define_method( "test_#{name}" ) do
44
- id, packet = @packets.__send__( name, *[ nil, *args ] )
45
- assert_equal 14, id
46
- assert_equal "\0\0\0\16" + expect, packet
47
- end
48
- end
49
-
50
- packet :open, [ "a path", 1, "attrs" ], "\0\0\0\6a path\0\0\0\1attrs"
51
-
52
- packet :close, [ "handle" ], "\0\0\0\6handle"
53
-
54
- packet :read, [ "handle", 0, 16 ], "\0\0\0\6handle\0\0\0\0\0\0\0\0\0\0\0\20"
55
-
56
- packet :write, [ "handle", 0, "data" ],
57
- "\0\0\0\6handle\0\0\0\0\0\0\0\0\0\0\0\4data"
58
-
59
- packet :opendir, [ "a path" ], "\0\0\0\6a path"
60
-
61
- packet :readdir, [ "handle" ], "\0\0\0\6handle"
62
-
63
- packet :remove, [ "a path" ], "\0\0\0\6a path"
64
-
65
- packet :stat, [ "a path" ], "\0\0\0\6a path"
66
-
67
- packet :lstat, [ "a path" ], "\0\0\0\6a path"
68
-
69
- packet :fstat, [ "handle" ], "\0\0\0\6handle"
70
-
71
- packet :setstat, [ "a path", "attrs" ], "\0\0\0\6a pathattrs"
72
-
73
- packet :fsetstat, [ "handle", "attrs" ], "\0\0\0\6handleattrs"
74
-
75
- packet :mkdir, [ "a path", "attrs" ], "\0\0\0\6a pathattrs"
76
-
77
- packet :rmdir, [ "a path" ], "\0\0\0\6a path"
78
-
79
- packet :realpath, [ "a path" ], "\0\0\0\6a path"
80
-
81
- end
@@ -1,41 +0,0 @@
1
- #--
2
- # =============================================================================
3
- # Copyright (c) 2004, Jamis Buck (jamis@37signals.com)
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
- $:.unshift File.join( File.dirname( __FILE__ ), ".." )
19
-
20
- require '01/tc_impl.rb'
21
- require 'net/sftp/protocol/02/impl'
22
-
23
- class TC_02_Impl < TC_01_Impl
24
-
25
- def impl_class
26
- Net::SFTP::Protocol::V_02::Impl
27
- end
28
-
29
- operation :rename, :rename_raw
30
-
31
- def test_rename_flags
32
- @assistant.mock_handle( :rename ) { |*a| [ a[0], a[1..-1] ] }
33
- id = @impl.rename( 14, :a, :b, :c )
34
- assert_equal 14, id
35
- assert_equal 1, @assistant.mock_count( :rename )
36
- assert_equal 1, @driver.mock_count( :send_data )
37
- assert_equal [
38
- [ Net::SFTP::Protocol::Constants::FXP_RENAME, [ :a, :b ]] ], @sent_data
39
- end
40
-
41
- end
@@ -1,31 +0,0 @@
1
- #--
2
- # =============================================================================
3
- # Copyright (c) 2004, Jamis Buck (jamis@37signals.com)
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
- $:.unshift File.join( File.dirname( __FILE__ ), ".." )
19
-
20
- require '01/tc_packet_assistant'
21
- require 'net/sftp/protocol/02/packet-assistant'
22
-
23
- class TC_02_PacketAssistant < TC_01_PacketAssistant
24
-
25
- def packet_assistant_class
26
- Net::SFTP::Protocol::V_02::PacketAssistant
27
- end
28
-
29
- packet :rename, [ "a path", "new path" ], "\0\0\0\6a path\0\0\0\10new path"
30
-
31
- end
@@ -1,48 +0,0 @@
1
- #--
2
- # =============================================================================
3
- # Copyright (c) 2004, Jamis Buck (jamis@37signals.com)
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
- $:.unshift File.join( File.dirname( __FILE__ ), ".." )
19
-
20
- require '02/tc_impl.rb'
21
- require 'net/sftp/protocol/03/impl'
22
-
23
- class TC_03_Impl < TC_02_Impl
24
-
25
- def impl_class
26
- Net::SFTP::Protocol::V_03::Impl
27
- end
28
-
29
- operation :readlink
30
-
31
- operation :symlink
32
-
33
- def test_do_status_with_callback
34
- buffer = Net::SSH::Util::ReaderBuffer.new( "\0\0\0\1\0\0\0\2" +
35
- "\0\0\0\1a\0\0\0\1b" )
36
- called = false
37
- @impl.on_status do |d,i,c,a,b|
38
- called = true
39
- assert_equal 1, i
40
- assert_equal 2, c
41
- assert_equal "a", a
42
- assert_equal "b", b
43
- end
44
- @impl.do_status nil, buffer
45
- assert called
46
- end
47
-
48
- end
@@ -1,34 +0,0 @@
1
- #--
2
- # =============================================================================
3
- # Copyright (c) 2004, Jamis Buck (jamis@37signals.com)
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
- $:.unshift File.join( File.dirname( __FILE__ ), ".." )
19
-
20
- require '02/tc_packet_assistant'
21
- require 'net/sftp/protocol/03/packet-assistant'
22
-
23
- class TC_03_PacketAssistant < TC_02_PacketAssistant
24
-
25
- def packet_assistant_class
26
- Net::SFTP::Protocol::V_03::PacketAssistant
27
- end
28
-
29
- packet :readlink, [ "a path" ], "\0\0\0\6a path"
30
-
31
- packet :symlink, [ "from path", "to path" ],
32
- "\0\0\0\11from path\0\0\0\7to path"
33
-
34
- end
@@ -1,174 +0,0 @@
1
- #--
2
- # =============================================================================
3
- # Copyright (c) 2004, Jamis Buck (jamis@37signals.com)
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/protocol/04/attributes'
21
-
22
- require 'net/ssh'
23
- require 'net/ssh/util/buffer'
24
-
25
- class TC_04_Attributes < Test::Unit::TestCase
26
-
27
- class Buffers
28
- def writer
29
- Net::SSH::Util::WriterBuffer.new
30
- end
31
- def reader( text )
32
- Net::SSH::Util::ReaderBuffer.new( text )
33
- end
34
- end
35
-
36
- def setup
37
- @factory = Net::SFTP::Protocol::V_04::Attributes.init( Buffers.new )
38
- end
39
-
40
- def test_empty
41
- empty = @factory.empty
42
- assert_equal 1, empty.type
43
- assert_nil empty.size
44
- assert_nil empty.owner
45
- assert_nil empty.group
46
- assert_nil empty.permissions
47
- assert_nil empty.atime
48
- assert_nil empty.atime_nseconds
49
- assert_nil empty.ctime
50
- assert_nil empty.ctime_nseconds
51
- assert_nil empty.mtime
52
- assert_nil empty.mtime_nseconds
53
- assert_nil empty.acl
54
- assert_nil empty.extended
55
- assert_equal "\0\0\0\0\1", empty.to_s
56
- end
57
-
58
- def test_from_buffer_empty
59
- buffer = @factory.buffers.reader( "\0\0\0\0\2" )
60
- attrs = @factory.from_buffer( buffer )
61
- assert_equal 2, attrs.type
62
- assert_nil attrs.size
63
- assert_nil attrs.owner
64
- assert_nil attrs.group
65
- assert_nil attrs.permissions
66
- assert_nil attrs.atime
67
- assert_nil attrs.atime_nseconds
68
- assert_nil attrs.ctime
69
- assert_nil attrs.ctime_nseconds
70
- assert_nil attrs.mtime
71
- assert_nil attrs.mtime_nseconds
72
- assert_nil attrs.acl
73
- assert_nil attrs.extended
74
- assert_equal "\0\0\0\0\2", attrs.to_s
75
- end
76
-
77
- ACL = Net::SFTP::Protocol::V_04::Attributes::ACL
78
- ATTRIBUTES =
79
- [ [ 0x00000001, "\1\2\3\4\5\6\7\10", :size, 0x0102030405060708 ],
80
- [ 0x00000080, "\0\0\0\1a\0\0\0\1b", :owner, "a" ],
81
- [ 0x00000080, "\0\0\0\1a\0\0\0\1b", :group, "b" ],
82
- [ 0x00000004, "\21\22\23\24", :permissions, 0x11121314 ],
83
- [ 0x00000138,
84
- "\1\1\1\1\1\1\1\1\0\1\2\3" +
85
- "\2\2\2\2\2\2\2\2\4\5\6\7" +
86
- "\3\3\3\3\3\3\3\3\2\4\6\10", :atime_nseconds, 0x00010203 ],
87
- [ 0x00000008, "\1\2\3\4\1\2\3\4", :atime, 0x0102030401020304 ],
88
- [ 0x00000010, "\4\3\4\3\4\3\4\3", :ctime, 0x0403040304030403 ],
89
- [ 0x00000020, "\4\3\2\1\4\3\2\1", :mtime, 0x0403020104030201 ],
90
- [ 0x00000040, "\0\0\0\46\0\0\0\2\0\0\0\1\0\0\0\2\0\0\0\3\0\0\0\1a" +
91
- "\0\0\0\4\0\0\0\5\0\0\0\6\0\0\0\1b", :acl,
92
- [ ACL.new( 1, 2, 3, "a" ), ACL.new( 4, 5, 6, "b" ) ] ],
93
- [ 0x80000000,
94
- "\0\0\0\4" +
95
- "\0\0\0\01a\0\0\0\01b" +
96
- "\0\0\0\01c\0\0\0\01d" +
97
- "\0\0\0\01e\0\0\0\01f" +
98
- "\0\0\0\01g\0\0\0\01h",
99
- :extended,
100
- { "a" => "b", "c" => "d", "e" => "f", "g" => "h" } ] ]
101
-
102
- # find all possible combinations of the elements of ATTRIBUTES
103
- # (i.e., 'n' choose k, for k in [1..ATTRIBUTES.length]).
104
- def self.choose( from, k )
105
- result = []
106
- ( from.length - k + 1 ).times do |i|
107
- if i+1 < from.length && k > 1
108
- choose( from[i+1..-1], k-1 ).each do |chosen|
109
- result << [ from[i], *chosen ]
110
- end
111
- else
112
- result << [ from[i] ]
113
- end
114
- end
115
- result
116
- end
117
-
118
- method_id = 0
119
- ATTRIBUTES.length.times do |k|
120
- choose( ATTRIBUTES, k+1 ).each do |attrs|
121
- vars = attrs.map { |a| a[2] }.join( "_" )
122
- define_method( "test_attributes_#{vars}_%03d" % method_id ) do
123
- flags = 0
124
- buffer = "\1"
125
- attrs.each do |a|
126
- if ( flags & a[0] ) == 0
127
- flags |= a[0]
128
- buffer += a[1]
129
- end
130
- end
131
- buffer = [ flags, buffer ].pack( "NA*" )
132
- input = @factory.buffers.reader( buffer )
133
- obj = @factory.from_buffer( input )
134
- assert_equal 1, obj.type, vars
135
- flags = 0
136
- attrs.each do |a|
137
- if ( flags & a[0] ) == 0
138
- assert_equal a[3], obj.__send__( a[2] ), a[2]
139
- flags |= a[0]
140
- end
141
- end
142
- assert_equal buffer, obj.to_s, vars
143
- end
144
- method_id += 1
145
- end
146
- end
147
-
148
- require 'etc'
149
- [
150
- [ { :type => 3 }, :type, 3 ],
151
- [ { :size => 1000 }, :size, 1000, :permissions ],
152
- [ { :owner => ENV['USER'] }, :owner, ENV['USER'] ],
153
- [ { :group => 'wheel' }, :group, 'wheel' ],
154
- [ { :uid => Etc.getpwnam(ENV['USER']).uid }, :owner, ENV['USER'] ],
155
- [ { :gid => Etc.getgrnam('wheel').gid }, :group, 'wheel' ],
156
- [ { :permissions => 0600 }, :permissions, 0600 ],
157
- [ { :atime => 1 }, :atime, 1 ],
158
- [ { :atime_nseconds => 2 }, :atime_nseconds, 2 ],
159
- [ { :ctime => 1 }, :ctime, 1 ],
160
- [ { :ctime_nseconds => 2 }, :ctime_nseconds, 2 ],
161
- [ { :mtime => 1 }, :mtime, 1 ],
162
- [ { :mtime_nseconds => 2 }, :mtime_nseconds, 2 ],
163
- [ { :acl => [ ACL.new(1,2,3,4), ACL.new(5,6,7,8) ] },
164
- :acl, [ ACL.new(1,2,3,4), ACL.new(5,6,7,8) ] ],
165
- [ { :extended => { "foo" => "bar" } }, :extended, { "foo" => "bar" } ]
166
- ].each do |fixture|
167
- define_method( "test_from_hash_#{fixture[1]}" ) do
168
- attrs = @factory.from_hash( fixture[0] )
169
- assert_equal fixture[2], attrs.__send__( fixture[1] )
170
- assert_nil attrs.__send__( fixture[3] || :size )
171
- end
172
- end
173
-
174
- end
@@ -1,91 +0,0 @@
1
- #--
2
- # =============================================================================
3
- # Copyright (c) 2004, Jamis Buck (jamis@37signals.com)
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
- $:.unshift File.join( File.dirname( __FILE__ ), ".." )
19
-
20
- require 'net/sftp/protocol/04/impl'
21
- require '03/tc_impl'
22
-
23
- class TC_04_Impl < TC_03_Impl
24
-
25
- def impl_class
26
- Net::SFTP::Protocol::V_04::Impl
27
- end
28
-
29
- def test_stat_flags
30
- @assistant.mock_handle( :stat ) { |*a| [ a[0], a[1..-1] ] }
31
- id = @impl.stat( 14, :a, :b )
32
- assert_equal 14, id
33
- assert_equal 1, @assistant.mock_count( :stat )
34
- assert_equal 1, @driver.mock_count( :send_data )
35
- assert_equal [
36
- [ Net::SFTP::Protocol::Constants::FXP_STAT, [ :a, :b ]] ], @sent_data
37
- end
38
-
39
- def test_lstat_flags
40
- @assistant.mock_handle( :lstat ) { |*a| [ a[0], a[1..-1] ] }
41
- id = @impl.lstat( 14, :a, :b )
42
- assert_equal 14, id
43
- assert_equal 1, @assistant.mock_count( :lstat )
44
- assert_equal 1, @driver.mock_count( :send_data )
45
- assert_equal [
46
- [ Net::SFTP::Protocol::Constants::FXP_LSTAT, [ :a, :b ]] ], @sent_data
47
- end
48
-
49
- def test_fstat_flags
50
- @assistant.mock_handle( :fstat ) { |*a| [ a[0], a[1..-1] ] }
51
- id = @impl.fstat( 14, :a, :b )
52
- assert_equal 14, id
53
- assert_equal 1, @assistant.mock_count( :fstat )
54
- assert_equal 1, @driver.mock_count( :send_data )
55
- assert_equal [
56
- [ Net::SFTP::Protocol::Constants::FXP_FSTAT, [ :a, :b ]] ], @sent_data
57
- end
58
-
59
- def test_rename_flags
60
- @assistant.mock_handle( :rename ) { |*a| [ a[0], a[1..-1] ] }
61
- id = @impl.rename( 14, :a, :b, :c )
62
- assert_equal 14, id
63
- assert_equal 1, @assistant.mock_count( :rename )
64
- assert_equal 1, @driver.mock_count( :send_data )
65
- assert_equal [
66
- [ Net::SFTP::Protocol::Constants::FXP_RENAME, [ :a, :b, :c ]] ],
67
- @sent_data
68
- end
69
-
70
- # overrides the v1 implementation of the test
71
- def test_do_name_with_callback
72
- buffer = Net::SSH::Util::ReaderBuffer.new( "\0\0\0\1\0\0\0\2" +
73
- "\0\0\0\1a\0\0\0\0" +
74
- "\0\0\0\1c\0\0\0\0" )
75
- called = false
76
- @impl.on_name do |d,i,names|
77
- called = true
78
- assert_equal 1, i
79
- assert_equal 2, names.length
80
- assert_equal "a", names.first.filename
81
- assert_nil names.first.longname
82
- assert_equal 0, names.first.attributes
83
- assert_equal "c", names.last.filename
84
- assert_nil names.last.longname
85
- assert_equal 0, names.last.attributes
86
- end
87
- @impl.do_name nil, buffer
88
- assert called
89
- end
90
-
91
- end