48 lines
991 B
Ruby
48 lines
991 B
Ruby
|
require 'em_test_helper'
|
||
|
|
||
|
|
||
|
class TestSASL < Test::Unit::TestCase
|
||
|
|
||
|
# SASL authentication is usually done with UNIX-domain sockets, but
|
||
|
# we'll use TCP so this test will work on Windows. As far as the
|
||
|
# protocol handlers are concerned, there's no difference.
|
||
|
|
||
|
TestUser,TestPsw = "someone", "password"
|
||
|
|
||
|
class SaslServer < EM::Connection
|
||
|
include EM::Protocols::SASLauth
|
||
|
def validate usr, psw, sys, realm
|
||
|
usr == TestUser and psw == TestPsw
|
||
|
end
|
||
|
end
|
||
|
|
||
|
class SaslClient < EM::Connection
|
||
|
include EM::Protocols::SASLauthclient
|
||
|
end
|
||
|
|
||
|
def setup
|
||
|
@port = next_port
|
||
|
end
|
||
|
|
||
|
def test_sasl
|
||
|
resp = nil
|
||
|
EM.run {
|
||
|
EM.start_server( "127.0.0.1", @port, SaslServer )
|
||
|
|
||
|
c = EM.connect( "127.0.0.1", @port, SaslClient )
|
||
|
d = c.validate?( TestUser, TestPsw )
|
||
|
d.timeout 1
|
||
|
d.callback {
|
||
|
resp = true
|
||
|
EM.stop
|
||
|
}
|
||
|
d.errback {
|
||
|
resp = false
|
||
|
EM.stop
|
||
|
}
|
||
|
}
|
||
|
assert_equal( true, resp )
|
||
|
end
|
||
|
|
||
|
end
|