# -*- coding: utf-8; -*- import os from unittest import TestCase from unittest.mock import MagicMock, patch, call from wuttamess import util as mod class TestExists(TestCase): def test_basic(self): c = MagicMock() mod.exists(c, '/foo') c.run.assert_called_once_with('test -e /foo', warn=True) class TestHomePath(TestCase): def test_basic(self): c = MagicMock() c.run.return_value.stdout = '/home/foo' path = mod.get_home_path(c, user='foo') self.assertEqual(path, '/home/foo') class TestIsSymlink(TestCase): def test_yes(self): c = MagicMock() c.run.return_value.failed = False self.assertTrue(mod.is_symlink(c, '/foo')) c.run.assert_called_once_with('test -L "$(echo /foo)"', warn=True) def test_no(self): c = MagicMock() c.run.return_value.failed = True self.assertFalse(mod.is_symlink(c, '/foo')) c.run.assert_called_once_with('test -L "$(echo /foo)"', warn=True) class TestMakoRenderer(TestCase): def test_basic(self): c = MagicMock() renderer = mod.mako_renderer(c, env={'machine_is_live': True}) here = os.path.dirname(__file__) path = os.path.join(here, 'files', 'bar', 'baz') rendered = renderer(path, vars={}) self.assertEqual(rendered, 'machine_is_live = True') class TestSetTimezone(TestCase): def test_symlink(self): c = MagicMock() with patch.object(mod, 'is_symlink') as is_symlink: is_symlink.return_value = True mod.set_timezone(c, 'America/Chicago') c.run.assert_has_calls([ call("bash -c 'echo America/Chicago > /etc/timezone'"), ]) c.run.assert_called_with('ln -sf /usr/share/zoneinfo/America/Chicago /etc/localtime') def test_not_symlink(self): c = MagicMock() with patch.object(mod, 'is_symlink') as is_symlink: is_symlink.return_value = False mod.set_timezone(c, 'America/Chicago') c.run.assert_has_calls([ call("bash -c 'echo America/Chicago > /etc/timezone'"), ]) c.run.assert_called_with('cp /usr/share/zoneinfo/America/Chicago /etc/localtime')