2017-05-12 12:16:55 -07:00
|
|
|
require_relative "helper"
|
2016-11-21 20:10:56 +05:30
|
|
|
|
2016-11-22 16:05:49 +01:00
|
|
|
require "puma/binder"
|
|
|
|
require "puma/puma_http11"
|
2016-11-21 20:10:56 +05:30
|
|
|
|
2016-11-22 16:05:49 +01:00
|
|
|
class TestBinder < Minitest::Test
|
2016-11-21 20:10:56 +05:30
|
|
|
def setup
|
2016-11-25 19:32:41 +01:00
|
|
|
@events = Puma::Events.null
|
2016-11-21 20:10:56 +05:30
|
|
|
@binder = Puma::Binder.new(@events)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_localhost_addresses_dont_alter_listeners_for_tcp_addresses
|
2018-08-21 20:08:06 -05:00
|
|
|
skip_on :jruby
|
2016-11-21 20:10:56 +05:30
|
|
|
|
|
|
|
@binder.parse(["tcp://localhost:10001"], @events)
|
|
|
|
|
|
|
|
assert_equal [], @binder.listeners
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_localhost_addresses_dont_alter_listeners_for_ssl_addresses
|
2018-08-21 20:08:06 -05:00
|
|
|
skip_on :jruby
|
2016-11-21 20:10:56 +05:30
|
|
|
|
|
|
|
key = File.expand_path "../../examples/puma/puma_keypair.pem", __FILE__
|
|
|
|
cert = File.expand_path "../../examples/puma/cert_puma.pem", __FILE__
|
|
|
|
|
|
|
|
@binder.parse(["ssl://localhost:10002?key=#{key}&cert=#{cert}"], @events)
|
|
|
|
|
|
|
|
assert_equal [], @binder.listeners
|
|
|
|
end
|
2017-12-01 18:56:48 +00:00
|
|
|
|
|
|
|
def test_binder_parses_ssl_cipher_filter
|
2018-08-21 20:08:06 -05:00
|
|
|
skip_on :jruby
|
2017-12-01 18:56:48 +00:00
|
|
|
|
|
|
|
key = File.expand_path "../../examples/puma/puma_keypair.pem", __FILE__
|
|
|
|
cert = File.expand_path "../../examples/puma/cert_puma.pem", __FILE__
|
|
|
|
ssl_cipher_filter = "AES@STRENGTH"
|
|
|
|
|
|
|
|
@binder.parse(["ssl://0.0.0.0?key=#{key}&cert=#{cert}&ssl_cipher_filter=#{ssl_cipher_filter}"], @events)
|
|
|
|
|
|
|
|
ssl = @binder.instance_variable_get(:@ios)[0]
|
|
|
|
ctx = ssl.instance_variable_get(:@ctx)
|
|
|
|
assert_equal(ssl_cipher_filter, ctx.ssl_cipher_filter)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_binder_parses_jruby_ssl_options
|
2018-08-21 20:08:06 -05:00
|
|
|
skip_unless :jruby
|
2017-12-01 19:06:33 +00:00
|
|
|
|
2017-12-04 19:39:17 +00:00
|
|
|
keystore = File.expand_path "../../examples/puma/keystore.jks", __FILE__
|
2017-12-01 18:56:48 +00:00
|
|
|
ssl_cipher_list = "TLS_DHE_RSA_WITH_DES_CBC_SHA,TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA"
|
2018-07-09 11:49:20 -05:00
|
|
|
@binder.parse(["ssl://0.0.0.0:8080?keystore=#{keystore}&keystore-pass=&ssl_cipher_list=#{ssl_cipher_list}"], @events)
|
2017-12-01 18:56:48 +00:00
|
|
|
|
|
|
|
ssl= @binder.instance_variable_get(:@ios)[0]
|
|
|
|
ctx = ssl.instance_variable_get(:@ctx)
|
|
|
|
assert_equal(keystore, ctx.keystore)
|
|
|
|
assert_equal(ssl_cipher_list, ctx.ssl_cipher_list)
|
|
|
|
end
|
2018-04-17 14:25:22 +01:00
|
|
|
|
|
|
|
def test_binder_parses_tlsv1_disabled
|
2019-02-19 21:59:39 -06:00
|
|
|
skip_on :jruby
|
2018-04-17 14:25:22 +01:00
|
|
|
|
|
|
|
key = File.expand_path "../../examples/puma/puma_keypair.pem", __FILE__
|
|
|
|
cert = File.expand_path "../../examples/puma/cert_puma.pem", __FILE__
|
|
|
|
|
|
|
|
@binder.parse(["ssl://0.0.0.0?key=#{key}&cert=#{cert}&no_tlsv1=true"], @events)
|
|
|
|
|
|
|
|
ssl = @binder.instance_variable_get(:@ios).first
|
|
|
|
ctx = ssl.instance_variable_get(:@ctx)
|
|
|
|
assert_equal(true, ctx.no_tlsv1)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_binder_parses_tlsv1_enabled
|
2019-02-19 21:59:39 -06:00
|
|
|
skip_on :jruby
|
2018-04-17 14:25:22 +01:00
|
|
|
|
|
|
|
key = File.expand_path "../../examples/puma/puma_keypair.pem", __FILE__
|
|
|
|
cert = File.expand_path "../../examples/puma/cert_puma.pem", __FILE__
|
|
|
|
|
|
|
|
@binder.parse(["ssl://0.0.0.0?key=#{key}&cert=#{cert}&no_tlsv1=false"], @events)
|
|
|
|
|
|
|
|
ssl = @binder.instance_variable_get(:@ios).first
|
|
|
|
ctx = ssl.instance_variable_get(:@ctx)
|
|
|
|
refute(ctx.no_tlsv1)
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_binder_parses_tlsv1_unspecified_defaults_to_enabled
|
2019-02-19 21:59:39 -06:00
|
|
|
skip_on :jruby
|
2018-04-17 14:25:22 +01:00
|
|
|
|
|
|
|
key = File.expand_path "../../examples/puma/puma_keypair.pem", __FILE__
|
|
|
|
cert = File.expand_path "../../examples/puma/cert_puma.pem", __FILE__
|
|
|
|
|
|
|
|
@binder.parse(["ssl://0.0.0.0?key=#{key}&cert=#{cert}"], @events)
|
|
|
|
|
|
|
|
ssl = @binder.instance_variable_get(:@ios).first
|
|
|
|
ctx = ssl.instance_variable_get(:@ctx)
|
|
|
|
refute(ctx.no_tlsv1)
|
|
|
|
end
|
2017-12-01 19:06:33 +00:00
|
|
|
end
|