1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/spec/ruby/library/socket/basicsocket/connect_address_spec.rb
eregon b53cf149ad Update to ruby/spec@9be7c7e
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64180 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-08-03 16:19:40 +00:00

150 lines
3.6 KiB
Ruby

require_relative '../spec_helper'
require_relative '../fixtures/classes'
describe 'Socket#connect_address' do
describe 'using an unbound socket' do
after do
@sock.close
end
it 'raises SocketError' do
@sock = Socket.new(:INET, :STREAM)
lambda { @sock.connect_address }.should raise_error(SocketError)
end
end
describe 'using a socket bound to 0.0.0.0' do
before do
@sock = Socket.new(:INET, :STREAM)
@sock.bind(Socket.sockaddr_in(0, '0.0.0.0'))
end
after do
@sock.close
end
it 'returns an Addrinfo' do
@sock.connect_address.should be_an_instance_of(Addrinfo)
end
it 'uses 127.0.0.1 as the IP address' do
@sock.connect_address.ip_address.should == '127.0.0.1'
end
it 'uses the correct port number' do
@sock.connect_address.ip_port.should > 0
end
it 'uses AF_INET as the address family' do
@sock.connect_address.afamily.should == Socket::AF_INET
end
it 'uses PF_INET as the address family' do
@sock.connect_address.pfamily.should == Socket::PF_INET
end
it 'uses SOCK_STREAM as the socket type' do
@sock.connect_address.socktype.should == Socket::SOCK_STREAM
end
it 'uses 0 as the protocol' do
@sock.connect_address.protocol.should == 0
end
end
describe 'using a socket bound to ::' do
before do
@sock = Socket.new(:INET6, :STREAM)
@sock.bind(Socket.sockaddr_in(0, '::'))
end
after do
@sock.close
end
it 'returns an Addrinfo' do
@sock.connect_address.should be_an_instance_of(Addrinfo)
end
it 'uses ::1 as the IP address' do
@sock.connect_address.ip_address.should == '::1'
end
it 'uses the correct port number' do
@sock.connect_address.ip_port.should > 0
end
it 'uses AF_INET6 as the address family' do
@sock.connect_address.afamily.should == Socket::AF_INET6
end
it 'uses PF_INET6 as the address family' do
@sock.connect_address.pfamily.should == Socket::PF_INET6
end
it 'uses SOCK_STREAM as the socket type' do
@sock.connect_address.socktype.should == Socket::SOCK_STREAM
end
it 'uses 0 as the protocol' do
@sock.connect_address.protocol.should == 0
end
end
with_feature :unix_socket do
describe 'using an unbound UNIX socket' do
before do
@path = SocketSpecs.socket_path
@server = UNIXServer.new(@path)
@client = UNIXSocket.new(@path)
end
after do
@client.close
@server.close
rm_r(@path)
end
it 'raises SocketError' do
lambda { @client.connect_address }.should raise_error(SocketError)
end
end
describe 'using a bound UNIX socket' do
before do
@path = SocketSpecs.socket_path
@sock = UNIXServer.new(@path)
end
after do
@sock.close
rm_r(@path)
end
it 'returns an Addrinfo' do
@sock.connect_address.should be_an_instance_of(Addrinfo)
end
it 'uses the correct socket path' do
@sock.connect_address.unix_path.should == @path
end
it 'uses AF_UNIX as the address family' do
@sock.connect_address.afamily.should == Socket::AF_UNIX
end
it 'uses PF_UNIX as the protocol family' do
@sock.connect_address.pfamily.should == Socket::PF_UNIX
end
it 'uses SOCK_STREAM as the socket type' do
@sock.connect_address.socktype.should == Socket::SOCK_STREAM
end
it 'uses 0 as the protocol' do
@sock.connect_address.protocol.should == 0
end
end
end
end