rubysl-net-ftp 1.0.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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +8 -0
- data/Gemfile +4 -0
- data/LICENSE +25 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/lib/net/ftp.rb +1 -0
- data/lib/net/ftptls.rb +1 -0
- data/lib/rubysl/net/ftp.rb +2 -0
- data/lib/rubysl/net/ftp/ftp.rb +926 -0
- data/lib/rubysl/net/ftp/version.rb +7 -0
- data/rubysl-net-ftp.gemspec +23 -0
- data/spec/FTPError_spec.rb +7 -0
- data/spec/FTPPermError_spec.rb +11 -0
- data/spec/FTPProtoError_spec.rb +11 -0
- data/spec/FTPReplyError_spec.rb +11 -0
- data/spec/FTPTempError_spec.rb +11 -0
- data/spec/abort_spec.rb +61 -0
- data/spec/acct_spec.rb +57 -0
- data/spec/binary_spec.rb +23 -0
- data/spec/chdir_spec.rb +100 -0
- data/spec/close_spec.rb +29 -0
- data/spec/closed_spec.rb +20 -0
- data/spec/connect_spec.rb +48 -0
- data/spec/debug_mode_spec.rb +22 -0
- data/spec/delete_spec.rb +58 -0
- data/spec/dir_spec.rb +7 -0
- data/spec/fixtures/putbinaryfile +3 -0
- data/spec/fixtures/puttextfile +3 -0
- data/spec/fixtures/server.rb +265 -0
- data/spec/get_spec.rb +20 -0
- data/spec/getbinaryfile_spec.rb +7 -0
- data/spec/getdir_spec.rb +6 -0
- data/spec/gettextfile_spec.rb +7 -0
- data/spec/help_spec.rb +65 -0
- data/spec/initialize_spec.rb +86 -0
- data/spec/last_response_code_spec.rb +7 -0
- data/spec/last_response_spec.rb +24 -0
- data/spec/lastresp_spec.rb +7 -0
- data/spec/list_spec.rb +7 -0
- data/spec/login_spec.rb +215 -0
- data/spec/ls_spec.rb +7 -0
- data/spec/mdtm_spec.rb +37 -0
- data/spec/mkdir_spec.rb +60 -0
- data/spec/mtime_spec.rb +49 -0
- data/spec/nlst_spec.rb +120 -0
- data/spec/noop_spec.rb +37 -0
- data/spec/open_spec.rb +54 -0
- data/spec/passive_spec.rb +23 -0
- data/spec/put_spec.rb +20 -0
- data/spec/putbinaryfile_spec.rb +7 -0
- data/spec/puttextfile_spec.rb +7 -0
- data/spec/pwd_spec.rb +52 -0
- data/spec/quit_spec.rb +32 -0
- data/spec/rename_spec.rb +93 -0
- data/spec/resume_spec.rb +22 -0
- data/spec/retrbinary_spec.rb +29 -0
- data/spec/retrlines_spec.rb +33 -0
- data/spec/return_code_spec.rb +23 -0
- data/spec/rmdir_spec.rb +57 -0
- data/spec/sendcmd_spec.rb +53 -0
- data/spec/set_socket_spec.rb +7 -0
- data/spec/shared/getbinaryfile.rb +179 -0
- data/spec/shared/gettextfile.rb +129 -0
- data/spec/shared/last_response_code.rb +25 -0
- data/spec/shared/list.rb +133 -0
- data/spec/shared/putbinaryfile.rb +232 -0
- data/spec/shared/puttextfile.rb +149 -0
- data/spec/shared/pwd.rb +3 -0
- data/spec/site_spec.rb +52 -0
- data/spec/size_spec.rb +47 -0
- data/spec/status_spec.rb +62 -0
- data/spec/storbinary_spec.rb +47 -0
- data/spec/storlines_spec.rb +42 -0
- data/spec/system_spec.rb +47 -0
- data/spec/voidcmd_spec.rb +53 -0
- data/spec/welcome_spec.rb +24 -0
- metadata +243 -0
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
|
3
|
+
describe "Net::FTP#initialize" do
|
4
|
+
before(:each) do
|
5
|
+
@ftp = Net::FTP.allocate
|
6
|
+
@ftp.stub!(:connect)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "is private" do
|
10
|
+
Net::FTP.should have_private_instance_method(:initialize)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "sets self into binary mode" do
|
14
|
+
@ftp.binary.should be_nil
|
15
|
+
@ftp.send(:initialize)
|
16
|
+
@ftp.binary.should be_true
|
17
|
+
end
|
18
|
+
|
19
|
+
it "sets self into active mode" do
|
20
|
+
@ftp.passive.should be_nil
|
21
|
+
@ftp.send(:initialize)
|
22
|
+
@ftp.passive.should be_false
|
23
|
+
end
|
24
|
+
|
25
|
+
it "sets self into non-debug mode" do
|
26
|
+
@ftp.debug_mode.should be_nil
|
27
|
+
@ftp.send(:initialize)
|
28
|
+
@ftp.debug_mode.should be_false
|
29
|
+
end
|
30
|
+
|
31
|
+
it "sets self to not resume file uploads/downloads" do
|
32
|
+
@ftp.resume.should be_nil
|
33
|
+
@ftp.send(:initialize)
|
34
|
+
@ftp.resume.should be_false
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "when passed no arguments" do
|
38
|
+
it "does not try to connect" do
|
39
|
+
@ftp.should_not_receive(:connect)
|
40
|
+
@ftp.send(:initialize)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "when passed host" do
|
45
|
+
it "tries to connect to the passed host" do
|
46
|
+
@ftp.should_receive(:connect).with("localhost")
|
47
|
+
@ftp.send(:initialize, "localhost")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "when passed host, user" do
|
52
|
+
it "tries to connect to the passed host" do
|
53
|
+
@ftp.should_receive(:connect).with("localhost")
|
54
|
+
@ftp.send(:initialize, "localhost")
|
55
|
+
end
|
56
|
+
|
57
|
+
it "tries to login with the passed username" do
|
58
|
+
@ftp.should_receive(:login).with("rubyspec", nil, nil)
|
59
|
+
@ftp.send(:initialize, "localhost", "rubyspec")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "when passed host, user, password" do
|
64
|
+
it "tries to connect to the passed host" do
|
65
|
+
@ftp.should_receive(:connect).with("localhost")
|
66
|
+
@ftp.send(:initialize, "localhost")
|
67
|
+
end
|
68
|
+
|
69
|
+
it "tries to login with the passed username and password" do
|
70
|
+
@ftp.should_receive(:login).with("rubyspec", "rocks", nil)
|
71
|
+
@ftp.send(:initialize, "localhost", "rubyspec", "rocks")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "when passed host, user" do
|
76
|
+
it "tries to connect to the passed host" do
|
77
|
+
@ftp.should_receive(:connect).with("localhost")
|
78
|
+
@ftp.send(:initialize, "localhost")
|
79
|
+
end
|
80
|
+
|
81
|
+
it "tries to login with the passed username, password and account" do
|
82
|
+
@ftp.should_receive(:login).with("rubyspec", "rocks", "account")
|
83
|
+
@ftp.send(:initialize, "localhost", "rubyspec", "rocks", "account")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
require File.expand_path('../fixtures/server', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::FTP#last_response" do
|
5
|
+
before(:each) do
|
6
|
+
@server = NetFTPSpecs::DummyFTP.new
|
7
|
+
@server.serve_once
|
8
|
+
|
9
|
+
@ftp = Net::FTP.new
|
10
|
+
@ftp.connect("localhost", 9921)
|
11
|
+
end
|
12
|
+
|
13
|
+
after(:each) do
|
14
|
+
@ftp.quit rescue nil
|
15
|
+
@ftp.close
|
16
|
+
@server.stop
|
17
|
+
end
|
18
|
+
|
19
|
+
it "returns the last response" do
|
20
|
+
@ftp.last_response.should == "220 Dummy FTP Server ready!\n"
|
21
|
+
@ftp.help
|
22
|
+
@ftp.last_response.should == "211 System status, or system help reply. (HELP)\n"
|
23
|
+
end
|
24
|
+
end
|
data/spec/list_spec.rb
ADDED
data/spec/login_spec.rb
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
require File.expand_path('../fixtures/server', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::FTP#login" do
|
5
|
+
before(:each) do
|
6
|
+
@server = NetFTPSpecs::DummyFTP.new
|
7
|
+
@server.serve_once
|
8
|
+
|
9
|
+
@ftp = Net::FTP.new
|
10
|
+
@ftp.connect("localhost", 9921)
|
11
|
+
end
|
12
|
+
|
13
|
+
after(:each) do
|
14
|
+
@ftp.quit rescue nil
|
15
|
+
@ftp.close
|
16
|
+
@server.stop
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "when passed no arguments" do
|
20
|
+
it "sends the USER command with 'anonymous' as name to the server" do
|
21
|
+
@ftp.login
|
22
|
+
@server.login_user.should == "anonymous"
|
23
|
+
end
|
24
|
+
|
25
|
+
ruby_version_is "" ... "1.9" do
|
26
|
+
it "sends the current username + hostname as a password when required" do
|
27
|
+
passhost = Socket.gethostname
|
28
|
+
if not passhost.index(".")
|
29
|
+
passhost = Socket.gethostbyname(passhost)[0]
|
30
|
+
end
|
31
|
+
pass = ENV["USER"] + "@" + passhost
|
32
|
+
@server.should_receive(:user).and_respond("331 User name okay, need password.")
|
33
|
+
@ftp.login
|
34
|
+
@server.login_pass.should == pass
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
ruby_version_is "1.9" do
|
39
|
+
it "sends 'anonymous@' as a password when required" do
|
40
|
+
@server.should_receive(:user).and_respond("331 User name okay, need password.")
|
41
|
+
@ftp.login
|
42
|
+
@server.login_pass.should == "anonymous@"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
ruby_bug "http://redmine.ruby-lang.org/issues/show/385", "1.8.7" do
|
47
|
+
it "raises a Net::FTPReplyError when the server requests an account" do
|
48
|
+
@server.should_receive(:user).and_respond("331 User name okay, need password.")
|
49
|
+
@server.should_receive(:pass).and_respond("332 Need account for login.")
|
50
|
+
lambda { @ftp.login }.should raise_error(Net::FTPReplyError)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "when passed name" do
|
56
|
+
it "sends the USER command with the passed name to the server" do
|
57
|
+
@ftp.login("rubyspec")
|
58
|
+
@server.login_user.should == "rubyspec"
|
59
|
+
end
|
60
|
+
|
61
|
+
ruby_bug "http://redmine.ruby-lang.org/issues/show/385", "1.8.7" do
|
62
|
+
it "raises a Net::FTPReplyError when the server requests a password, but none was given" do
|
63
|
+
@server.should_receive(:user).and_respond("331 User name okay, need password.")
|
64
|
+
lambda { @ftp.login("rubyspec") }.should raise_error(Net::FTPReplyError)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "raises a Net::FTPReplyError when the server requests an account, but none was given" do
|
68
|
+
@server.should_receive(:user).and_respond("331 User name okay, need password.")
|
69
|
+
@server.should_receive(:pass).and_respond("332 Need account for login.")
|
70
|
+
lambda { @ftp.login("rubyspec") }.should raise_error(Net::FTPReplyError)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe "when passed name, password" do
|
76
|
+
it "sends the USER command with the passed name to the server" do
|
77
|
+
@ftp.login("rubyspec", "rocks")
|
78
|
+
@server.login_user.should == "rubyspec"
|
79
|
+
end
|
80
|
+
|
81
|
+
it "sends the passed password when required" do
|
82
|
+
@server.should_receive(:user).and_respond("331 User name okay, need password.")
|
83
|
+
@ftp.login("rubyspec", "rocks")
|
84
|
+
@server.login_pass.should == "rocks"
|
85
|
+
end
|
86
|
+
|
87
|
+
ruby_bug "http://redmine.ruby-lang.org/issues/show/385", "1.8.7" do
|
88
|
+
it "raises a Net::FTPReplyError when the server requests an account" do
|
89
|
+
@server.should_receive(:user).and_respond("331 User name okay, need password.")
|
90
|
+
@server.should_receive(:pass).and_respond("332 Need account for login.")
|
91
|
+
lambda { @ftp.login("rubyspec", "rocks") }.should raise_error(Net::FTPReplyError)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "when passed name, password, account" do
|
97
|
+
it "sends the USER command with the passed name to the server" do
|
98
|
+
@ftp.login("rubyspec", "rocks", "account")
|
99
|
+
@server.login_user.should == "rubyspec"
|
100
|
+
end
|
101
|
+
|
102
|
+
it "sends the passed password when required" do
|
103
|
+
@server.should_receive(:user).and_respond("331 User name okay, need password.")
|
104
|
+
@ftp.login("rubyspec", "rocks", "account")
|
105
|
+
@server.login_pass.should == "rocks"
|
106
|
+
end
|
107
|
+
|
108
|
+
it "sends the passed account when required" do
|
109
|
+
@server.should_receive(:user).and_respond("331 User name okay, need password.")
|
110
|
+
@server.should_receive(:pass).and_respond("332 Need account for login.")
|
111
|
+
@ftp.login("rubyspec", "rocks", "account")
|
112
|
+
@server.login_acct.should == "account"
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe "when the USER command fails" do
|
117
|
+
it "raises a Net::FTPPermError when the response code is 500" do
|
118
|
+
@server.should_receive(:user).and_respond("500 Syntax error, command unrecognized.")
|
119
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError)
|
120
|
+
end
|
121
|
+
|
122
|
+
it "raises a Net::FTPPermError when the response code is 501" do
|
123
|
+
@server.should_receive(:user).and_respond("501 Syntax error in parameters or arguments.")
|
124
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError)
|
125
|
+
end
|
126
|
+
|
127
|
+
it "raises a Net::FTPPermError when the response code is 502" do
|
128
|
+
@server.should_receive(:user).and_respond("502 Command not implemented.")
|
129
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError)
|
130
|
+
end
|
131
|
+
|
132
|
+
it "raises a Net::FTPTempError when the response code is 421" do
|
133
|
+
@server.should_receive(:user).and_respond("421 Service not available, closing control connection.")
|
134
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPTempError)
|
135
|
+
end
|
136
|
+
|
137
|
+
it "raises a Net::FTPPermError when the response code is 530" do
|
138
|
+
@server.should_receive(:user).and_respond("530 Not logged in.")
|
139
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "when the PASS command fails" do
|
144
|
+
before(:each) do
|
145
|
+
@server.should_receive(:user).and_respond("331 User name okay, need password.")
|
146
|
+
end
|
147
|
+
|
148
|
+
it "does not raise an Error when the response code is 202" do
|
149
|
+
@server.should_receive(:pass).and_respond("202 Command not implemented, superfluous at this site.")
|
150
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should_not raise_error
|
151
|
+
end
|
152
|
+
|
153
|
+
it "raises a Net::FTPPermError when the response code is 500" do
|
154
|
+
@server.should_receive(:pass).and_respond("500 Syntax error, command unrecognized.")
|
155
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError)
|
156
|
+
end
|
157
|
+
|
158
|
+
it "raises a Net::FTPPermError when the response code is 501" do
|
159
|
+
@server.should_receive(:pass).and_respond("501 Syntax error in parameters or arguments.")
|
160
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError)
|
161
|
+
end
|
162
|
+
|
163
|
+
it "raises a Net::FTPPermError when the response code is 502" do
|
164
|
+
@server.should_receive(:pass).and_respond("502 Command not implemented.")
|
165
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError)
|
166
|
+
end
|
167
|
+
|
168
|
+
it "raises a Net::FTPTempError when the response code is 421" do
|
169
|
+
@server.should_receive(:pass).and_respond("421 Service not available, closing control connection.")
|
170
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPTempError)
|
171
|
+
end
|
172
|
+
|
173
|
+
it "raises a Net::FTPPermError when the response code is 530" do
|
174
|
+
@server.should_receive(:pass).and_respond("530 Not logged in.")
|
175
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
describe "when the ACCT command fails" do
|
180
|
+
before(:each) do
|
181
|
+
@server.should_receive(:user).and_respond("331 User name okay, need password.")
|
182
|
+
@server.should_receive(:pass).and_respond("332 Need account for login.")
|
183
|
+
end
|
184
|
+
|
185
|
+
it "does not raise an Error when the response code is 202" do
|
186
|
+
@server.should_receive(:acct).and_respond("202 Command not implemented, superfluous at this site.")
|
187
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should_not raise_error
|
188
|
+
end
|
189
|
+
|
190
|
+
it "raises a Net::FTPPermError when the response code is 500" do
|
191
|
+
@server.should_receive(:acct).and_respond("500 Syntax error, command unrecognized.")
|
192
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError)
|
193
|
+
end
|
194
|
+
|
195
|
+
it "raises a Net::FTPPermError when the response code is 501" do
|
196
|
+
@server.should_receive(:acct).and_respond("501 Syntax error in parameters or arguments.")
|
197
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError)
|
198
|
+
end
|
199
|
+
|
200
|
+
it "raises a Net::FTPPermError when the response code is 502" do
|
201
|
+
@server.should_receive(:acct).and_respond("502 Command not implemented.")
|
202
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError)
|
203
|
+
end
|
204
|
+
|
205
|
+
it "raises a Net::FTPTempError when the response code is 421" do
|
206
|
+
@server.should_receive(:acct).and_respond("421 Service not available, closing control connection.")
|
207
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPTempError)
|
208
|
+
end
|
209
|
+
|
210
|
+
it "raises a Net::FTPPermError when the response code is 530" do
|
211
|
+
@server.should_receive(:acct).and_respond("530 Not logged in.")
|
212
|
+
lambda { @ftp.login("rubyspec", "rocks", "account") }.should raise_error(Net::FTPPermError)
|
213
|
+
end
|
214
|
+
end
|
215
|
+
end
|
data/spec/ls_spec.rb
ADDED
data/spec/mdtm_spec.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
require File.expand_path('../fixtures/server', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::FTP#mdtm" do
|
5
|
+
before(:each) do
|
6
|
+
@server = NetFTPSpecs::DummyFTP.new
|
7
|
+
@server.serve_once
|
8
|
+
|
9
|
+
@ftp = Net::FTP.new
|
10
|
+
@ftp.connect("localhost", 9921)
|
11
|
+
end
|
12
|
+
|
13
|
+
after(:each) do
|
14
|
+
@ftp.quit rescue nil
|
15
|
+
@ftp.close
|
16
|
+
@server.stop
|
17
|
+
end
|
18
|
+
|
19
|
+
it "sends the MDTM with the passed filename command to the server" do
|
20
|
+
@ftp.mdtm("test.file")
|
21
|
+
@ftp.last_response.should == "213 19980705132316\n"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns the last modification time of the passed file" do
|
25
|
+
@ftp.mdtm("test.file").should == "19980705132316"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "raises a Net::FTPPermError when the response code is 550" do
|
29
|
+
@server.should_receive(:mdtm).and_respond("550 Requested action not taken.")
|
30
|
+
lambda { @ftp.mdtm("test.file") }.should raise_error(Net::FTPPermError)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "raises a Net::FTPTempError when the response code is 421" do
|
34
|
+
@server.should_receive(:mdtm).and_respond("421 Service not available, closing control connection.")
|
35
|
+
lambda { @ftp.mdtm("test.file") }.should raise_error(Net::FTPTempError)
|
36
|
+
end
|
37
|
+
end
|
data/spec/mkdir_spec.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
require File.expand_path('../fixtures/server', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::FTP#mkdir" do
|
5
|
+
before(:each) do
|
6
|
+
@server = NetFTPSpecs::DummyFTP.new
|
7
|
+
@server.serve_once
|
8
|
+
|
9
|
+
@ftp = Net::FTP.new
|
10
|
+
@ftp.connect("localhost", 9921)
|
11
|
+
end
|
12
|
+
|
13
|
+
after(:each) do
|
14
|
+
@ftp.quit rescue nil
|
15
|
+
@ftp.close
|
16
|
+
@server.stop
|
17
|
+
end
|
18
|
+
|
19
|
+
it "sends the MKD command with the passed pathname to the server" do
|
20
|
+
@ftp.mkdir("test.folder")
|
21
|
+
@ftp.last_response.should == %{257 "test.folder" created.\n}
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns the path to the newly created directory" do
|
25
|
+
@ftp.mkdir("test.folder").should == "test.folder"
|
26
|
+
@ftp.mkdir("/absolute/path/to/test.folder").should == "/absolute/path/to/test.folder"
|
27
|
+
@ftp.mkdir("relative/path/to/test.folder").should == "relative/path/to/test.folder"
|
28
|
+
@ftp.mkdir('/usr/dm/foo"bar').should == '/usr/dm/foo"bar'
|
29
|
+
end
|
30
|
+
|
31
|
+
it "raises a Net::FTPPermError when the response code is 500" do
|
32
|
+
@server.should_receive(:mkd).and_respond("500 Syntax error, command unrecognized.")
|
33
|
+
lambda { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "raises a Net::FTPPermError when the response code is 501" do
|
37
|
+
@server.should_receive(:mkd).and_respond("501 Syntax error in parameters or arguments.")
|
38
|
+
lambda { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "raises a Net::FTPPermError when the response code is 502" do
|
42
|
+
@server.should_receive(:mkd).and_respond("502 Command not implemented.")
|
43
|
+
lambda { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "raises a Net::FTPTempError when the response code is 421" do
|
47
|
+
@server.should_receive(:mkd).and_respond("421 Service not available, closing control connection.")
|
48
|
+
lambda { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPTempError)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "raises a Net::FTPPermError when the response code is 530" do
|
52
|
+
@server.should_receive(:mkd).and_respond("530 Not logged in.")
|
53
|
+
lambda { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "raises a Net::FTPPermError when the response code is 550" do
|
57
|
+
@server.should_receive(:mkd).and_respond("550 Requested action not taken.")
|
58
|
+
lambda { @ftp.mkdir("test.folder") }.should raise_error(Net::FTPPermError)
|
59
|
+
end
|
60
|
+
end
|