Sha256: 8d1d9289242caa9c7c681725c4af32e54e08f57a516d2fda77b905644db3d7b1

Contents?: true

Size: 1.72 KB

Versions: 2

Compression:

Stored size: 1.72 KB

Contents

#!/usr/bin/env ruby
# -*- coding: binary -*-

$:.unshift(File.join(File.dirname(__FILE__), '..', '..'))

require 'test/unit'
require 'rex/socket/ssl_tcp_server'
require 'rex/socket/ssl_tcp'
require 'rex/text'

class Rex::Socket::SslTcpServer::UnitTest < Test::Unit::TestCase

	# XXX.  The client data is sent & decrypted just fine.  The server data is not.  the client thread just spins.  BAH.
	#
	# As of 2011-03-04, works fine on 1.8.6-p399, 1.8.7-p330, 1.9.1-p378
	#
	def test_tcp_server
		#return;

		serv_port = 65433
		c = nil

		threads = []

		# Server thread
		threads << Thread.new() {
			serv = Rex::Socket.create_tcp_server('LocalPort' => serv_port, 'SSL' => true)
			assert_kind_of(Rex::Socket::SslTcpServer, serv, "type => ssl")
			assert_kind_of(Rex::Socket::TcpServer, serv, "type => tcp")
			assert_kind_of(Rex::IO::StreamServer, serv, "type => stream")
			s = serv.accept
			assert_equal("client_data\n", s.get_once(), "s: get_once")
			assert_equal(3, s.write("Yo\n"), "s: put Yo")
			# Make sure methods are Strings for 1.9 compat (which returns
			# symbols)
			meths = s.methods.map {|m| m.to_s}
			assert(meths.include?("<<"), "Has <<")
			assert(meths.include?(">>"), "Has >>")
			assert(meths.include?("has_read_data?"), "Has has_read_data?")
			serv.close
		}

		# Client thread
		threads << Thread.new() {
			sleep(2)
			assert_nothing_raised {
				c = Rex::Socket::SslTcp.create(
				'PeerHost' => '127.0.0.1',
				'PeerPort' => serv_port
				)
			}
			assert_kind_of(Rex::Socket::Tcp, c, "TCP")
			assert_kind_of(Rex::Socket::SslTcp, c, "SSL")
			assert_equal(12, c.write("client_data\n"), "c: write")
			assert_equal("Yo\n", c.get_once(), "c: get_once")
			c.close if (c)
		}

		threads.each { |aThread|  aThread.join }
	end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
librex-0.0.68 lib/rex/socket/ssl_tcp_server.rb.ut.rb
librex-0.0.66 lib/rex/socket/ssl_tcp_server.rb.ut.rb