remailer 0.5.2 → 0.9.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.
@@ -1,9 +1,15 @@
1
- require File.expand_path('../helper', File.dirname(__FILE__))
1
+ require_relative '../helper'
2
+
3
+ class RemailerSMTPServerTest < MiniTest::Test
4
+ def random_server_port
5
+ @server_port ||= 9000 + rand(4096)
6
+
7
+ @server_port += 1
8
+ end
2
9
 
3
- class RemailerSMTPServerTest < Test::Unit::TestCase
4
10
  def test_bind
5
11
  engine do
6
- server_port = 8025
12
+ server_port = random_server_port
7
13
 
8
14
  server = Remailer::SMTP::Server.bind(nil, server_port)
9
15
 
@@ -13,14 +19,14 @@ class RemailerSMTPServerTest < Test::Unit::TestCase
13
19
 
14
20
  def test_connect
15
21
  engine do
16
- server_port = 8025
22
+ server_port = random_server_port
17
23
 
18
24
  remote_ip = nil
19
25
 
20
26
  server = Remailer::SMTP::Server.bind(
21
- nil,
27
+ '127.0.0.1',
22
28
  server_port,
23
- :on_connect => lambda { |_remote_ip| remote_ip = _remote_ip }
29
+ on_connect: lambda { |_remote_ip| remote_ip = _remote_ip }
24
30
  )
25
31
 
26
32
  assert server
@@ -28,11 +34,13 @@ class RemailerSMTPServerTest < Test::Unit::TestCase
28
34
  connected_host = nil
29
35
 
30
36
  client = Remailer::SMTP::Client.open(
31
- 'localhost',
32
- :port => server_port,
33
- :debug => STDERR,
34
- :connect => lambda { |success, host| connected_host = host }
37
+ '127.0.0.1',
38
+ port: server_port,
39
+ debug: self.debug_channel,
40
+ connect: lambda { |success, host| connected_host = host }
35
41
  )
42
+
43
+ assert client
36
44
 
37
45
  assert_eventually(30) do
38
46
  connected_host
@@ -45,24 +53,22 @@ class RemailerSMTPServerTest < Test::Unit::TestCase
45
53
 
46
54
  def test_transaction
47
55
  engine do
48
- server_port = 8025
56
+ server_port = random_server_port
49
57
 
50
58
  transaction = nil
51
59
 
52
60
  server = Remailer::SMTP::Server.bind(
53
- nil,
61
+ '127.0.0.1',
54
62
  server_port,
55
- :on_transaction => lambda { |_transaction| transaction = _transaction }
63
+ on_transaction: lambda { |_transaction| transaction = _transaction }
56
64
  )
57
65
 
58
66
  assert server
59
67
 
60
- connected_host = nil
61
-
62
68
  client = Remailer::SMTP::Client.open(
63
- 'localhost',
64
- :port => server_port,
65
- :debug => STDERR
69
+ '127.0.0.1',
70
+ port: server_port,
71
+ debug: self.debug_channel
66
72
  )
67
73
 
68
74
  sender = 'sender@example.com'.freeze
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.join(*%w[ .. helper ]), File.dirname(__FILE__))
1
+ require_relative '../helper'
2
2
 
3
3
  class SOCKS5Delegate
4
4
  attr_reader :options
@@ -6,6 +6,7 @@ class SOCKS5Delegate
6
6
  def initialize(options = nil)
7
7
  @sent = [ ]
8
8
  @options = (options or { })
9
+ @closed = false
9
10
  end
10
11
 
11
12
  def resolve_hostname(hostname)
@@ -52,15 +53,15 @@ class SOCKS5Delegate
52
53
  end
53
54
  end
54
55
 
55
- class RemailerSOCKS5ClientInterpreterTest < Test::Unit::TestCase
56
+ class RemailerSOCKS5ClientInterpreterTest < MiniTest::Test
56
57
  def test_defaults
