merged cont.
[opensuse:yast-rest-service.git] / webyast / test / unit / yast_roles_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 class CurrentLogin
20   attr_reader :login
21   
22   def initialize login
23     @login = login
24   end
25 end
26
27 unless defined? USER_ROLES_CONFIG
28   USER_ROLES_CONFIG = File.join(File.dirname(__FILE__), "..", "fixtures", "yast_user_roles")
29 end
30
31 TESTING_POLKIT = true
32
33 require File.join(File.dirname(__FILE__),"..", "test_helper")
34
35 class YastRolesTest < ActiveSupport::TestCase
36   include YastRoles
37   
38   attr_reader :current_account
39   
40   def setup
41     # FIXME: this needs proper PolKit mocking !
42     @current_account = CurrentLogin.new "root" # be brave
43   end
44     
45   def test_permission_check_trivial
46     assert_raise(NoPermissionException) { permission_check(nil) }
47   end
48   
49   def test_permission_check_no_account
50     @current_account = nil
51     assert_raise(NotLoggedException) { permission_check(nil) }
52   end
53   
54   def test_action_nil
55     assert_raise(NoPermissionException) { permission_check(nil) }
56   end    
57   
58   def test_action_dummy
59     def PolKit.polkit_check(action,login) return :no end
60     assert_raise(NoPermissionException) { permission_check("dummy") }
61   end    
62
63   def test_polkit_override
64     def PolKit.polkit_check(action,login) return :yes if action == "test_polkit_override" end
65     assert permission_check("test_polkit_override")
66   end
67
68   def test_accept_string_polkit
69     def PolKit.polkit_check(action,login) 
70       raise "Polkit accept only string" unless action.instance_of? String
71       return :yes if action == "test_polkit_override"
72     end
73     assert permission_check(:"test_polkit_override")
74   end
75
76   # test/fixtures/yast_user_roles assign "network_admin" role to user "root"
77   def test_role_ok
78     def PolKit.polkit_check(action,login) return :yes if login == "network_admin" end
79 #FIXME    assert permission_check("dummy")
80   end
81   
82   def test_role_not_ok
83     @current_account = CurrentLogin.new "nobody"
84     def PolKit.polkit_check(action,login) return :yes if login == "network_admin" end
85     assert_raise(NoPermissionException) { permission_check("dummy") }
86   end
87 end