Пример #1
0
 def test_file_readable_to_bad_user(self):
     builder = Builder()
     builder.can_read = lambda fn, u, g: True
     builder.can_execute = lambda fn, u, g: True
     file_readable_to = builder.file_readable_to
     self.assertTrue(
         file_readable_to(__file__, 'no-such-user', self.mygroup))
 def test_compute_derived_warns_about_unreadable_changelog(self):
     builder = Builder()
     builder.verbose = True
     builder.file_readable_to = lambda fn, u, g: False
     builder._compute_derived()
     self.assertFalse(builder.vars['CHANGELOG'])
     self.assertEqual(self.stdout.getvalue(),
                      "Skipping changelog view since /root/Changelog is not readable by user www-data\n")
Пример #3
0
 def test_delete_old_files(self, mock_glob, mock_unlink):
     mock_glob.return_value = ['du-2015-11-03.gz', 'du-2015-11-02.gz']
     Builder.DiskUsage().delete_old_files(self.tmpdir,
                                          keep_daily=1,
                                          keep_monthly=0,
                                          keep_yearly=0)
     mock_unlink.assert_called_once_with('du-2015-11-02.gz')
Пример #4
0
 def test_Symlink_skips(self):
     pathname = os.path.join(self.tmpdir, 'subdir', 'symlink')
     self.builder.skip.append(pathname)
     Builder.Symlink('/dev/null').build(pathname, self.builder)
     self.assertEqual(self.stdout.getvalue(),
                      "Skipping %s/subdir/symlink\n" % self.tmpdir)
     self.assertFalse(os.path.exists(pathname))
Пример #5
0
 def test_Symlink(self):
     pathname = os.path.join(self.tmpdir, 'subdir', 'symlink')
     Builder.Symlink('/dev/null').build(pathname, self.builder)
     self.assertEqual(self.stdout.getvalue(),
                      "Created %s/subdir/symlink\n" % self.tmpdir)
     self.assertTrue(os.path.islink(pathname))
     self.assertEqual(os.readlink(pathname), '/dev/null')
Пример #6
0
 def test_Template(self):
     pathname = os.path.join(self.tmpdir, 'subdir', 'index.html')
     Builder.Template('test.html.in').build(pathname, self.builder)
     with open(pathname, 'rb') as f:
         self.assertEqual(f.read(),
                          HTML_MARKER + b'\n<p>This is a test template.\n')
     self.assertEqual(self.stdout.getvalue(),
                      "Created %s/subdir/index.html\n" % self.tmpdir)
 def test_compute_derived(self, mock_datetime):
     mock_datetime.now().__str__.return_value = '2015-11-01 14:35:03'
     builder = Builder({
         'HOSTNAME': 'frog.example.com',
         'SERVER_ALIASES': 'frog frog.lan',
         'DISK_USAGE': '/frog /pond',
         'EXTRA_LINKS': '/foo=also foo\n/bar=also bar',
     })
     builder.file_readable_to = lambda fn, u, g: True
     builder._compute_derived()
     self.assertEqual(builder.vars['SHORTHOSTNAME'], 'frog')
     self.assertEqual(builder.vars['TIMESTAMP'], '2015-11-01 14:35:03')
     self.assertEqual(builder.vars['SERVER_ALIAS_LIST'], ['frog', 'frog.lan'])
     self.assertEqual(builder.vars['EXTRA_LINKS_MAP'],
                      [('/foo', 'also foo'), ('/bar', 'also bar')])
     self.assertEqual(builder.vars['CHANGELOG2HTML_SCRIPT'], CHANGELOG2HTML_SCRIPT)
     self.assertTrue(builder.vars['CHANGELOG'])
Пример #8
0
 def test_Template_with_extra_vars(self):
     pathname = os.path.join(self.tmpdir, 'subdir', 'index.html')
     Builder.Template('test-vars.html.in').build(pathname,
                                                 self.builder,
                                                 extra_vars=dict(pi='3.14'))
     with open(pathname, 'rb') as f:
         self.assertEqual(f.read(), HTML_MARKER + b'\n<p>pi ~= 3.14\n')
     self.assertEqual(self.stdout.getvalue(),
                      "Created %s/subdir/index.html\n" % self.tmpdir)
