66 lines
1.7 KiB
Ruby
66 lines
1.7 KiB
Ruby
require 'em_test_helper'
|
|
|
|
class TestSSLMethods < Test::Unit::TestCase
|
|
|
|
module ServerHandler
|
|
def post_init
|
|
start_tls
|
|
end
|
|
|
|
def ssl_handshake_completed
|
|
$server_called_back = true
|
|
$server_cert_value = get_peer_cert
|
|
$server_cipher_bits = get_cipher_bits
|
|
$server_cipher_name = get_cipher_name
|
|
$server_cipher_protocol = get_cipher_protocol
|
|
end
|
|
end
|
|
|
|
module ClientHandler
|
|
def post_init
|
|
start_tls
|
|
end
|
|
|
|
def ssl_handshake_completed
|
|
$client_called_back = true
|
|
$client_cert_value = get_peer_cert
|
|
$client_cipher_bits = get_cipher_bits
|
|
$client_cipher_name = get_cipher_name
|
|
$client_cipher_protocol = get_cipher_protocol
|
|
EM.stop_event_loop
|
|
end
|
|
end
|
|
|
|
def test_ssl_methods
|
|
omit_unless(EM.ssl?)
|
|
omit_if(rbx?)
|
|
$server_called_back, $client_called_back = false, false
|
|
$server_cert_value, $client_cert_value = nil, nil
|
|
$server_cipher_bits, $client_cipher_bits = nil, nil
|
|
$server_cipher_name, $client_cipher_name = nil, nil
|
|
$server_cipher_protocol, $client_cipher_protocol = nil, nil
|
|
|
|
EM.run {
|
|
EM.start_server("127.0.0.1", 9999, ServerHandler)
|
|
EM.connect("127.0.0.1", 9999, ClientHandler)
|
|
}
|
|
|
|
assert($server_called_back)
|
|
assert($client_called_back)
|
|
|
|
assert($server_cert_value.is_a?(NilClass))
|
|
assert($client_cert_value.is_a?(String))
|
|
|
|
assert($client_cipher_bits > 0)
|
|
assert_equal($client_cipher_bits, $server_cipher_bits)
|
|
|
|
assert($client_cipher_name.length > 0)
|
|
assert_match(/AES/, $client_cipher_name)
|
|
assert_equal($client_cipher_name, $server_cipher_name)
|
|
|
|
assert_match(/TLS/, $client_cipher_protocol)
|
|
assert_equal($client_cipher_protocol, $server_cipher_protocol)
|
|
end
|
|
|
|
end
|