fake_ftp 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fake_ftp (0.0.2)
4
+ fake_ftp (0.0.4)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
data/README.markdown CHANGED
@@ -18,6 +18,8 @@ their intended destination rather than testing how our code does so.
18
18
  Usage
19
19
  -----
20
20
 
21
+ To test passive upload:
22
+
21
23
  require 'fake_ftp'
22
24
  require 'net/ftp'
23
25
 
@@ -35,13 +37,32 @@ Usage
35
37
 
36
38
  server.files.should include('some_file.txt')
37
39
  server.file('some_file.txt').bytes.should == 25
40
+ server.file('some_file.txt').should be_passive
41
+ server.file('some_file.txt').should_not be_active
38
42
 
39
43
  server.stop
40
44
 
41
- TODO
42
- ----
45
+ To test active upload:
46
+
47
+ server = FakeFtp::Server.new(21212)
48
+ ## 21212 is the control port, which is used by FTP for the primary connection
49
+ ## 21213 is the data port, used in FTP passive mode to send file contents
50
+ server.start
51
+
52
+ ftp = Net::FTP.new
53
+ ftp.connect('127.0.0.1', 21212)
54
+ ftp.login('user', 'password')
55
+ ftp.passive = false
56
+ ftp.put('some_file.txt')
57
+ ftp.close
58
+
59
+ server.files.should include('some_file.txt')
60
+ server.file('some_file.txt').bytes.should == 25
61
+ server.file('some_file.txt').should be_active
62
+ server.file('some_file.txt').should_not be_passive
63
+
64
+ server.stop
43
65
 
44
- * files should track if uploaded via active or passive
45
66
 
46
67
  References
47
68
  ----------
data/lib/fake_ftp/file.rb CHANGED
@@ -1,10 +1,20 @@
1
1
  module FakeFtp
2
2
  class File
3
3
  attr_accessor :bytes, :name
4
+ attr_writer :type
4
5
 
5
- def initialize(name = nil, bytes = nil)
6
+ def initialize(name = nil, bytes = nil, type = nil)
6
7
  self.name = name
7
8
  self.bytes = bytes
9
+ self.type = type
10
+ end
11
+
12
+ def passive?
13
+ @type == :passive
14
+ end
15
+
16
+ def active?
17
+ @type == :active
8
18
  end
9
19
  end
10
20
  end
@@ -145,7 +145,7 @@ module FakeFtp
145
145
  end
146
146
 
147
147
  data = data_client.recv(1024)
148
- file = FakeFtp::File.new(::File.basename(filename.to_s), data.length)
148
+ file = FakeFtp::File.new(::File.basename(filename.to_s), data.length, @mode)
149
149
  @files << file
150
150
 
151
151
  data_client.close
@@ -1,3 +1,3 @@
1
1
  module FakeFtp
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -18,10 +18,64 @@ describe FakeFtp::File do
18
18
  end
19
19
 
20
20
  context 'setup' do
21
+ it "can be initialized without attributes" do
22
+ file = FakeFtp::File.new
23
+ file.name.should be_nil
24
+ file.bytes.should be_nil
25
+ file.instance_variable_get(:@type).should be_nil
26
+ end
27
+
28
+ it "can be initialized with name" do
29
+ file = FakeFtp::File.new('filename')
30
+ file.name.should == 'filename'
31
+ file.bytes.should be_nil
32
+ file.instance_variable_get(:@type).should be_nil
33
+ end
34
+
21
35
  it "can be initialized with name and bytes" do
22
36
  file = FakeFtp::File.new('filename', 104)
23
37
  file.name.should == 'filename'
24
38
  file.bytes.should == 104
39
+ file.instance_variable_get(:@type).should be_nil
40
+ end
41
+
42
+ it "can be initialized with name and bytes and type" do
43
+ file = FakeFtp::File.new('filename', 104, :passive)
44
+ file.name.should == 'filename'
45
+ file.bytes.should == 104
46
+ file.instance_variable_get(:@type).should == :passive
47
+ end
48
+ end
49
+
50
+ describe '#passive?' do
51
+ before :each do
52
+ @file = FakeFtp::File.new
53
+ end
54
+
55
+ it "should be true if type is :passive" do
56
+ @file.type = :passive
57
+ @file.passive?.should be_true
58
+ end
59
+
60
+ it "should be false if type is :active" do
61
+ @file.type = :active
62
+ @file.passive?.should be_false
63
+ end
64
+ end
65
+
66
+ describe '#active?' do
67
+ before :each do
68
+ @file = FakeFtp::File.new
69
+ end
70
+
71
+ it "should be true if type is :active" do
72
+ @file.type = :active
73
+ @file.active?.should be_true
74
+ end
75
+
76
+ it "should be false if type is :passive" do
77
+ @file.type = :passive
78
+ @file.active?.should be_false
25
79
  end
26
80
  end
27
81
  end
@@ -389,6 +389,8 @@ describe FakeFtp::Server do
389
389
 
390
390
  @server.files.should include('text_file.txt')
391
391
  @server.file('text_file.txt').bytes.should == 20
392
+ @server.file('text_file.txt').should be_passive
393
+ @server.file('text_file.txt').should_not be_active
392
394
  end
393
395
 
394
396
  it "should put files using active" do
@@ -400,6 +402,8 @@ describe FakeFtp::Server do
400
402
 
401
403
  @server.files.should include('text_file.txt')
402
404
  @server.file('text_file.txt').bytes.should == 20
405
+ @server.file('text_file.txt').should_not be_passive
406
+ @server.file('text_file.txt').should be_active
403
407
  end
404
408
 
405
409
  xit "should disconnect clients on close" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fake_ftp
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 3
10
- version: 0.0.3
9
+ - 4
10
+ version: 0.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Colin Shield