merged cont.
[opensuse:yast-rest-service.git] / webservice / test / unit / account_test.rb
1 #--
2 # Webyast Webservice framework
3 #
4 # Copyright (C) 2009, 2010 Novell, Inc. 
5 #   This library is free software; you can redistribute it and/or modify
6 # it only under the terms of version 2.1 of the GNU Lesser General Public
7 # License as published by the Free Software Foundation. 
8 #
9 #   This library is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 
12 # details. 
13 #
14 #   You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software 
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 #++
18
19 #
20 # Tests for the Account model
21 #
22 require File.join(File.dirname(__FILE__),"..", "test_helper")
23
24 class AccountTest < ActiveSupport::TestCase
25   fixtures :accounts
26   
27   def setup
28     @login = "test_user"
29     @passwd = "secret"
30   end
31   
32   test "bad character in login" do
33     assert_equal false, Account.unix2_chkpwd("'", nil)
34     assert_equal false, Account.unix2_chkpwd("\\", nil)
35   end
36   
37   test "unix2_chkpwd" do
38     @cmd = "/sbin/unix2_chkpwd rpam '#{@login}'"
39     Session::Sh.any_instance.stubs(:execute).with(@cmd, { :stdin => @passwd }).returns(nil)
40     Session::Sh.any_instance.stubs(:get_status).returns(0)
41     assert Account.unix2_chkpwd(@login, @passwd)
42   end
43   
44 #  test "authenticate with rpam" do
45 #    Rpam.expects(:authpam).with(@login, @passwd).returns(true)
46 #    Account.expects(:unix2_chkpwd).never # ensure chkpwd isn't called
47 #    assert Account.authenticate( @login, @passwd )
48 #  end
49   
50   test "authenticate with chkpwd" do
51 #Rpam.expects(:authpam).with(@login, @passwd).returns(false)
52     Account.expects(:unix2_chkpwd).once.returns(true) # ensure chkpwd is called
53     assert Account.authenticate( @login, @passwd )
54   end
55   
56   test "failed authenticate with chkpwd" do
57 #Rpam.expects(:authpam).with(@login, @passwd).returns(false)
58     Account.expects(:unix2_chkpwd).once.returns(false) # ensure chkpwd is called
59     assert !Account.authenticate( @login, @passwd )
60   end
61   
62   test "authenticate saves password" do
63 #Rpam.expects(:authpam).with(@login, @passwd).returns(false)
64     Account.expects(:unix2_chkpwd).once.returns(true)
65     acc = Account.authenticate( @login, @passwd )
66     assert acc
67     assert_equal @login, acc.login
68     assert_equal @passwd, acc.password
69   end
70   
71   test "class encrypt" do
72     s = Account.encrypt "data", "salt"
73     assert s.is_a? String
74     assert_equal 40, s.length # SHA1
75   end
76   
77   test "instance encrypt" do
78 #    Rpam.expects(:authpam).with(@login, @passwd).returns(false)
79     Account.expects(:unix2_chkpwd).once.returns(true)
80     acc = Account.authenticate( @login, @passwd )
81     assert acc
82     s = Account.encrypt "data", acc.salt
83     assert_equal s, acc.encrypt("data")
84   end
85   
86 end