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.
- data/.autotest +1 -0
- data/Gemfile +11 -0
- data/Gemfile.lock +34 -0
- data/LICENSE.txt +202 -0
- data/README.rdoc +50 -0
- data/Rakefile +50 -8
- data/VERSION +1 -0
- data/lib/message_observers.rb +3 -3
- data/lib/rumbster.rb +0 -0
- data/lib/smtp_protocol.rb +7 -7
- data/lib/smtp_states.rb +24 -58
- data/rumbster.gemspec +70 -0
- data/test/{message_observers_test.rb → test_message_observers.rb} +1 -1
- data/test/{rumbster_test.rb → test_rumbster.rb} +1 -1
- data/test/{smtp_protocol_test.rb → test_smtp_protocol.rb} +2 -19
- data/test/{smtp_states_test.rb → test_smtp_states.rb} +31 -87
- metadata +128 -76
- data/COPYING +0 -515
- data/README +0 -56
- data/vendor/tmail.rb +0 -4
- data/vendor/tmail/.cvsignore +0 -3
- data/vendor/tmail/Makefile +0 -19
- data/vendor/tmail/address.rb +0 -222
- data/vendor/tmail/base64.rb +0 -52
- data/vendor/tmail/compat.rb +0 -39
- data/vendor/tmail/config.rb +0 -50
- data/vendor/tmail/encode.rb +0 -447
- data/vendor/tmail/header.rb +0 -895
- data/vendor/tmail/info.rb +0 -14
- data/vendor/tmail/loader.rb +0 -1
- data/vendor/tmail/mail.rb +0 -869
- data/vendor/tmail/mailbox.rb +0 -386
- data/vendor/tmail/mbox.rb +0 -1
- data/vendor/tmail/net.rb +0 -260
- data/vendor/tmail/obsolete.rb +0 -122
- data/vendor/tmail/parser.rb +0 -1475
- data/vendor/tmail/parser.y +0 -372
- data/vendor/tmail/port.rb +0 -356
- data/vendor/tmail/scanner.rb +0 -22
- data/vendor/tmail/scanner_r.rb +0 -243
- data/vendor/tmail/stringio.rb +0 -256
- data/vendor/tmail/textutils.rb +0 -197
- data/vendor/tmail/tmail.rb +0 -1
- 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
|
+
|
@@ -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
|
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
|
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
|
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
|
-
|
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
|
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
|
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
|
-
|
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
|
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
|
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,
|
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
|
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
|
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,
|
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
|
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
|
-
|
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
|
-
|
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
|
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
|
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
|
-
|
200
|
-
|
201
|
-
|
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
|
-
|
7
|
-
|
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
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
-
|
36
|
-
|
37
|
-
|
38
|
-
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
-
|
44
|
-
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
-
|
50
|
-
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
-
|
55
|
-
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
-
|
66
|
-
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
-
|
77
|
-
-
|
78
|
-
|
79
|
-
|
80
|
-
|
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
|
-
|
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
|
|