summaryrefslogtreecommitdiffstats
path: root/tests/pyanaconda_test/users_test.py
blob: c457ef762e231598e6da77b90b4f65c66bb40a1b (plain)
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/usr/bin/python

import mock
import sys

GIDNUMBER = 'pw_gid'
HOMEDIRECTORY = 'pw_dir'

class UsersTest(mock.TestCase):
    def setUp(self):
        self.setupModules(["_isys", "block", "ConfigParser"])

        self.fs = mock.DiskIO()
        self.anaconda = mock.Mock()
        self.anaconda.security.auth.find.return_value = -1

        import pyanaconda.users
        pyanaconda.users.log = mock.Mock()
        pyanaconda.users.iutil = mock.Mock()
        pyanaconda.users.iutil.mkdirChain = mock.Mock()

        pyanaconda.users.os = mock.Mock()
        pyanaconda.users.os.fork.return_value=False
        pyanaconda.users.os.waitpid.return_value=(1, 1)
        pyanaconda.users.os.WEXITSTATUS.return_value=0

        pyanaconda.users.libuser.admin = mock.Mock()
        pyanaconda.users.libuser.GIDNUMBER = GIDNUMBER
        pyanaconda.users.libuser.HOMEDIRECTORY = HOMEDIRECTORY
        pyanaconda.users.libuser.admin().lookupGroupByName.return_value = False
        pyanaconda.users.libuser.admin().lookupUserByName.return_value = False
        pyanaconda.users.libuser.admin().initGroup().get.return_value = ['']
        pyanaconda.users.libuser.admin().initGroup().reset_mock()
        pyanaconda.users.libuser.admin().reset_mock()

    def tearDown(self):
        self.tearDownModules()

    def create_group_test(self):
        import pyanaconda.users

        GROUP = 'Group'
        GID = 100
        group_dict = {  "name" : GROUP,
                        "gid" : GID,
                        "root" : ""
                    }

        usr = pyanaconda.users.Users(self.anaconda)
        self.assertTrue(usr.createGroup(GROUP, **group_dict))

        methods = pyanaconda.users.libuser.admin().method_calls[:]
        try:
            if methods[2][0] == 'addGroup':
                methods.pop()
        except:
            pass

        self.assertEqual(methods,
            [('lookupGroupByName', (GROUP,), {}), ('initGroup', (GROUP,), {}),])

        self.assertEqual(
            pyanaconda.users.libuser.admin().initGroup().method_calls,
            [('set', (GIDNUMBER, GID), {})])

    def create_user_test(self):
        import pyanaconda.users

        USER = 'TestUser'
        PASS = 'abcde'
        user_dict = {   "name" : USER,
                        "password" : PASS,
                        "groups" : [],
                        "homedir" : "",
                        "isCrypted" : False,
                        "shell" : "",
                        "uid" : None,
                        "root" : ""
                    }

        usr = pyanaconda.users.Users(self.anaconda)
        self.assertTrue(usr.createUser(USER, **user_dict))

        self.assertTrue(pyanaconda.users.iutil.mkdirChain.called)
        methods = [x[0] for x in pyanaconda.users.libuser.admin().method_calls]

        self.assertEqual(methods,
            ['lookupUserByName', 'initUser', 'initGroup', 'addUser','addGroup',
             'setpassUser', 'lookupGroupByName'])

        self.assertEqual(pyanaconda.users.libuser.admin().initUser.call_args_list,
            [((USER,), {})])

        self.assertEqual(pyanaconda.users.libuser.admin().initGroup.call_args_list,
            [((USER,), {})])

        self.assertEqual(pyanaconda.users.libuser.admin().initUser().method_calls,
            [('set', (GIDNUMBER, ['']), {}),
            ('set', (HOMEDIRECTORY, '/home/%s' % USER), {})]
        )

        self.assertEqual(pyanaconda.users.libuser.admin().initGroup().method_calls,
            [('get', (GIDNUMBER,), {})])

    def check_user_exists_test(self):
        import pyanaconda.users

        USER = 'TestUser'

        usr = pyanaconda.users.Users(self.anaconda)
        self.assertTrue(usr.checkUserExists(USER, root=''))
        self.assertEqual(pyanaconda.users.libuser.admin().method_calls,
            [('lookupUserByName', (USER,), {})])

    def get_pass_algo_md5_test(self):
        import pyanaconda.users
        usr = pyanaconda.users.Users(self.anaconda)
        self.assertEqual(usr.getPassAlgo(), None)

    def set_user_password_test(self):
        import pyanaconda.users

        USER = 'TestUser'
        PASS = 'abcde'
        CRYPTED = False
        LOCK = False

        usr = pyanaconda.users.Users(self.anaconda)
        usr.setUserPassword(USER, PASS, CRYPTED, LOCK)

        methods = [x[0] for x in pyanaconda.users.libuser.admin().method_calls]
        self.assertEqual(methods,
            ['lookupUserByName', 'setpassUser', 'modifyUser'])

    def set_root_password_test(self):
        import pyanaconda.users

        usr = pyanaconda.users.Users(self.anaconda)
        usr.setRootPassword()
        methods = [x[0] for x in pyanaconda.users.libuser.admin().method_calls]
        self.assertEqual(methods,
            ['lookupUserByName', 'setpassUser', 'modifyUser'])