~tribaal/+junk/landscape-client-14.12-0ubuntu0.10.04

« back to all changes in this revision

Viewing changes to landscape/lib/tests/test_bootstrap.py

  • Committer: Chris Glass
  • Date: 2014-12-15 06:54:28 UTC
  • Revision ID: chris.glass@canonical.com-20141215065428-e23g6yyvrsvyb656
Imported pristine tarball.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import os
 
2
 
 
3
from landscape.tests.helpers import LandscapeTest
 
4
 
 
5
from landscape.lib.bootstrap import (
 
6
    BootstrapPath, BootstrapFile, BootstrapDirectory, BootstrapList)
 
7
 
 
8
 
 
9
class BootstrapPathTest(LandscapeTest):
 
10
 
 
11
    bootstrap_class = BootstrapPath
 
12
 
 
13
    def setUp(self):
 
14
        super(BootstrapPathTest, self).setUp()
 
15
        self.dirname = self.makeDir()
 
16
        self.path = os.path.join(self.dirname, "$my_var")
 
17
        self.real_path = os.path.join(self.dirname, "my_var_value")
 
18
 
 
19
    def test_username(self):
 
20
        getpwnam = self.mocker.replace("pwd.getpwnam")
 
21
        getpwnam("username").pw_uid
 
22
        self.mocker.result(1234)
 
23
 
 
24
        getuid = self.mocker.replace("os.getuid")
 
25
        getuid()
 
26
        self.mocker.result(0)
 
27
 
 
28
        chown = self.mocker.replace("os.chown")
 
29
        chown(self.real_path, 1234, -1)
 
30
 
 
31
        self.mocker.replay()
 
32
 
 
33
        file = self.bootstrap_class(self.real_path, username="username")
 
34
        file.bootstrap(my_var="my_var_value")
 
35
 
 
36
    def test_group(self):
 
37
        getgrnam = self.mocker.replace("grp.getgrnam")
 
38
        getgrnam("group").gr_gid
 
39
        self.mocker.result(5678)
 
40
 
 
41
        getuid = self.mocker.replace("os.getuid")
 
42
        getuid()
 
43
        self.mocker.result(0)
 
44
 
 
45
        chown = self.mocker.replace("os.chown")
 
46
        chown(self.real_path, -1, 5678)
 
47
 
 
48
        self.mocker.replay()
 
49
 
 
50
        file = self.bootstrap_class(self.path, group="group")
 
51
        file.bootstrap(my_var="my_var_value")
 
52
 
 
53
    def test_mode(self):
 
54
        chmod = self.mocker.replace("os.chmod")
 
55
        chmod(self.real_path, 0644)
 
56
 
 
57
        self.mocker.replay()
 
58
 
 
59
        file = self.bootstrap_class(self.path, mode=0644)
 
60
        file.bootstrap(my_var="my_var_value")
 
61
 
 
62
    def test_all_details(self):
 
63
        getuid = self.mocker.replace("os.getuid")
 
64
        getuid()
 
65
        self.mocker.result(0)
 
66
 
 
67
        getpwnam = self.mocker.replace("pwd.getpwnam")
 
68
        getpwnam("username").pw_uid
 
69
        self.mocker.result(1234)
 
70
 
 
71
        getgrnam = self.mocker.replace("grp.getgrnam")
 
72
        getgrnam("group").gr_gid
 
73
        self.mocker.result(5678)
 
74
 
 
75
        chown = self.mocker.replace("os.chown")
 
76
        chown(self.real_path, 1234, 5678)
 
77
 
 
78
        chmod = self.mocker.replace("os.chmod")
 
79
        chmod(self.real_path, 0644)
 
80
 
 
81
        self.mocker.replay()
 
82
 
 
83
        file = self.bootstrap_class(self.path, "username", "group", 0644)
 
84
        file.bootstrap(my_var="my_var_value")
 
85
 
 
86
    def test_all_details_with_non_root(self):
 
87
        getuid = self.mocker.replace("os.getuid")
 
88
        getuid()
 
89
        self.mocker.result(1000)
 
90
 
 
91
        chmod = self.mocker.replace("os.chmod")
 
92
        chmod(self.real_path, 0644)
 
93
 
 
94
        self.mocker.replay()
 
95
 
 
96
        file = self.bootstrap_class(self.path, "username", "group", 0644)
 
97
        file.bootstrap(my_var="my_var_value")
 
98
 
 
99
 
 
100
class BootstrapCreationTest(BootstrapPathTest):
 
101
 
 
102
    bootstrap_class = BootstrapFile
 
103
 
 
104
    def exists(self, path):
 
105
        return os.path.isfile(path)
 
106
 
 
107
    def test_creation(self):
 
108
        file = self.bootstrap_class(self.path)
 
109
        self.assertFalse(self.exists(self.real_path))
 
110
        file.bootstrap(my_var="my_var_value")
 
111
        self.assertTrue(self.exists(self.real_path))
 
112
 
 
113
 
 
114
class BootstrapFileTest(BootstrapCreationTest):
 
115
 
 
116
    def test_creation_wont_overwrite(self):
 
117
        filename = self.makeFile("CONTENT")
 
118
        file = self.bootstrap_class(filename)
 
119
        file.bootstrap()
 
120
        self.assertEqual(open(filename).read(), "CONTENT")
 
121
 
 
122
 
 
123
class BootstrapDirectoryTest(BootstrapCreationTest):
 
124
 
 
125
    bootstrap_class = BootstrapDirectory
 
126
 
 
127
    def exists(self, path):
 
128
        return os.path.isdir(path)
 
129
 
 
130
    def test_creation_works_with_existing(self):
 
131
        dirname = self.makeDir()
 
132
        dir = self.bootstrap_class(dirname)
 
133
        dir.bootstrap()
 
134
        self.assertTrue(self.exists(dirname))
 
135
 
 
136
    def test_creation_will_fail_correctly(self):
 
137
        filename = self.makeFile("I AM A *FILE*")
 
138
        dir = self.bootstrap_class(filename)
 
139
        self.assertRaises(OSError, dir.bootstrap)
 
140
 
 
141
 
 
142
class BootstrapListTest(LandscapeTest):
 
143
 
 
144
    def test_creation(self):
 
145
        dirname = self.makeDir()
 
146
 
 
147
        list = BootstrapList([BootstrapFile("$dirname/filename"),
 
148
                              BootstrapDirectory("$dirname/dirname"),
 
149
                              BootstrapFile("$dirname/dirname/filename")])
 
150
 
 
151
        list.bootstrap(dirname=dirname)
 
152
 
 
153
        self.assertTrue(os.path.isfile(os.path.join(dirname, "filename")))
 
154
        self.assertTrue(os.path.isdir(os.path.join(dirname, "dirname")))
 
155
        self.assertTrue(os.path.isfile(os.path.join(dirname,
 
156
                                                    "dirname/filename")))