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
data/spec/mtime_spec.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
require File.expand_path('../fixtures/server', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::FTP#mtime" 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.mtime("test.file")
|
21
|
+
@ftp.last_response.should == "213 19980705132316\n"
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "when passed filename" do
|
25
|
+
it "returns the last modification time of the passed file as a Time object in the local time" do
|
26
|
+
@ftp.mtime("test.file").should == Time.gm("1998", "07", "05", "13", "23", "16")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "when passed filename, local_time" do
|
31
|
+
it "returns the last modification time as a Time object in UTC when local_time is true" do
|
32
|
+
@ftp.mtime("test.file", true).should == Time.local("1998", "07", "05", "13", "23", "16")
|
33
|
+
end
|
34
|
+
|
35
|
+
it "returns the last modification time as a Time object in the local time when local_time is false" do
|
36
|
+
@ftp.mtime("test.file", false).should == Time.gm("1998", "07", "05", "13", "23", "16")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it "raises a Net::FTPPermError when the response code is 550" do
|
41
|
+
@server.should_receive(:mdtm).and_respond("550 Requested action not taken.")
|
42
|
+
lambda { @ftp.mtime("test.file") }.should raise_error(Net::FTPPermError)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "raises a Net::FTPTempError when the response code is 421" do
|
46
|
+
@server.should_receive(:mdtm).and_respond("421 Service not available, closing control connection.")
|
47
|
+
lambda { @ftp.mtime("test.file") }.should raise_error(Net::FTPTempError)
|
48
|
+
end
|
49
|
+
end
|
data/spec/nlst_spec.rb
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
require File.expand_path('../fixtures/server', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::FTP#nlst" do
|
5
|
+
before(:each) do
|
6
|
+
@server = NetFTPSpecs::DummyFTP.new
|
7
|
+
@server.serve_once
|
8
|
+
|
9
|
+
@ftp = Net::FTP.new
|
10
|
+
@ftp.passive = false
|
11
|
+
@ftp.connect("localhost", 9921)
|
12
|
+
end
|
13
|
+
|
14
|
+
after(:each) do
|
15
|
+
@ftp.quit rescue nil
|
16
|
+
@ftp.close
|
17
|
+
@server.stop
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "when passed no arguments" do
|
21
|
+
it "returns an Array containing a list of files in the current dir" do
|
22
|
+
@ftp.nlst.should == ["last_response_code.rb", "list.rb", "pwd.rb"]
|
23
|
+
@ftp.last_response.should == "226 transfer complete (NLST)\n"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "when passed dir" do
|
28
|
+
it "returns an Array containing a list of files in the passed dir" do
|
29
|
+
@ftp.nlst("test.folder").should == ["last_response_code.rb", "list.rb", "pwd.rb"]
|
30
|
+
@ftp.last_response.should == "226 transfer complete (NLST test.folder)\n"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "when the NLST command fails" do
|
35
|
+
it "raises a Net::FTPTempError when the response code is 450" do
|
36
|
+
@server.should_receive(:nlst).and_respond("450 Requested file action not taken..")
|
37
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPTempError)
|
38
|
+
end
|
39
|
+
|
40
|
+
it "raises a Net::FTPPermError when the response code is 500" do
|
41
|
+
@server.should_receive(:nlst).and_respond("500 Syntax error, command unrecognized.")
|
42
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPPermError)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "raises a Net::FTPPermError when the response code is 501" do
|
46
|
+
@server.should_receive(:nlst).and_respond("501 Syntax error, command unrecognized.")
|
47
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPPermError)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "raises a Net::FTPPermError when the response code is 502" do
|
51
|
+
@server.should_receive(:nlst).and_respond("502 Command not implemented.")
|
52
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPPermError)
|
53
|
+
end
|
54
|
+
|
55
|
+
it "raises a Net::FTPTempError when the response code is 421" do
|
56
|
+
@server.should_receive(:nlst).and_respond("421 Service not available, closing control connection.")
|
57
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPTempError)
|
58
|
+
end
|
59
|
+
|
60
|
+
it "raises a Net::FTPPermError when the response code is 530" do
|
61
|
+
@server.should_receive(:nlst).and_respond("530 Not logged in.")
|
62
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPPermError)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
ruby_version_is "" ... "1.9" do
|
67
|
+
describe "when switching type fails" do
|
68
|
+
it "raises a Net::FTPPermError when the response code is 500" do
|
69
|
+
@server.should_receive(:type).and_respond("500 Syntax error, command unrecognized.")
|
70
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPPermError)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "raises a Net::FTPPermError when the response code is 501" do
|
74
|
+
@server.should_receive(:type).and_respond("501 Syntax error in parameters or arguments.")
|
75
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPPermError)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "raises a Net::FTPPermError when the response code is 504" do
|
79
|
+
@server.should_receive(:type).and_respond("504 Command not implemented for that parameter.")
|
80
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPPermError)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "raises a Net::FTPTempError when the response code is 421" do
|
84
|
+
@server.should_receive(:type).and_respond("421 Service not available, closing control connection.")
|
85
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPTempError)
|
86
|
+
end
|
87
|
+
|
88
|
+
it "raises a Net::FTPPermError when the response code is 530" do
|
89
|
+
@server.should_receive(:type).and_respond("530 Not logged in.")
|
90
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPPermError)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe "when opening the data port fails" do
|
96
|
+
it "raises a Net::FTPPermError when the response code is 500" do
|
97
|
+
@server.should_receive(:eprt).and_respond("500 Syntax error, command unrecognized.")
|
98
|
+
@server.should_receive(:port).and_respond("500 Syntax error, command unrecognized.")
|
99
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPPermError)
|
100
|
+
end
|
101
|
+
|
102
|
+
it "raises a Net::FTPPermError when the response code is 501" do
|
103
|
+
@server.should_receive(:eprt).and_respond("501 Syntax error in parameters or arguments.")
|
104
|
+
@server.should_receive(:port).and_respond("501 Syntax error in parameters or arguments.")
|
105
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPPermError)
|
106
|
+
end
|
107
|
+
|
108
|
+
it "raises a Net::FTPTempError when the response code is 421" do
|
109
|
+
@server.should_receive(:eprt).and_respond("421 Service not available, closing control connection.")
|
110
|
+
@server.should_receive(:port).and_respond("421 Service not available, closing control connection.")
|
111
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPTempError)
|
112
|
+
end
|
113
|
+
|
114
|
+
it "raises a Net::FTPPermError when the response code is 530" do
|
115
|
+
@server.should_receive(:eprt).and_respond("530 Not logged in.")
|
116
|
+
@server.should_receive(:port).and_respond("530 Not logged in.")
|
117
|
+
lambda { @ftp.nlst }.should raise_error(Net::FTPPermError)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
data/spec/noop_spec.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
require File.expand_path('../fixtures/server', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::FTP#noop" 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 NOOP command to the server" do
|
20
|
+
@ftp.noop
|
21
|
+
@ftp.last_response.should == "200 Command okay. (NOOP)\n"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns nil" do
|
25
|
+
@ftp.noop.should be_nil
|
26
|
+
end
|
27
|
+
|
28
|
+
it "raises a Net::FTPPermError when the response code is 500" do
|
29
|
+
@server.should_receive(:noop).and_respond("500 Syntax error, command unrecognized.")
|
30
|
+
lambda { @ftp.noop }.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(:noop).and_respond("421 Service not available, closing control connection.")
|
35
|
+
lambda { @ftp.noop }.should raise_error(Net::FTPTempError)
|
36
|
+
end
|
37
|
+
end
|
data/spec/open_spec.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
|
3
|
+
describe "Net::FTP.open" do
|
4
|
+
before(:each) do
|
5
|
+
@ftp = mock("Net::FTP instance")
|
6
|
+
Net::FTP.stub!(:new).and_return(@ftp)
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "when passed no block" do
|
10
|
+
it "returns a new Net::FTP instance" do
|
11
|
+
Net::FTP.open("localhost").should equal(@ftp)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "passes the passed arguments down to Net::FTP.new" do
|
15
|
+
Net::FTP.should_receive(:new).with("localhost", "user", "password", "account")
|
16
|
+
Net::FTP.open("localhost", "user", "password", "account")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "when passed a block" do
|
21
|
+
before(:each) do
|
22
|
+
@ftp.stub!(:close)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "yields a new Net::FTP instance to the passed block" do
|
26
|
+
yielded = false
|
27
|
+
Net::FTP.open("localhost") do |ftp|
|
28
|
+
yielded = true
|
29
|
+
ftp.should equal(@ftp)
|
30
|
+
end
|
31
|
+
yielded.should be_true
|
32
|
+
end
|
33
|
+
|
34
|
+
it "closes the Net::FTP instance after yielding" do
|
35
|
+
Net::FTP.open("localhost") do |ftp|
|
36
|
+
ftp.should_receive(:close)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it "closes the Net::FTP instance even if an exception is raised while yielding" do
|
41
|
+
begin
|
42
|
+
Net::FTP.open("localhost") do |ftp|
|
43
|
+
ftp.should_receive(:close)
|
44
|
+
raise ArgumentError, "some exception"
|
45
|
+
end
|
46
|
+
rescue ArgumentError
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it "returns the block's return value" do
|
51
|
+
Net::FTP.open("localhost") { :test }.should == :test
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
|
3
|
+
describe "Net::FTP#passive" do
|
4
|
+
it "returns true when self is in passive mode" do
|
5
|
+
ftp = Net::FTP.new
|
6
|
+
ftp.passive.should be_false
|
7
|
+
|
8
|
+
ftp.passive = true
|
9
|
+
ftp.passive.should be_true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "Net::FTP#passive=" do
|
14
|
+
it "sets self to passive mode when passed true" do
|
15
|
+
ftp = Net::FTP.new
|
16
|
+
|
17
|
+
ftp.passive = true
|
18
|
+
ftp.passive.should be_true
|
19
|
+
|
20
|
+
ftp.passive = false
|
21
|
+
ftp.passive.should be_false
|
22
|
+
end
|
23
|
+
end
|
data/spec/put_spec.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
require File.expand_path('../fixtures/server', __FILE__)
|
3
|
+
require File.expand_path('../shared/puttextfile', __FILE__)
|
4
|
+
require File.expand_path('../shared/putbinaryfile', __FILE__)
|
5
|
+
|
6
|
+
describe "Net::FTP#put (binary mode)" do
|
7
|
+
before(:each) do
|
8
|
+
@binary_mode = true
|
9
|
+
end
|
10
|
+
|
11
|
+
it_behaves_like :net_ftp_putbinaryfile, :put
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "Net::FTP#put (text mode)" do
|
15
|
+
before(:each) do
|
16
|
+
@binary_mode = false
|
17
|
+
end
|
18
|
+
|
19
|
+
it_behaves_like :net_ftp_puttextfile, :put
|
20
|
+
end
|
data/spec/pwd_spec.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
require File.expand_path('../fixtures/server', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::FTP#pwd" 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 PWD command to the server" do
|
20
|
+
@ftp.pwd
|
21
|
+
@ftp.last_response.should == "257 \"/some/dir/\" - current directory\n"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns the current directory" do
|
25
|
+
@ftp.pwd.should == "/some/dir/"
|
26
|
+
end
|
27
|
+
|
28
|
+
it "raises a Net::FTPPermError when the response code is 500" do
|
29
|
+
@server.should_receive(:pwd).and_respond("500 Syntax error, command unrecognized.")
|
30
|
+
lambda { @ftp.pwd }.should raise_error(Net::FTPPermError)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "raises a Net::FTPPermError when the response code is 501" do
|
34
|
+
@server.should_receive(:pwd).and_respond("501 Syntax error in parameters or arguments.")
|
35
|
+
lambda { @ftp.pwd }.should raise_error(Net::FTPPermError)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "raises a Net::FTPPermError when the response code is 502" do
|
39
|
+
@server.should_receive(:pwd).and_respond("502 Command not implemented.")
|
40
|
+
lambda { @ftp.pwd }.should raise_error(Net::FTPPermError)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "raises a Net::FTPTempError when the response code is 421" do
|
44
|
+
@server.should_receive(:pwd).and_respond("421 Service not available, closing control connection.")
|
45
|
+
lambda { @ftp.pwd }.should raise_error(Net::FTPTempError)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "raises a Net::FTPPermError when the response code is 550" do
|
49
|
+
@server.should_receive(:pwd).and_respond("550 Requested action not taken.")
|
50
|
+
lambda { @ftp.pwd }.should raise_error(Net::FTPPermError)
|
51
|
+
end
|
52
|
+
end
|
data/spec/quit_spec.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
require File.expand_path('../fixtures/server', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::FTP#quit" 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 QUIT command to the server" do
|
20
|
+
@ftp.quit
|
21
|
+
@ftp.last_response.should == "221 OK, bye\n"
|
22
|
+
end
|
23
|
+
|
24
|
+
it "does not close the socket automagically" do
|
25
|
+
@ftp.quit
|
26
|
+
@ftp.closed?.should be_false
|
27
|
+
end
|
28
|
+
|
29
|
+
it "returns nil" do
|
30
|
+
@ftp.quit.should be_nil
|
31
|
+
end
|
32
|
+
end
|
data/spec/rename_spec.rb
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'net/ftp'
|
2
|
+
require File.expand_path('../fixtures/server', __FILE__)
|
3
|
+
|
4
|
+
describe "Net::FTP#rename" 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 from_name, to_name" do
|
20
|
+
it "sends the RNFR command with the passed from_name and the RNTO command with the passed to_name to the server" do
|
21
|
+
@ftp.rename("from.file", "to.file")
|
22
|
+
@ftp.last_response.should == "250 Requested file action okay, completed. (Renamed from.file to to.file)\n"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "returns something" do
|
26
|
+
@ftp.rename("from.file", "to.file").should be_nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "when the RNFR command fails" do
|
31
|
+
it "raises a Net::FTPTempError when the response code is 450" do
|
32
|
+
@server.should_receive(:rnfr).and_respond("450 Requested file action not taken.")
|
33
|
+
lambda { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPTempError)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "raises a Net::FTPPermError when the response code is 550" do
|
37
|
+
@server.should_receive(:rnfr).and_respond("550 Requested action not taken.")
|
38
|
+
lambda { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "raises a Net::FTPPermError when the response code is 501" do
|
42
|
+
@server.should_receive(:rnfr).and_respond("501 Syntax error in parameters or arguments.")
|
43
|
+
lambda { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "raises a Net::FTPPermError when the response code is 502" do
|
47
|
+
@server.should_receive(:rnfr).and_respond("502 Command not implemented.")
|
48
|
+
lambda { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "raises a Net::FTPTempError when the response code is 421" do
|
52
|
+
@server.should_receive(:rnfr).and_respond("421 Service not available, closing control connection.")
|
53
|
+
lambda { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPTempError)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "raises a Net::FTPPermError when the response code is 530" do
|
57
|
+
@server.should_receive(:rnfr).and_respond("530 Not logged in.")
|
58
|
+
lambda { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "when the RNTO command fails" do
|
63
|
+
it "raises a Net::FTPPermError when the response code is 532" do
|
64
|
+
@server.should_receive(:rnfr).and_respond("532 Need account for storing files.")
|
65
|
+
lambda { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "raises a Net::FTPPermError when the response code is 553" do
|
69
|
+
@server.should_receive(:rnto).and_respond("553 Requested action not taken.")
|
70
|
+
lambda { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "raises a Net::FTPPermError when the response code is 501" do
|
74
|
+
@server.should_receive(:rnto).and_respond("501 Syntax error in parameters or arguments.")
|
75
|
+
lambda { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "raises a Net::FTPPermError when the response code is 502" do
|
79
|
+
@server.should_receive(:rnto).and_respond("502 Command not implemented.")
|
80
|
+
lambda { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError)
|
81
|
+
end
|
82
|
+
|
83
|
+
it "raises a Net::FTPTempError when the response code is 421" do
|
84
|
+
@server.should_receive(:rnto).and_respond("421 Service not available, closing control connection.")
|
85
|
+
lambda { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPTempError)
|
86
|
+
end
|
87
|
+
|
88
|
+
it "raises a Net::FTPPermError when the response code is 530" do
|
89
|
+
@server.should_receive(:rnto).and_respond("530 Not logged in.")
|
90
|
+
lambda { @ftp.rename("from.file", "to.file") }.should raise_error(Net::FTPPermError)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|