mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 08:58:59 +00:00
179 lines
7.1 KiB
Python
179 lines
7.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
# Import Python Libs
|
|
from __future__ import absolute_import
|
|
import os
|
|
|
|
# Import Salt Testing Libs
|
|
from tests.support.mixins import LoaderModuleMockMixin
|
|
from tests.support.unit import TestCase, skipIf
|
|
from tests.support.mock import (
|
|
MagicMock,
|
|
patch,
|
|
NO_MOCK,
|
|
NO_MOCK_REASON
|
|
)
|
|
|
|
# Import Salt Libs
|
|
import salt.modules.pkgin as pkgin
|
|
|
|
|
|
@skipIf(NO_MOCK, NO_MOCK_REASON)
|
|
class PkginTestCase(TestCase, LoaderModuleMockMixin):
|
|
'''
|
|
Test cases for salt.modules.pkgin
|
|
'''
|
|
def setup_loader_modules(self):
|
|
return {
|
|
pkgin: {
|
|
'__opts__': {
|
|
'cachedir': '/tmp'
|
|
}
|
|
}
|
|
}
|
|
|
|
def test_search(self):
|
|
'''
|
|
Test searching for a package
|
|
'''
|
|
|
|
# Test searching for an available and uninstalled package
|
|
pkgin_out = [
|
|
'somepkg-1.0 Some package description here',
|
|
'',
|
|
'=: package is installed and up-to-date',
|
|
'<: package is installed but newer version is available',
|
|
'>: installed package has a greater version than available package'
|
|
]
|
|
|
|
pkgin__get_version_mock = MagicMock(return_value=['0', '9', '0'])
|
|
pkgin__check_pkgin_mock = MagicMock(return_value='/opt/pkg/bin/pkgin')
|
|
pkgin_search_cmd = MagicMock(return_value=os.linesep.join(pkgin_out))
|
|
|
|
with patch('salt.modules.pkgin._get_version', pkgin__get_version_mock), \
|
|
patch('salt.modules.pkgin._check_pkgin', pkgin__check_pkgin_mock), \
|
|
patch.dict(pkgin.__salt__, {'cmd.run': pkgin_search_cmd}):
|
|
self.assertDictEqual(pkgin.search('somepkg'), {'somepkg': '1.0'})
|
|
|
|
# Test searching for an available and installed package
|
|
pkgin_out = [
|
|
'somepkg-1.0 = Some package description here',
|
|
'',
|
|
'=: package is installed and up-to-date',
|
|
'<: package is installed but newer version is available',
|
|
'>: installed package has a greater version than available package'
|
|
]
|
|
|
|
pkgin_search_cmd = MagicMock(return_value=os.linesep.join(pkgin_out))
|
|
|
|
with patch('salt.modules.pkgin._get_version', pkgin__get_version_mock), \
|
|
patch('salt.modules.pkgin._check_pkgin', pkgin__check_pkgin_mock), \
|
|
patch.dict(pkgin.__salt__, {'cmd.run': pkgin_search_cmd}):
|
|
self.assertDictEqual(pkgin.search('somepkg'), {'somepkg': '1.0'})
|
|
|
|
def test_latest_version(self):
|
|
'''
|
|
Test getting the latest version of a package
|
|
'''
|
|
|
|
# Test getting the latest version of an uninstalled package
|
|
pkgin_out = [
|
|
'somepkg-1.0;;Some package description here',
|
|
'',
|
|
'=: package is installed and up-to-date',
|
|
'<: package is installed but newer version is available',
|
|
'>: installed package has a greater version than available package'
|
|
]
|
|
|
|
pkgin__get_version_mock = MagicMock(return_value=['0', '9', '0'])
|
|
pkgin__check_pkgin_mock = MagicMock(return_value='/opt/pkg/bin/pkgin')
|
|
pkgin_refresh_db_mock = MagicMock(return_value=True)
|
|
pkgin_search_cmd = MagicMock(return_value=os.linesep.join(pkgin_out))
|
|
|
|
with patch('salt.modules.pkgin.refresh_db', pkgin_refresh_db_mock), \
|
|
patch('salt.modules.pkgin._get_version', pkgin__get_version_mock), \
|
|
patch('salt.modules.pkgin._check_pkgin', pkgin__check_pkgin_mock), \
|
|
patch.dict(pkgin.__salt__, {'cmd.run': pkgin_search_cmd}):
|
|
self.assertEqual(pkgin.latest_version('somepkg'), '1.0')
|
|
|
|
# Test getting the latest version of an installed package
|
|
pkgin_out = [
|
|
'somepkg-1.1;<;Some package description here',
|
|
'',
|
|
'=: package is installed and up-to-date',
|
|
'<: package is installed but newer version is available',
|
|
'>: installed package has a greater version than available package'
|
|
]
|
|
|
|
pkgin_refresh_db_mock = MagicMock(return_value=True)
|
|
pkgin_search_cmd = MagicMock(return_value=os.linesep.join(pkgin_out))
|
|
|
|
with patch('salt.modules.pkgin.refresh_db', pkgin_refresh_db_mock), \
|
|
patch('salt.modules.pkgin._get_version', pkgin__get_version_mock), \
|
|
patch('salt.modules.pkgin._check_pkgin', pkgin__check_pkgin_mock), \
|
|
patch.dict(pkgin.__salt__, {'cmd.run': pkgin_search_cmd}):
|
|
self.assertEqual(pkgin.latest_version('somepkg'), '1.1')
|
|
|
|
# Test getting the latest version of a package that is already installed
|
|
# and is already at the latest version
|
|
pkgin_out = [
|
|
'somepkg-1.2;=;Some package description here',
|
|
'',
|
|
'=: package is installed and up-to-date',
|
|
'<: package is installed but newer version is available',
|
|
'>: installed package has a greater version than available package'
|
|
]
|
|
|
|
pkgin_refresh_db_mock = MagicMock(return_value=True)
|
|
pkgin_search_cmd = MagicMock(return_value=os.linesep.join(pkgin_out))
|
|
|
|
with patch('salt.modules.pkgin.refresh_db', pkgin_refresh_db_mock), \
|
|
patch('salt.modules.pkgin._get_version', pkgin__get_version_mock), \
|
|
patch('salt.modules.pkgin._check_pkgin', pkgin__check_pkgin_mock), \
|
|
patch.dict(pkgin.__salt__, {'cmd.run': pkgin_search_cmd}):
|
|
self.assertEqual(pkgin.latest_version('somepkg'), '1.2')
|
|
|
|
# Test getting the latest version of a bogus package
|
|
pkgin_out = 'No results found for ^boguspkg$'
|
|
|
|
pkgin_refresh_db_mock = MagicMock(return_value=True)
|
|
pkgin_search_cmd = MagicMock(return_value=pkgin_out)
|
|
|
|
with patch('salt.modules.pkgin.refresh_db', pkgin_refresh_db_mock), \
|
|
patch('salt.modules.pkgin._get_version', pkgin__get_version_mock), \
|
|
patch('salt.modules.pkgin._check_pkgin', pkgin__check_pkgin_mock), \
|
|
patch.dict(pkgin.__salt__, {'cmd.run': pkgin_search_cmd}):
|
|
self.assertEqual(pkgin.latest_version('boguspkg'), {})
|
|
|
|
def test_file_dict(self):
|
|
'''
|
|
Test that file_dict doesn't crash
|
|
'''
|
|
pkg_info_stdout = [
|
|
'/opt/pkg/bin/pkgin',
|
|
'/opt/pkg/man/man1/pkgin.1',
|
|
'/opt/pkg/share/examples/pkgin/preferred.conf.example',
|
|
'/opt/pkg/share/examples/pkgin/repositories.conf.example'
|
|
]
|
|
|
|
pkg_info_out = {
|
|
'pid': 1234,
|
|
'retcode': 0,
|
|
'stderr': '',
|
|
'stdout': os.linesep.join(pkg_info_stdout)
|
|
}
|
|
|
|
pkg_info_cmd = MagicMock(return_value=pkg_info_out)
|
|
|
|
with patch.dict(pkgin.__salt__, {'cmd.run_all': pkg_info_cmd}):
|
|
self.assertDictEqual(pkgin.file_dict('pkgin'), {
|
|
'files': {
|
|
'pkgin': [
|
|
'/opt/pkg/bin/pkgin',
|
|
'/opt/pkg/man/man1/pkgin.1',
|
|
'/opt/pkg/share/examples/pkgin/preferred.conf.example',
|
|
'/opt/pkg/share/examples/pkgin/repositories.conf.example'
|
|
]
|
|
}
|
|
})
|