57
58
  delegate = SOCKS5Delegate.new(
58
- :proxy => {
59
- :host => 'example.net'
59
+ proxy: {
60
+ host: 'example.net'
60
61
  }
61
62
  )
62
63
 
63
- interpreter = Remailer::SOCKS5::Client::Interpreter.new(:delegate => delegate)
64
+ interpreter = Remailer::SOCKS5::Client::Interpreter.new(delegate: delegate)
64
65
 
65
66
  assert_equal :initialized, interpreter.state
66
67
  assert_equal false, delegate.closed?
@@ -68,13 +69,13 @@ class RemailerSOCKS5ClientInterpreterTest < Test::Unit::TestCase
68
69
 
69
70
  def test_simple_connection
70
71
  delegate = SOCKS5Delegate.new(
71
- :host => '1.2.3.4',
72
- :port => 4321,
73
- :proxy => {
74
- :host => 'example.net'
72
+ host: '1.2.3.4',
73
+ port: 4321,
74
+ proxy: {
75
+ host: 'example.net'
75
76
  }
76
77
  )
77
- interpreter = Remailer::SOCKS5::Client::Interpreter.new(:delegate => delegate)
78
+ interpreter = Remailer::SOCKS5::Client::Interpreter.new(delegate: delegate)
78
79
 
79
80
  assert_equal :initialized, interpreter.state
80
81
  assert_equal false, delegate.closed?
@@ -121,4 +122,64 @@ class RemailerSOCKS5ClientInterpreterTest < Test::Unit::TestCase
121
122
 
122
123
  assert_equal :connected, interpreter.state
123
124
  end
125
+
126
+ def test_combined_socks5_smtp
127
+ delegate = SOCKS5Delegate.new(
128
+ host: '1.2.3.4',
129
+ port: 4321,
130
+ proxy: {
131
+ host: 'example.net'
132
+ }
133
+ )
134
+ interpreter = Remailer::SOCKS5::Client::Interpreter.new(delegate: delegate)
135
+
136
+ assert_equal :initialized, interpreter.state
137
+ assert_equal false, delegate.closed?
138
+
139
+ sent = delegate.read
140
+
141
+ assert_equal 2, sent.length
142
+
143
+ assert_equal [ Remailer::SOCKS5::Client::Interpreter::SOCKS5_VERSION, 0 ], sent.unpack('CC')
144
+
145
+ reply = [
146
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_VERSION,
147
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_METHOD[:no_auth]
148
+ ].pack('CC')
149
+
150
+ interpreter.process(reply)
151
+
152
+ assert_equal false, interpreter.error?
153
+ assert_equal :connect_through_proxy, interpreter.state
154
+ assert_equal '', reply
155
+
156
+ sent = delegate.read
157
+
158
+ assert sent, "No data received"
159
+ assert_equal 10, sent.length
160
+
161
+ assert_equal [
162
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_VERSION,
163
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_COMMAND[:connect],
164
+ 0,
165
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_ADDRESS_TYPE[:ipv4],
166
+ [ 1, 2, 3, 4 ].pack('CCCC'),
167
+ 4321
168
+ ], sent.unpack('CCCCA4n')
169
+
170
+ buffer = [
171
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_VERSION,
172
+ 0, # No error
173
+ 0,
174
+ Remailer::SOCKS5::Client::Interpreter::SOCKS5_ADDRESS_TYPE[:ipv4],
175
+ [ 1, 2, 3, 4 ].pack('CCCC'),
176
+ 4321
177
+ ].pack('CCCCA4n') + '421 Welcome to an ESTMP Server'
178
+
179
+ interpreter.process(buffer)
180
+
181
+ assert_equal '421 Welcome to an ESTMP Server', buffer
182
+
183
+ assert_equal :connected, interpreter.state
184
+ end
124
185
  end
@@ -1,6 +1,6 @@
1
- require File.expand_path(File.join(*%w[ .. helper ]), File.dirname(__FILE__))
1
+ require_relative '../helper'
2
2
 
3
- class RemailerTest < Test::Unit::TestCase
3
+ class RemailerTest < MiniTest::Test
4
4
  def test_module_loaded
5
5
  assert Remailer
6
6
  end
metadata CHANGED
@@ -1,41 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
5
- prerelease:
4
+ version: 0.9.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Scott Tadman
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-11-30 00:00:00.000000000 Z
11
+ date: 2020-09-22 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: eventmachine
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
- description: EventMachine SMTP Mail User Agent
31
- email: scott@twg.ca
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest-reporters
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: juwelier
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: EventMachine Mail Agent for SMTP and IMAP
70
+ email: tadman@postageapp.com
32
71
  executables: []
33
72
  extensions: []
34
73
  extra_rdoc_files:
35
- - README.rdoc
74
+ - LICENSE.txt
75
+ - README.md
36
76
  files:
37
- - .document
38
- - README.rdoc
77
+ - ".document"
78
+ - Gemfile
79
+ - LICENSE.txt
80
+ - README.md
39
81
  - Rakefile
40
82
  - VERSION
41
83
  - lib/remailer.rb
@@ -60,7 +102,9 @@ files:
60
102
  - lib/remailer/socks5/client/interpreter.rb
61
103
  - lib/remailer/support.rb
62
104
  - remailer.gemspec
63
- - test/config.example.rb
105
+ - test/bin/exercise
106
+ - test/config.example.yml
107
+ - test/config.rb
64
108
  - test/helper.rb
65
109
  - test/unit/remailer_imap_client_interpreter_test.rb
66
110
  - test/unit/remailer_imap_client_test.rb
@@ -71,28 +115,26 @@ files:
71
115
  - test/unit/remailer_smtp_server_test.rb
72
116
  - test/unit/remailer_socks5_client_interpreter_test.rb
73
117
  - test/unit/remailer_test.rb
74
- homepage: http://github.com/twg/remailer
118
+ homepage: http://github.com/postageapp/remailer
75
119
  licenses: []
76
- post_install_message:
120
+ metadata: {}
121
+ post_install_message:
77
122
  rdoc_options: []
78
123
  require_paths:
79
124
  - lib
80
125
  required_ruby_version: !ruby/object:Gem::Requirement
81
- none: false
82
126
  requirements:
83
- - - ! '>='
127
+ - - ">="
84
128
  - !ruby/object:Gem::Version
85
129
  version: '0'
86
130
  required_rubygems_version: !ruby/object:Gem::Requirement
87
- none: false
88
131
  requirements:
89
- - - ! '>='
132
+ - - ">="
90
133
  - !ruby/object:Gem::Version
91
134
  version: '0'
92
135
  requirements: []
93
- rubyforge_project:
94
- rubygems_version: 1.8.24
95
- signing_key:
96
- specification_version: 3
136
+ rubygems_version: 3.1.4
137
+ signing_key:
138
+ specification_version: 4
97
139
  summary: Reactor-Ready SMTP Mailer
98
140
  test_files: []
@@ -1,17 +0,0 @@
1
- TestConfig.smtp_server = {
2
- :host => "smtp.example.com",
3
- :identifier => "smtp.example.com"
4
- }
5
-
6
- TestConfig.public_smtp_server = {
7
- :host => "smtp.gmail.com",
8
- :identifier => "mx.google.com",
9
- :username => "--your--username--gmail.com",
10
- :password => "--your--password--",
11
- :port => 587
12
- }
13
-
14
- TestConfig.proxy_server = "proxy.example.com"
15
-
16
- TestConfig.recipient = "--your--email--"
17
- TestConfig.sender = "--your--email--"