1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
#--
# =============================================================================
# Copyright (c) 2004,2005 Jamis Buck (jamis@37signals.com)
# All rights reserved.
#
# This source file is distributed as part of the Net::SSH Secure Shell Client
# library for Ruby. This file (and the library as a whole) may be used only as
# allowed by either the BSD license, or the Ruby license (or, by association
# with the Ruby license, the GPL). See the "doc" subdirectory of the Net::SSH
# distribution for the texts of these licenses.
# -----------------------------------------------------------------------------
# net-ssh website : http://net-ssh.rubyforge.org
# project website: http://rubyforge.org/projects/net-ssh
# =============================================================================
#++
$:.unshift "#{File.dirname(__FILE__)}/../../../lib"
require 'net/ssh/userauth/methods/password'
require 'net/ssh/util/buffer'
require 'test/unit'
require 'ostruct'
class TC_Methods_Password < Test::Unit::TestCase
class Buffers
def writer
Net::SSH::Util::WriterBuffer.new
end
end
class Messenger
attr_reader :data
attr_reader :messages
def initialize
@data = []
@messages = []
end
def send_message( msg )
@messages << msg.to_s
end
def wait_for_message
@data.shift
end
end
def setup
buffers = Buffers.new
@messenger = Messenger.new
@password = Net::SSH::UserAuth::Methods::Password.new( buffers )
@password.messenger = @messenger
end
def test_authenticate_no_password
assert !@password.authenticate( "test", "test_user" )
assert @messenger.messages.empty?
end
def test_authenticate_success
@messenger.data << OpenStruct.new( :message_type => 52 )
assert @password.authenticate( "test", "test_user", :password => "passwd" )
assert_equal 1, @messenger.messages.length
assert_equal "#{50.chr}\0\0\0\11test_user\0\0\0\4test\0\0\0\10password\0\0\0\0\6passwd",
@messenger.messages.last
end
def test_authenticate_failure
@messenger.data << OpenStruct.new( :message_type => 51 )
assert !@password.authenticate( "test", "test_user", :password => "passwd" )
assert !@messenger.messages.empty?
end
def test_authenticate_passwd_changereq
@messenger.data << OpenStruct.new( :message_type => 60 )
assert !@password.authenticate( "test", "test_user", :password => "passwd" )
assert !@messenger.messages.empty?
end
def test_authenticate_bad_reply
@messenger.data << OpenStruct.new( :message_type => 0 )
assert_raise( Net::SSH::Exception ) do
@password.authenticate( "test", "test_user", :password=>"passwd" )
end
end
end
|