rumbster 1.0.0 → 1.0.1

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 (44) hide show
  1. data/.autotest +1 -0
  2. data/Gemfile +11 -0
  3. data/Gemfile.lock +34 -0
  4. data/LICENSE.txt +202 -0
  5. data/README.rdoc +50 -0
  6. data/Rakefile +50 -8
  7. data/VERSION +1 -0
  8. data/lib/message_observers.rb +3 -3
  9. data/lib/rumbster.rb +0 -0
  10. data/lib/smtp_protocol.rb +7 -7
  11. data/lib/smtp_states.rb +24 -58
  12. data/rumbster.gemspec +70 -0
  13. data/test/{message_observers_test.rb → test_message_observers.rb} +1 -1
  14. data/test/{rumbster_test.rb → test_rumbster.rb} +1 -1
  15. data/test/{smtp_protocol_test.rb → test_smtp_protocol.rb} +2 -19
  16. data/test/{smtp_states_test.rb → test_smtp_states.rb} +31 -87
  17. metadata +128 -76
  18. data/COPYING +0 -515
  19. data/README +0 -56
  20. data/vendor/tmail.rb +0 -4
  21. data/vendor/tmail/.cvsignore +0 -3
  22. data/vendor/tmail/Makefile +0 -19
  23. data/vendor/tmail/address.rb +0 -222
  24. data/vendor/tmail/base64.rb +0 -52
  25. data/vendor/tmail/compat.rb +0 -39
  26. data/vendor/tmail/config.rb +0 -50
  27. data/vendor/tmail/encode.rb +0 -447
  28. data/vendor/tmail/header.rb +0 -895
  29. data/vendor/tmail/info.rb +0 -14
  30. data/vendor/tmail/loader.rb +0 -1
  31. data/vendor/tmail/mail.rb +0 -869
  32. data/vendor/tmail/mailbox.rb +0 -386
  33. data/vendor/tmail/mbox.rb +0 -1
  34. data/vendor/tmail/net.rb +0 -260
  35. data/vendor/tmail/obsolete.rb +0 -122
  36. data/vendor/tmail/parser.rb +0 -1475
  37. data/vendor/tmail/parser.y +0 -372
  38. data/vendor/tmail/port.rb +0 -356
  39. data/vendor/tmail/scanner.rb +0 -22
  40. data/vendor/tmail/scanner_r.rb +0 -243
  41. data/vendor/tmail/stringio.rb +0 -256
  42. data/vendor/tmail/textutils.rb +0 -197
  43. data/vendor/tmail/tmail.rb +0 -1
  44. data/vendor/tmail/utils.rb +0 -23