Пример #9
0
 def test_compute_derived(self, mock_datetime):
     mock_datetime.now().__str__.return_value = '2015-11-01 14:35:03'
     builder = Builder({
         'HOSTNAME': 'frog.example.com',
         'SERVER_ALIASES': 'frog frog.lan',
         'DISK_USAGE': '/frog /pond',
         'EXTRA_LINKS': '/foo=also foo\n/bar=also bar',
     })
     builder.file_readable_to = lambda fn, u, g: True
     builder._compute_derived()
     self.assertEqual(builder.vars['SHORTHOSTNAME'], 'frog')
     self.assertEqual(builder.vars['TIMESTAMP'], '2015-11-01 14:35:03')
     self.assertEqual(builder.vars['SERVER_ALIAS_LIST'],
                      ['frog', 'frog.lan'])
     self.assertEqual(builder.vars['EXTRA_LINKS_MAP'],
                      [('/foo', 'also foo'), ('/bar', 'also bar')])
     self.assertEqual(builder.vars['CHANGELOG2HTML_SCRIPT'],
                      CHANGELOG2HTML_SCRIPT)
     self.assertTrue(builder.vars['CHANGELOG'])
Пример #10
0
 def test_build_fresh_ionice(self, mock_pipeline):
     self.builder.vars['DISK_USAGE_LIST'] = ['/frog']
     self.builder.vars['DISK_USAGE_DELETE_OLD'] = False
     Builder.DiskUsage().build(os.path.join(self.tmpdir, 'du'),
                               self.builder)
     self.assertEqual(
         self.stdout.getvalue().replace(self.tmpdir,
                                        '/var/www/frog.example.com'),
         "Created /var/www/frog.example.com/du/index.html\n"
         "Created /var/www/frog.example.com/du/webtreemap\n"
         "Creating /var/www/frog.example.com/du/frog/du-2015-11-01.gz\n"
         "Creating /var/www/frog.example.com/du/frog/du.js\n"
         "Created /var/www/frog.example.com/du/frog/index.html\n")
     self.assertEqual(mock_pipeline.call_count, 2)
Пример #11
0
 def setUp(self):
     FilesystemTests.setUp(self)
     self.stdout = self.patch('sys.stdout', StringIO())
     self.stderr = self.patch('sys.stderr', StringIO())
     self.builder = Builder({
         'foo': 'two',
         'HOSTNAME': 'frog.example.com'
     },
                            destdir=self.tmpdir)
     self.builder.verbose = True
     self.builder.skip = []
     template_dir = os.path.join(os.path.dirname(__file__), 'templates')
     self.builder.html_lookup.directories.append(
         os.path.normpath(template_dir))
     self.builder.lookup.directories.append(os.path.normpath(template_dir))
Пример #12
0
 def test_compute_derived_warns_about_unreadable_changelog(self):
     builder = Builder()
     builder.verbose = True
     builder.file_readable_to = lambda fn, u, g: False
     builder._compute_derived()
     self.assertFalse(builder.vars['CHANGELOG'])
     self.assertEqual(
         self.stdout.getvalue(),
         "Skipping changelog view since /root/Changelog is not readable by user www-data\n"
     )
Пример #13
0
 def test_build_up_to_date(self, mock_exists, mock_newer, mock_pipeline):
     mock_exists.return_value = True
     mock_newer.return_value = False
     self.builder.vars['DISK_USAGE_LIST'] = ['/frog', '/pond']
     Builder.DiskUsage().build(os.path.join(self.tmpdir, 'du'),
                               self.builder)
     self.assertEqual(
         self.stdout.getvalue().replace(self.tmpdir,
                                        '/var/www/frog.example.com'),
         "Created /var/www/frog.example.com/du/index.html\n"
         "Created /var/www/frog.example.com/du/webtreemap\n"
         "Deleting old snapshots in /var/www/frog.example.com/du/frog\n"
         "Created /var/www/frog.example.com/du/frog/index.html\n"
         "Deleting old snapshots in /var/www/frog.example.com/du/pond\n"
         "Created /var/www/frog.example.com/du/pond/index.html\n")
     self.assertEqual(mock_pipeline.call_count, 0)
Пример #14
0
 def test_can_execute_haha_cant_even(self, mock_stat):
     mock_stat.side_effect = OSError("nope")
     can_execute = Builder().can_execute
     self.assertFalse(can_execute('/root', 1000, 100))
Пример #15
0
 def test_can_execute_other_allows(self, mock_stat):
     mock_stat.return_value.st_uid = 0
     mock_stat.return_value.st_gid = 0
     mock_stat.return_value.st_mode = 0o040755
     can_execute = Builder().can_execute
     self.assertTrue(can_execute('/root', 1000, 100))
Пример #16
0
 def test_can_execute_haha_cant(self, mock_stat):
     mock_stat.return_value.st_uid = 0
     mock_stat.return_value.st_gid = 100
     mock_stat.return_value.st_mode = 0o040700
     can_execute = Builder().can_execute
     self.assertFalse(can_execute('/root', 1000, 100))
Пример #17
0
 def test_can_read_haha_cant(self, mock_stat):
     mock_stat.return_value.st_uid = 0
     mock_stat.return_value.st_gid = 100
     mock_stat.return_value.st_mode = 0o100600
     can_read = Builder().can_read
     self.assertFalse(can_read('/root/Changelog', 1000, 100))
