123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- # -*- coding: utf-8 -*-
- """
- :codeauthor: Alexander Pyatkin <asp@thexyz.net>
- """
- # Import Python Libs
- from __future__ import absolute_import, print_function, unicode_literals
- # Import Salt Libs
- import salt.states.bower as bower
- from salt.exceptions import CommandExecutionError
- # Import Salt Testing Libs
- from tests.support.mixins import LoaderModuleMockMixin
- from tests.support.mock import MagicMock, patch
- from tests.support.unit import TestCase
- class BowerTestCase(TestCase, LoaderModuleMockMixin):
- """
- Test cases for salt.states.bower
- """
- def setup_loader_modules(self):
- return {bower: {"__opts__": {"test": False}}}
- def test_removed_not_installed(self):
- """
- Test if it returns True when specified package is not installed
- """
- mock = MagicMock(return_value={"underscore": {}})
- with patch.dict(bower.__salt__, {"bower.list": mock}):
- ret = bower.removed("jquery", "/path/to/project")
- expected = {
- "name": "jquery",
- "result": True,
- "comment": "Package 'jquery' is not installed",
- "changes": {},
- }
- self.assertEqual(ret, expected)
- def test_removed_with_error(self):
- """
- Test if returns False when list packages fails
- """
- mock = MagicMock(side_effect=CommandExecutionError)
- with patch.dict(bower.__salt__, {"bower.list": mock}):
- ret = bower.removed("underscore", "/path/to/project")
- expected = {
- "name": "underscore",
- "result": False,
- "comment": "Error removing 'underscore': ",
- "changes": {},
- }
- self.assertEqual(ret, expected)
- def test_removed_existing(self):
- """
- Test if it returns True when specified package is installed and
- uninstall succeeds
- """
- mock_list = MagicMock(return_value={"underscore": {}})
- mock_uninstall = MagicMock(return_value=True)
- with patch.dict(
- bower.__salt__, {"bower.list": mock_list, "bower.uninstall": mock_uninstall}
- ):
- ret = bower.removed("underscore", "/path/to/project")
- expected = {
- "name": "underscore",
- "result": True,
- "comment": "Package 'underscore' was successfully removed",
- "changes": {"underscore": "Removed"},
- }
- self.assertEqual(ret, expected)
- def test_removed_existing_with_error(self):
- """
- Test if it returns False when specified package is installed and
- uninstall fails
- """
- mock_list = MagicMock(return_value={"underscore": {}})
- mock_uninstall = MagicMock(side_effect=CommandExecutionError)
- with patch.dict(
- bower.__salt__, {"bower.list": mock_list, "bower.uninstall": mock_uninstall}
- ):
- ret = bower.removed("underscore", "/path/to/project")
- expected = {
- "name": "underscore",
- "result": False,
- "comment": "Error removing 'underscore': ",
- "changes": {},
- }
- self.assertEqual(ret, expected)
- def test_bootstrap_with_error(self):
- """
- Test if it return False when install packages fails
- """
- mock = MagicMock(side_effect=CommandExecutionError)
- with patch.dict(bower.__salt__, {"bower.install": mock}):
- ret = bower.bootstrap("/path/to/project")
- expected = {
- "name": "/path/to/project",
- "result": False,
- "comment": "Error bootstrapping '/path/to/project': ",
- "changes": {},
- }
- self.assertEqual(ret, expected)
- def test_bootstrap_not_needed(self):
- """
- Test if it returns True when there is nothing to install
- """
- mock = MagicMock(return_value=False)
- with patch.dict(bower.__salt__, {"bower.install": mock}):
- ret = bower.bootstrap("/path/to/project")
- expected = {
- "name": "/path/to/project",
- "result": True,
- "comment": "Directory is already bootstrapped",
- "changes": {},
- }
- self.assertEqual(ret, expected)
- def test_bootstrap_success(self):
- """
- Test if it returns True when install packages succeeds
- """
- mock = MagicMock(return_value=True)
- with patch.dict(bower.__salt__, {"bower.install": mock}):
- ret = bower.bootstrap("/path/to/project")
- expected = {
- "name": "/path/to/project",
- "result": True,
- "comment": "Directory was successfully bootstrapped",
- "changes": {"/path/to/project": "Bootstrapped"},
- }
- self.assertEqual(ret, expected)
- def test_installed_with_error(self):
- """
- Test if it returns False when list packages fails
- """
- mock = MagicMock(side_effect=CommandExecutionError)
- with patch.dict(bower.__salt__, {"bower.list": mock}):
- ret = bower.installed("underscore", "/path/to/project")
- expected = {
- "name": "underscore",
- "result": False,
- "comment": "Error looking up 'underscore': ",
- "changes": {},
- }
- self.assertEqual(ret, expected)
- def test_installed_not_needed(self):
- """
- Test if it returns True when there is nothing to install
- """
- mock = MagicMock(
- return_value={
- "underscore": {"pkgMeta": {"version": "1.7.0"}},
- "jquery": {"pkgMeta": {"version": "2.0.0"}},
- }
- )
- with patch.dict(bower.__salt__, {"bower.list": mock}):
- ret = bower.installed(
- "test", "/path/to/project", ["underscore", "jquery#2.0.0"]
- )
- expected = {
- "name": "test",
- "result": True,
- "comment": (
- "Package(s) 'underscore, jquery#2.0.0'"
- " satisfied by underscore#1.7.0, jquery#2.0.0"
- ),
- "changes": {},
- }
- self.assertEqual(ret, expected)
- def test_installed_new_with_exc(self):
- """
- Test if it returns False when install packages fails (exception)
- """
- mock_list = MagicMock(return_value={})
- mock_install = MagicMock(side_effect=CommandExecutionError)
- with patch.dict(
- bower.__salt__, {"bower.list": mock_list, "bower.install": mock_install}
- ):
- ret = bower.installed("underscore", "/path/to/project")
- expected = {
- "name": "underscore",
- "result": False,
- "comment": "Error installing 'underscore': ",
- "changes": {},
- }
- self.assertEqual(ret, expected)
- def test_installed_new_with_error(self):
- """
- Test if returns False when install packages fails (bower error)
- """
- mock_list = MagicMock(return_value={})
- mock_install = MagicMock(return_value=False)
- with patch.dict(
- bower.__salt__, {"bower.list": mock_list, "bower.install": mock_install}
- ):
- ret = bower.installed("underscore", "/path/to/project")
- expected = {
- "name": "underscore",
- "result": False,
- "comment": "Could not install package(s) 'underscore'",
- "changes": {},
- }
- self.assertEqual(ret, expected)
- def test_installed_success(self):
- """
- Test if it returns True when install succeeds
- """
- mock_list = MagicMock(return_value={})
- mock_install = MagicMock(return_value=True)
- with patch.dict(
- bower.__salt__, {"bower.list": mock_list, "bower.install": mock_install}
- ):
- ret = bower.installed("underscore", "/path/to/project")
- expected = {
- "name": "underscore",
- "result": True,
- "comment": "Package(s) 'underscore' successfully installed",
- "changes": {"new": ["underscore"], "old": []},
- }
- self.assertEqual(ret, expected)
|