data/rumbster.gemspec ADDED
@@ -0,0 +1,70 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{rumbster}
8
+ s.version = "1.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Adam Esterline"]
12
+ s.date = %q{2012-02-24}
13
+ s.description = %q{Rumbster is a simple SMTP server that receives email sent from a SMTP client. Received emails are published to observers that have registered with Rumbster. There are currently two observers; FileMailObserver and MailMessageObserver.}
14
+ s.email = %q{adam@esterlines.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".autotest",
21
+ "Gemfile",
22
+ "Gemfile.lock",
23
+ "LICENSE.txt",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "lib/message_observers.rb",
28
+ "lib/rumbster.rb",
29
+ "lib/smtp_protocol.rb",
30
+ "lib/smtp_states.rb",
31
+ "rumbster.gemspec",
32
+ "test/test_message_observers.rb",
33
+ "test/test_rumbster.rb",
34
+ "test/test_smtp_protocol.rb",
35
+ "test/test_smtp_states.rb"
36
+ ]
37
+ s.homepage = %q{http://github.com/aesterline/rumbster}
38
+ s.licenses = ["Apache 2.0"]
39
+ s.require_paths = ["lib"]
40
+ s.rubygems_version = %q{1.5.1}
41
+ s.summary = %q{Rumbster is a testing SMTP server.}
42
+
43
+ if s.respond_to? :specification_version then
44
+ s.specification_version = 3
45
+
46
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
+ s.add_runtime_dependency(%q<mail>, [">= 0"])
48
+ s.add_runtime_dependency(%q<jruby-openssl>, [">= 0"])
49
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
50
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
51
+ s.add_development_dependency(%q<rcov>, [">= 0"])
52
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
53
+ else
54
+ s.add_dependency(%q<mail>, [">= 0"])
55
+ s.add_dependency(%q<jruby-openssl>, [">= 0"])
56
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
57
+ s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
58
+ s.add_dependency(%q<rcov>, [">= 0"])
59
+ s.add_dependency(%q<rdoc>, [">= 0"])
60
+ end
61
+ else
62
+ s.add_dependency(%q<mail>, [">= 0"])
63
+ s.add_dependency(%q<jruby-openssl>, [">= 0"])
64
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
65
+ s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
66
+ s.add_dependency(%q<rcov>, [">= 0"])
67
+ s.add_dependency(%q<rdoc>, [">= 0"])
68
+ end
69
+ end
70
+
@@ -4,7 +4,7 @@ require 'test/unit'
4
4
  require 'fileutils'
5
5
  require 'message_observers'
6
6
 
7
- class MessageObserversTest < Test::Unit::TestCase
7
+ class TestMessageObservers < Test::Unit::TestCase
8
8
 
9
9
  include FileUtils
10
10
 
@@ -6,7 +6,7 @@ require 'net/smtp'
6
6
  require 'gserver'
7
7
 
8
8
 
9
- class RumbsterTest < Test::Unit::TestCase
9
+ class TestRumbster < Test::Unit::TestCase
10
10
 
11
11
  def setup
12
12
  @observer = RumbsterObserver.new
@@ -3,15 +3,7 @@ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
3
  require 'test/unit'
4
4
  require 'smtp_protocol'
5
5
 
6
- class SmtpProtocolTest < Test::Unit::TestCase
7
-
8
- def test_protocol_sets_protocol_property_on_each_state
9
- init_state = TestState.new
10
-
11
- protocol = SmtpProtocol.new(:init, {:init => init_state})
12
-
13
- assert_same protocol, init_state.protocol
14
- end
6
+ class TestSmtpProtocol < Test::Unit::TestCase
15
7
 
16
8
  def test_protocol_starts_in_the_initial_state
17
9
  init_state = TestState.new
@@ -22,16 +14,6 @@ class SmtpProtocolTest < Test::Unit::TestCase
22
14
  assert init_state.called
23
15
  end
24
16
 
25
- def test_state_is_changed_when_a_new_state_is_set
26
- next_state = TestState.new
27
-
28
- protocol = SmtpProtocol.new(:init, {:init => TestState.new, :next => next_state})
29
- protocol.state = :next
30
- protocol.serve(nil)
31
-
32
- assert next_state.called
33
- end
34
-
35
17
  def test_listeners_are_notified_when_a_new_message_is_received
36
18
  protocol = SmtpProtocol.new(:init, {:init => TestState.new})
37
19
  observer = TestObserver.new
@@ -59,6 +41,7 @@ class TestState
59
41
 
60
42
  def serve(io)
61
43
  @called = true
44
+ :done
62
45
  end
63
46
 
64
47
  end
@@ -4,7 +4,7 @@ require 'test/unit'
4
4
  require 'stringio'
5
5
  require 'smtp_protocol'
6
6
 
7
- class SmtpStatesTest < Test::Unit::TestCase
7
+ class TestSmtpStates < Test::Unit::TestCase
8
8
 
9
9
  def setup
10
10
  buffer = ''
@@ -14,37 +14,22 @@ class SmtpStatesTest < Test::Unit::TestCase
14
14
  end
15
15
 
16
16
  def test_greeting_is_returned_upon_initial_client_connection
17
- init_state = InitState.new(@protocol)
17
+ init_state = InitState.new
18
18
  init_state.serve(@server_stream)
19
19
 
20
20
  assert_equal "220 ruby ESMTP\n", @client_stream.readline
21
21
  end
22
22
 
23
23
  def test_initial_state_passes_protocol_connect_as_the_next_state_in_the_chain
24
- init_state = InitState.new(@protocol)
25
- init_state.serve(@server_stream)
26
-
27
- assert_equal :connect, @protocol.state
28
- end
29
-
30
- def test_initial_state_passes_protocol_the_same_io_as_it_received
31
- init_state = InitState.new(@protocol)
32
- init_state.serve(@server_stream)
33
-
34
- assert_same @server_stream, @protocol.io
35
- end
36
-
37
- def test_initial_state_raises_not_initialized_when_protocol_is_not_set
38
24
  init_state = InitState.new
25
+ next_state = init_state.serve(@server_stream)
39
26
 
40
- assert_raise NotInitializedError do
41
- init_state.serve(@server_stream)
42
- end
27
+ assert_equal :connect, next_state
43
28
  end
44
-
29
+
45
30
  def test_helo_is_accepted_while_in_connect_state
46
31
  @client_stream.puts "HELO test.client"
47
- connect_state = ConnectState.new(@protocol)
32
+ connect_state = ConnectState.new
48
33
 
49
34
  connect_state.serve(@server_stream)
50
35
 
@@ -53,33 +38,16 @@ class SmtpStatesTest < Test::Unit::TestCase
53
38
 
54
39
  def test_connect_state_passes_protocol_connected_as_the_next_state_in_the_chain
55
40
  @client_stream.puts "HELO test.client"
56
- connect_state = ConnectState.new(@protocol)
57
-
58
- connect_state.serve(@server_stream)
59
-
60
- assert_equal :connected, @protocol.state
61
- end
62
-
63
- def test_connect_state_passes_protocol_the_same_io_as_it_received
64
- @client_stream.puts "HELO test.client"
65
- connect_state = ConnectState.new(@protocol)
41
+ connect_state = ConnectState.new
66
42
 
67
- connect_state.serve(@server_stream)
43
+ next_state = connect_state.serve(@server_stream)
68
44
 
69
- assert_same @server_stream, @protocol.io
45
+ assert_equal :connected, next_state
70
46
  end
71
47
 
72
- def test_connect_state_raises_not_initialized_when_protocol_is_not_set
73
- connect_state = ConnectState.new
74
-
75
- assert_raise NotInitializedError do
76
- connect_state.serve(@server_stream)
77
- end
78
- end
79
-
80
48
  def test_from_okayed_while_in_connected_state
81
49
  @client_stream.puts "MAIL FROM:<adam@esterlines.com>"
82
- connected_state = ConnectedState.new(@protocol)
50
+ connected_state = ConnectedState.new
83
51
 
84
52
  connected_state.serve(@server_stream)
85
53
 
@@ -88,16 +56,16 @@ class SmtpStatesTest < Test::Unit::TestCase
88
56
 
89
57
  def test_connected_state_passes_protocol_connected_as_the_next_state_when_client_sends_from_request
90
58
  @client_stream.puts "MAIL FROM:<junk@junkster.com>"
91
- connected_state = ConnectedState.new(@protocol)
59
+ connected_state = ConnectedState.new
92
60
 
93
- connected_state.serve(@server_stream)
61
+ next_state = connected_state.serve(@server_stream)
94
62
 
95
- assert_equal :connected, @protocol.state
63
+ assert_equal :connected, next_state
96
64
  end
97
65
 
98
66
  def test_rcpt_okayed_while_in_connected_state
99
67
  @client_stream.puts "RCPT TO:<junk@junkster.com>"
100
- connected_state = ConnectedState.new(@protocol)
68
+ connected_state = ConnectedState.new
101
69
 
102
70
  connected_state.serve(@server_stream)
103
71
 
@@ -106,25 +74,16 @@ class SmtpStatesTest < Test::Unit::TestCase
106
74
 
107
75
  def test_connected_state_passes_protocol_connected_as_the_next_state_when_client_sends_rcpt_request
108
76
  @client_stream.puts "RCPT TO:<foo@foo.com>"
109
- connected_state = ConnectedState.new(@protocol)
77
+ connected_state = ConnectedState.new
110
78
 
111
- connected_state.serve(@server_stream)
79
+ next_state = connected_state.serve(@server_stream)
112
80
 
113
- assert_equal :connected, @protocol.state
114
- end
115
-
116
- def test_connected_state_passes_protocol_the_same_io_as_it_received
117
- @client_stream.puts "MAIL FROM:<foo@foo.com>"
118
- connected_state = ConnectedState.new(@protocol)
119
-
120
- connected_state.serve(@server_stream)
121
-
122
- assert_same @server_stream, @protocol.io
81
+ assert_equal :connected, next_state
123
82
  end
124
83
 
125
84
  def test_data_request_given_the_go_ahead_while_in_connected_state
126
85
  @client_stream.puts "DATA"
127
- connected_state = ConnectedState.new(@protocol)
86
+ connected_state = ConnectedState.new
128
87
 
129
88
  connected_state.serve(@server_stream)
130
89
 
@@ -133,19 +92,11 @@ class SmtpStatesTest < Test::Unit::TestCase
133
92
 
134
93
  def test_connected_state_passes_protocol_read_mail_as_the_next_state_when_client_sends_data_request
135
94
  @client_stream.puts "DATA"
136
- connected_state = ConnectedState.new(@protocol)
137
-
138
- connected_state.serve(@server_stream)
139
-
140
- assert_equal :read_mail, @protocol.state
141
- end
142
-
143
- def test_connected_state_raises_not_initialized_when_protocol_is_not_set
144
95
  connected_state = ConnectedState.new
96
+
97
+ next_state = connected_state.serve(@server_stream)
145
98
 
146
- assert_raise NotInitializedError do
147
- connected_state.serve(@server_stream)
148
- end
99
+ assert_equal :read_mail, next_state
149
100
  end
150
101
 
151
102
  def test_read_mail_state_reads_until_a_single_dot_is_found_on_a_line_then_returns_an_ok_message
@@ -171,34 +122,27 @@ class SmtpStatesTest < Test::Unit::TestCase
171
122
  @client_stream.puts "To: junk@junk.com\nFrom: junk2@junk2.com\n\nHi\n.\n"
172
123
  read_mail_state = ReadMailState.new(@protocol)
173
124
 
174
- read_mail_state.serve(@server_stream)
175
-
176
- assert_equal :quit, @protocol.state
177
- end
178
-
179
- def test_read_mail_state_raises_not_initialized_when_protocol_is_not_set
180
- read_mail_state = ReadMailState.new
125
+ next_state = read_mail_state.serve(@server_stream)
181
126
 
182
- assert_raise NotInitializedError do
183
- read_mail_state.serve(@server_stream)
184
- end
127
+ assert_equal :quit, next_state
185
128
  end
186
129
 
187
130
  def test_quit_state_reads_client_quit_and_says_goodbye
188
131
  @client_stream.puts "QUIT"
189
- quit_state = QuitState.new(@protocol)
132
+ quit_state = QuitState.new
190
133
 
191
134
  quit_state.serve(@server_stream)
192
135
 
193
136
  assert_equal "221 ruby goodbye\n", @client_stream.readline
194
137
  end
195
-
196
- def test_quit_state_raises_not_initialized_when_protocol_is_not_set
138
+
139
+ def test_quit_state_passes_done_as_next_state
140
+ @client_stream.puts "QUIT"
197
141
  quit_state = QuitState.new
198
142
 
199
- assert_raise NotInitializedError do
200
- quit_state.serve(@server_stream)
201
- end
143
+ next_state = quit_state.serve(@server_stream)
144
+
145
+ assert_equal :done, next_state
202
146
  end
203
147
 
204
148
  end
@@ -214,4 +158,4 @@ class TestProtocol
214
158
  def new_message_received(message)
215
159
  @new_message = message
216
160
  end
217
- end
161
+ end
metadata CHANGED
@@ -1,88 +1,140 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
3
- specification_version: 1
4
2
  name: rumbster
5
3
  version: !ruby/object:Gem::Version
6
- version: 1.0.0
7
- date: 2007-10-22 00:00:00 -05:00
8
- summary: Rumbster is a simple SMTP server that receives email sent from a SMTP client. Received emails are published to observers that have registered with Rumbster. There are currently two observers; FileMailObserver and MailMessageObserver.
9
- require_paths:
10
- - lib
11
- email: adam@esterlines.com
12
- homepage: http://rumbster.rubyforge.org/
13
- rubyforge_project: rumbster
14
- description: Rumbster is a simple SMTP server that receives email sent from a SMTP client. Received emails are published to observers that have registered with Rumbster. There are currently two observers; FileMailObserver and MailMessageObserver.
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ prerelease:
5
+ version: 1.0.1
25
6
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
7
  authors:
30
- - Adam Esterline
31
- files:
32
- - lib/message_observers.rb
33
- - lib/rumbster.rb
34
- - lib/smtp_protocol.rb
35
- - lib/smtp_states.rb
36
- - test/message_observers_test.rb
37
- - test/rumbster_test.rb
38
- - test/smtp_protocol_test.rb
39
- - test/smtp_states_test.rb
40
- - vendor/tmail/address.rb
41
- - vendor/tmail/base64.rb
42
- - vendor/tmail/compat.rb
43
- - vendor/tmail/config.rb
44
- - vendor/tmail/encode.rb
45
- - vendor/tmail/header.rb
46
- - vendor/tmail/info.rb
47
- - vendor/tmail/loader.rb
48
- - vendor/tmail/mail.rb
49
- - vendor/tmail/mailbox.rb
50
- - vendor/tmail/Makefile
51
- - vendor/tmail/mbox.rb
52
- - vendor/tmail/net.rb
53
- - vendor/tmail/obsolete.rb
54
- - vendor/tmail/parser.rb
55
- - vendor/tmail/parser.y
56
- - vendor/tmail/port.rb
57
- - vendor/tmail/scanner.rb
58
- - vendor/tmail/scanner_r.rb
59
- - vendor/tmail/stringio.rb
60
- - vendor/tmail/textutils.rb
61
- - vendor/tmail/tmail.rb
62
- - vendor/tmail/utils.rb
63
- - vendor/tmail/.cvsignore
64
- - vendor/tmail.rb
65
- - COPYING
66
- - Rakefile
67
- - README
68
- test_files:
69
- - test/message_observers_test.rb
70
- - test/rumbster_test.rb
71
- - test/smtp_protocol_test.rb
72
- - test/smtp_states_test.rb
73
- rdoc_options:
74
- - --title
75
- - rumbster Documentation
76
- - --main
77
- - README
78
- - -q
79
- extra_rdoc_files:
80
- - README
8
+ - Adam Esterline
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2012-02-24 00:00:00 -07:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: mail
18
+ version_requirements: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ requirement: *id001
25
+ prerelease: false
26
+ type: :runtime
27
+ - !ruby/object:Gem::Dependency
28
+ name: jruby-openssl
29
+ version_requirements: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ requirement: *id002
36
+ prerelease: false
37
+ type: :runtime
38
+ - !ruby/object:Gem::Dependency
39
+ name: bundler
40
+ version_requirements: &id003 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.0.0
46
+ requirement: *id003
47
+ prerelease: false
48
+ type: :development
49
+ - !ruby/object:Gem::Dependency
50
+ name: jeweler
51
+ version_requirements: &id004 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 1.6.2
57
+ requirement: *id004
58
+ prerelease: false
59
+ type: :development
60
+ - !ruby/object:Gem::Dependency
61
+ name: rcov
62
+ version_requirements: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ requirement: *id005
69
+ prerelease: false
70
+ type: :development
71
+ - !ruby/object:Gem::Dependency
72
+ name: rdoc
73
+ version_requirements: &id006 !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: "0"
79
+ requirement: *id006
80
+ prerelease: false
81
+ type: :development
82
+ description: Rumbster is a simple SMTP server that receives email sent from a SMTP client. Received emails are published to observers that have registered with Rumbster. There are currently two observers; FileMailObserver and MailMessageObserver.
83
+ email: adam@esterlines.com
81
84
  executables: []
82
85
 
83
86
  extensions: []
84
87
 
88
+ extra_rdoc_files:
89
+ - LICENSE.txt
90
+ - README.rdoc
91
+ files:
92
+ - .autotest
93
+ - Gemfile
94
+ - Gemfile.lock
95
+ - LICENSE.txt
96
+ - README.rdoc
97
+ - Rakefile
98
+ - VERSION
99
+ - lib/message_observers.rb
100
+ - lib/rumbster.rb
101
+ - lib/smtp_protocol.rb
102
+ - lib/smtp_states.rb
103
+ - rumbster.gemspec
104
+ - test/test_message_observers.rb
105
+ - test/test_rumbster.rb
106
+ - test/test_smtp_protocol.rb
107
+ - test/test_smtp_states.rb
108
+ has_rdoc: true
109
+ homepage: http://github.com/aesterline/rumbster
110
+ licenses:
111
+ - Apache 2.0
112
+ post_install_message:
113
+ rdoc_options: []
114
+
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ hash: 2
123
+ segments:
124
+ - 0
125
+ version: "0"
126
+ required_rubygems_version: !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: "0"
85
132
  requirements: []
86
133
 
87
- dependencies: []
134
+ rubyforge_project:
135
+ rubygems_version: 1.5.1
136
+ signing_key:
137
+ specification_version: 3
138
+ summary: Rumbster is a testing SMTP server.
139
+ test_files: []
88
140