Пример #18
0
 def test_can_read_haha_cant_even(self, mock_stat):
     mock_stat.side_effect = OSError("nope")
     can_read = Builder().can_read
     self.assertFalse(can_read('/root/Changelog', 1000, 100))
Пример #19
0
 def test_file_readable_when_parent_not_executable(self):
     builder = Builder()
     builder.can_execute = lambda fn, u, g: False
     file_readable_to = builder.file_readable_to
     self.assertFalse(file_readable_to(__file__, 'www-data', 'www-data'))
Пример #20
0
 def test_can_read_other_allows(self, mock_stat):
     mock_stat.return_value.st_uid = 0
     mock_stat.return_value.st_gid = 0
     mock_stat.return_value.st_mode = 0o100644
     can_read = Builder().can_read
     self.assertTrue(can_read('/root/Changelog', 1000, 100))
 def test_Builder_from_config_all_defaults(self):
     cp = Builder.ConfigParser()
     Builder.from_config(cp) # should not raise
Пример #22
0
 def test_Builder(self):
     Builder()  # should not raise
Пример #23
0
 def test_get_motd(self):
     get_motd = Builder().get_motd
     self.assertEqual(get_motd("/dev/null"), "")
     self.assertIsNone(get_motd("/no-such-file"))
Пример #24
0
 def test_build_none(self):
     self.builder.vars['DISK_USAGE_LIST'] = []
     Builder.DiskUsage().build(self.tmpdir, self.builder)
     self.assertEqual(self.stdout.getvalue(), "")
Пример #25
0
 def test_Directory(self):
     dirname = os.path.join(self.tmpdir, 'subdir')
     Builder.Directory().build(dirname, self.builder)
     self.assertEqual(self.stdout.getvalue(),
                      "Created %s/subdir/\n" % self.tmpdir)
     self.assertTrue(os.path.isdir(dirname))
 def test_file_readable_to_bad_group(self):
     builder = Builder()
     builder.can_read = lambda fn, u, g: True
     builder.can_execute = lambda fn, u, g: True
     file_readable_to = builder.file_readable_to
     self.assertTrue(file_readable_to(__file__, self.me, 'no-such-group'))
Пример #27
0
 def test_build_quick(self):
     self.builder.vars['DISK_USAGE_LIST'] = ['/pond']
     self.builder.quick = True
     Builder.DiskUsage().build(self.tmpdir, self.builder)
     self.assertNotIn('Deleting old snapshots', self.stdout.getvalue())
     self.assertNotIn('du.js', self.stdout.getvalue())
Пример #28
0
 def test_parse_pairs(self):
     parse_pairs = Builder().parse_pairs
     self.assertEqual(parse_pairs(""), [])
     self.assertEqual(parse_pairs("a=b"), [("a", "b")])
     self.assertEqual(parse_pairs(" a = b "), [("a", "b")])
     self.assertEqual(parse_pairs("a=b\nc = d"), [("a", "b"), ("c", "d")])
Пример #29
0
 def test_Builder_from_config_all_defaults(self):
     cp = Builder.ConfigParser()
     Builder.from_config(cp)  # should not raise
Пример #30
0
 def test_parse_pairs_ignore_everything_else(self):
     parse_pairs = Builder().parse_pairs
     self.assertEqual(parse_pairs("a=b\n# c\nd = e"), [("a", "b"),
                                                       ("d", "e")])
Пример #31
0
 def setUp(self):
     self.builder = Builder.DiskUsage()
     self.builder.collectd_hostname = 'frog.example.com'
     self.builder.hostname = 'frog'
 def test_file_readable_to(self):
     builder = Builder()
     builder.can_read = lambda fn, u, g: True
     builder.can_execute = lambda fn, u, g: True
     file_readable_to = builder.file_readable_to
     self.assertTrue(file_readable_to(__file__, self.me, self.mygroup))
Пример #33
0
 def test_parse_pairs_embedded_equals(self):
     parse_pairs = Builder().parse_pairs
     self.assertEqual(parse_pairs("a = b = c"), [("a", "b = c")])
     self.assertEqual(parse_pairs("a=b = c"), [("a=b", "c")])
     self.assertEqual(parse_pairs("a = b=c"), [("a", "b=c")])
     self.assertEqual(parse_pairs("a=b=c"), [("a", "b=c")])
 def test_file_readable_when_parent_not_executable(self):
     builder = Builder()
     builder.can_execute = lambda fn, u, g: False
     file_readable_to = builder.file_readable_to
     self.assertFalse(file_readable_to(__file__, 'www-data', 'www-data'))
Пример #35
0
 def test_parse_map(self):
     parse_map = Builder().parse_map
     self.assertEqual(parse_map("a = b\nc = d"), {'a': 'b', 'c': 'd'})