class TestProfileManager(unittest.TestCase): def setUp(self): current_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64")] self.current_profile = self._mock_pkg_profile(current_pkgs) self.profile_mgr = ProfileManager(current_profile=self.current_profile) def test_update_check_no_change(self): uuid = 'FAKEUUID' uep = Mock() uep.updatePackageProfile = Mock() self.profile_mgr.has_changed = Mock(return_value=False) self.profile_mgr.write_cache = Mock() self.profile_mgr.update_check(uep, uuid) self.assertEquals(0, uep.updatePackageProfile.call_count) self.assertEquals(0, self.profile_mgr.write_cache.call_count) def test_update_check_has_changed(self): uuid = 'FAKEUUID' uep = Mock() uep.updatePackageProfile = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() self.profile_mgr.update_check(uep, uuid) uep.updatePackageProfile.assert_called_with(uuid, FACT_MATCHER) self.assertEquals(1, self.profile_mgr.write_cache.call_count) def test_update_check_packages_not_supported(self): uuid = 'FAKEUUID' uep = Mock() uep.supports_resource = Mock(return_value=False) uep.updatePackageProfile = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() self.profile_mgr.update_check(uep, uuid) self.assertEquals(0, uep.updatePackageProfile.call_count) uep.supports_resource.assert_called_with('packages') self.assertEquals(0, self.profile_mgr.write_cache.call_count) def test_update_check_packages_disabled(self): uuid = 'FAKEUUID' uep = Mock() self.profile_mgr._set_report_package_profile(0) uep.updatePackageProfile = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() self.profile_mgr.update_check(uep, uuid) self.assertEquals(0, uep.updatePackageProfile.call_count) uep.supports_resource.assert_called_with('packages') self.assertEquals(0, self.profile_mgr.write_cache.call_count) def test_update_check_error_uploading(self): uuid = 'FAKEUUID' uep = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() # Throw an exception when trying to upload: uep.updatePackageProfile = Mock(side_effect=Exception('BOOM!')) self.assertRaises(Exception, self.profile_mgr.update_check, uep, uuid) uep.updatePackageProfile.assert_called_with(uuid, FACT_MATCHER) self.assertEquals(0, self.profile_mgr.write_cache.call_count) def test_has_changed_no_cache(self): self.profile_mgr._cache_exists = Mock(return_value=False) self.assertTrue(self.profile_mgr.has_changed()) def test_has_changed_no_changes(self): cached_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64")] cached_profile = self._mock_pkg_profile(cached_pkgs) self.profile_mgr._cache_exists = Mock(return_value=True) self.profile_mgr._read_cache = Mock(return_value=cached_profile) self.assertFalse(self.profile_mgr.has_changed()) self.profile_mgr._read_cache.assert_called_with() def test_has_changed(self): cached_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package3", version="3.0.0", release=3, arch="x86_64")] cached_profile = self._mock_pkg_profile(cached_pkgs) self.profile_mgr._cache_exists = Mock(return_value=True) self.profile_mgr._read_cache = Mock(return_value=cached_profile) self.assertTrue(self.profile_mgr.has_changed()) self.profile_mgr._read_cache.assert_called_with() @staticmethod def _mock_pkg_profile(packages): """ Turn a list of package objects into an RPMProfile object. """ dict_list = [] for pkg in packages: dict_list.append(pkg.to_dict()) mock_file = Mock() mock_file.read = Mock(return_value=json.dumps(dict_list)) mock_profile = RPMProfile(from_file=mock_file) return mock_profile
class TestProfileManager(unittest.TestCase): def setUp(self): current_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64")] self.current_profile = self._mock_pkg_profile(current_pkgs) self.profile_mgr = ProfileManager(current_profile=self.current_profile) def test_update_check_no_change(self): uuid = 'FAKEUUID' uep = Mock() uep.updatePackageProfile = Mock() self.profile_mgr.has_changed = Mock(return_value=False) self.profile_mgr.write_cache = Mock() self.profile_mgr.update_check(uep, uuid) self.assertEqual(0, uep.updatePackageProfile.call_count) self.assertEqual(0, self.profile_mgr.write_cache.call_count) def test_update_check_has_changed(self): uuid = 'FAKEUUID' uep = Mock() uep.updatePackageProfile = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() self.profile_mgr.update_check(uep, uuid) uep.updatePackageProfile.assert_called_with(uuid, FACT_MATCHER) self.assertEqual(1, self.profile_mgr.write_cache.call_count) def test_update_check_packages_not_supported(self): uuid = 'FAKEUUID' uep = Mock() uep.supports_resource = Mock(return_value=False) uep.updatePackageProfile = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() self.profile_mgr.update_check(uep, uuid) self.assertEqual(0, uep.updatePackageProfile.call_count) uep.supports_resource.assert_called_with('packages') self.assertEqual(0, self.profile_mgr.write_cache.call_count) def test_update_check_packages_disabled(self): uuid = 'FAKEUUID' uep = Mock() self.profile_mgr._set_report_package_profile(0) uep.updatePackageProfile = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() self.profile_mgr.update_check(uep, uuid) self.assertEqual(0, uep.updatePackageProfile.call_count) uep.supports_resource.assert_called_with('packages') self.assertEqual(0, self.profile_mgr.write_cache.call_count) def test_update_check_error_uploading(self): uuid = 'FAKEUUID' uep = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() # Throw an exception when trying to upload: uep.updatePackageProfile = Mock(side_effect=Exception('BOOM!')) self.assertRaises(Exception, self.profile_mgr.update_check, uep, uuid) uep.updatePackageProfile.assert_called_with(uuid, FACT_MATCHER) self.assertEqual(0, self.profile_mgr.write_cache.call_count) def test_has_changed_no_cache(self): self.profile_mgr._cache_exists = Mock(return_value=False) self.assertTrue(self.profile_mgr.has_changed()) def test_has_changed_no_changes(self): cached_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64")] cached_profile = self._mock_pkg_profile(cached_pkgs) self.profile_mgr._cache_exists = Mock(return_value=True) self.profile_mgr._read_cache = Mock(return_value=cached_profile) self.assertFalse(self.profile_mgr.has_changed()) self.profile_mgr._read_cache.assert_called_with() def test_has_changed(self): cached_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package3", version="3.0.0", release=3, arch="x86_64")] cached_profile = self._mock_pkg_profile(cached_pkgs) self.profile_mgr._cache_exists = Mock(return_value=True) self.profile_mgr._read_cache = Mock(return_value=cached_profile) self.assertTrue(self.profile_mgr.has_changed()) self.profile_mgr._read_cache.assert_called_with() def test_update_check_consumer_uuid_none(self): uuid = None uep = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() res = self.profile_mgr.update_check(uep, uuid) self.assertEqual(0, res) def test_package_json_handles_non_unicode(self): package = Package(name=b'\xf6', version=b'\xf6', release=b'\xf6', arch=b'\xf6', vendor=b'\xf6') data = package.to_dict() json_str = json.dumps(data) # to json data = json.loads(json_str) # and back to an object for attr in ['name', 'version', 'release', 'arch', 'vendor']: self.assertEqual(u'\ufffd', data[attr]) def test_package_json_as_unicode_type(self): # note that the data type at time of writing is bytes, so this is just defensive coding package = Package(name=u'Björk', version=u'Björk', release=u'Björk', arch=u'Björk', vendor=u'Björk') data = package.to_dict() json_str = json.dumps(data) # to json data = json.loads(json_str) # and back to an object for attr in ['name', 'version', 'release', 'arch', 'vendor']: self.assertEqual(u'Björk', data[attr]) def test_package_json_missing_attributes(self): package = Package(name=None, version=None, release=None, arch=None, vendor=None) data = package.to_dict() json_str = json.dumps(data) # to json data = json.loads(json_str) # and back to an object for attr in ['name', 'version', 'release', 'arch', 'vendor']: self.assertEqual(None, data[attr]) @staticmethod def _mock_pkg_profile(packages): """ Turn a list of package objects into an RPMProfile object. """ dict_list = [] for pkg in packages: dict_list.append(pkg.to_dict()) mock_file = Mock() mock_file.read = Mock(return_value=json.dumps(dict_list)) mock_profile = RPMProfile(from_file=mock_file) return mock_profile
class TestProfileManager(unittest.TestCase): def setUp(self): current_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64") ] self.current_profile = self._mock_pkg_profile(current_pkgs) self.profile_mgr = ProfileManager(current_profile=self.current_profile) def test_update_check_no_change(self): uuid = 'FAKEUUID' uep = Mock() uep.updatePackageProfile = Mock() self.profile_mgr.has_changed = Mock(return_value=False) self.profile_mgr.write_cache = Mock() self.profile_mgr.update_check(uep, uuid) self.assertEqual(0, uep.updatePackageProfile.call_count) self.assertEqual(0, self.profile_mgr.write_cache.call_count) def test_update_check_has_changed(self): uuid = 'FAKEUUID' uep = Mock() uep.updatePackageProfile = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() self.profile_mgr.update_check(uep, uuid) uep.updatePackageProfile.assert_called_with(uuid, FACT_MATCHER) self.assertEqual(1, self.profile_mgr.write_cache.call_count) def test_update_check_packages_not_supported(self): uuid = 'FAKEUUID' uep = Mock() uep.supports_resource = Mock(return_value=False) uep.updatePackageProfile = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() self.profile_mgr.update_check(uep, uuid) self.assertEqual(0, uep.updatePackageProfile.call_count) uep.supports_resource.assert_called_with('packages') self.assertEqual(0, self.profile_mgr.write_cache.call_count) def test_update_check_packages_disabled(self): uuid = 'FAKEUUID' uep = Mock() self.profile_mgr._set_report_package_profile(0) uep.updatePackageProfile = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() self.profile_mgr.update_check(uep, uuid) self.assertEqual(0, uep.updatePackageProfile.call_count) uep.supports_resource.assert_called_with('packages') self.assertEqual(0, self.profile_mgr.write_cache.call_count) def test_update_check_error_uploading(self): uuid = 'FAKEUUID' uep = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() # Throw an exception when trying to upload: uep.updatePackageProfile = Mock(side_effect=Exception('BOOM!')) self.assertRaises(Exception, self.profile_mgr.update_check, uep, uuid) uep.updatePackageProfile.assert_called_with(uuid, FACT_MATCHER) self.assertEqual(0, self.profile_mgr.write_cache.call_count) def test_has_changed_no_cache(self): self.profile_mgr._cache_exists = Mock(return_value=False) self.assertTrue(self.profile_mgr.has_changed()) def test_has_changed_no_changes(self): cached_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package2", version="2.0.0", release=2, arch="x86_64") ] cached_profile = self._mock_pkg_profile(cached_pkgs) self.profile_mgr._cache_exists = Mock(return_value=True) self.profile_mgr._read_cache = Mock(return_value=cached_profile) self.assertFalse(self.profile_mgr.has_changed()) self.profile_mgr._read_cache.assert_called_with() def test_has_changed(self): cached_pkgs = [ Package(name="package1", version="1.0.0", release=1, arch="x86_64"), Package(name="package3", version="3.0.0", release=3, arch="x86_64") ] cached_profile = self._mock_pkg_profile(cached_pkgs) self.profile_mgr._cache_exists = Mock(return_value=True) self.profile_mgr._read_cache = Mock(return_value=cached_profile) self.assertTrue(self.profile_mgr.has_changed()) self.profile_mgr._read_cache.assert_called_with() def test_update_check_consumer_uuid_none(self): uuid = None uep = Mock() self.profile_mgr.has_changed = Mock(return_value=True) self.profile_mgr.write_cache = Mock() res = self.profile_mgr.update_check(uep, uuid) self.assertEqual(0, res) @staticmethod def _mock_pkg_profile(packages): """ Turn a list of package objects into an RPMProfile object. """ dict_list = [] for pkg in packages: dict_list.append(pkg.to_dict()) mock_file = Mock() mock_file.read = Mock(return_value=json.dumps(dict_list)) mock_profile = RPMProfile(from_file=mock_file) return mock_profile