class TestInstalledProductsCache(SubManFixture): def setUp(self): super(TestInstalledProductsCache, self).setUp() self.prod_dir = StubCertificateDirectory([ StubProductCertificate(StubProduct('a-product', name="Product A", provided_tags="product,product-a")), StubProductCertificate(StubProduct('b-product', name="Product B", provided_tags="product,product-b")), StubProductCertificate(StubProduct('c-product', name="Product C", provided_tags="product-c")), ]) inj.provide(inj.PROD_DIR, self.prod_dir) self.mgr = InstalledProductsManager() def test_cert_parsing(self): self.assertEqual(3, len(list(self.mgr.installed.keys()))) self.assertTrue('a-product' in self.mgr.installed) self.assertTrue('b-product' in self.mgr.installed) self.assertTrue('c-product' in self.mgr.installed) self.assertEqual("Product A", self.mgr.installed['a-product']['productName']) self.assertEqual(set(["product", "product-a", "product-b", "product-c"]), set(self.mgr.tags)) def test_load_data(self): cached = { 'products': { 'prod1': 'Product 1', 'prod2': 'Product 2' }, 'tags': ['p1', 'p2'] } mock_file = Mock() mock_file.read = Mock(return_value=json.dumps(cached)) data = self.mgr._load_data(mock_file) self.assertEqual(data, cached) def test_has_changed(self): cached = { 'products': { 'prod1': 'Product 1', 'prod2': 'Product 2' }, 'tags': ['p1', 'p2'] } self.mgr._read_cache = Mock(return_value=cached) self.mgr._cache_exists = Mock(return_value=True) self.assertTrue(self.mgr.has_changed()) def test_has_changed_with_tags_only(self): cached = { 'products': { 'a-product': {'productName': 'Product A', 'productId': 'a-product', 'version': '1.0', 'arch': 'x86_64'}, 'b-product': {'productName': 'Product B', 'productId': 'b-product', 'version': '1.0', 'arch': 'x86_64'}, 'c-product': {'productName': 'Product C', 'productId': 'c-product', 'version': '1.0', 'arch': 'x86_64'} }, 'tags': ['different'] } self.mgr._read_cache = Mock(return_value=cached) self.mgr._cache_exists = Mock(return_value=True) self.assertTrue(self.mgr.has_changed()) def test_old_format_seen_as_invalid(self): cached = { 'a-product': {'productName': 'Product A', 'productId': 'a-product', 'version': '1.0', 'arch': 'x86_64'}, 'b-product': {'productName': 'Product B', 'productId': 'b-product', 'version': '1.0', 'arch': 'x86_64'}, 'c-product': {'productName': 'Product C', 'productId': 'c-product', 'version': '1.0', 'arch': 'x86_64'} } self.mgr._read_cache = Mock(return_value=cached) self.mgr._cache_exists = Mock(return_value=True) self.assertTrue(self.mgr.has_changed()) def test_has_not_changed(self): cached = { 'products': { 'a-product': {'productName': 'Product A', 'productId': 'a-product', 'version': '1.0', 'arch': 'x86_64'}, 'b-product': {'productName': 'Product B', 'productId': 'b-product', 'version': '1.0', 'arch': 'x86_64'}, 'c-product': {'productName': 'Product C', 'productId': 'c-product', 'version': '1.0', 'arch': 'x86_64'} }, 'tags': ['product-a', 'product-b', 'product-c', 'product'] } self.mgr._read_cache = Mock(return_value=cached) self.mgr._cache_exists = Mock(return_value=True) self.assertFalse(self.mgr.has_changed()) def test_update_check_no_change(self): uuid = 'FAKEUUID' uep = Mock() uep.updateConsumer = Mock() self.mgr.has_changed = Mock(return_value=False) self.mgr.write_cache = Mock() self.mgr.update_check(uep, uuid) self.assertEqual(0, uep.updateConsumer.call_count) self.assertEqual(0, self.mgr.write_cache.call_count) def test_update_check_has_changed(self): uuid = 'FAKEUUID' uep = Mock() uep.updateConsumer = Mock() self.mgr.has_changed = Mock(return_value=True) self.mgr.write_cache = Mock() self.mgr.update_check(uep, uuid) expected = ["product", "product-a", "product-b", "product-c"] uep.updateConsumer.assert_called_with(uuid, content_tags=set(expected), installed_products=self.mgr.format_for_server()) self.assertEqual(1, self.mgr.write_cache.call_count) def test_update_check_error_uploading(self): uuid = 'FAKEUUID' uep = Mock() self.mgr.has_changed = Mock(return_value=True) self.mgr.write_cache = Mock() # Throw an exception when trying to upload: uep.updateConsumer = Mock(side_effect=Exception('BOOM!')) self.assertRaises(Exception, self.mgr.update_check, uep, uuid) expected = ["product", "product-a", "product-b", "product-c"] uep.updateConsumer.assert_called_with(uuid, content_tags=set(expected), installed_products=self.mgr.format_for_server()) self.assertEqual(0, self.mgr.write_cache.call_count)
class TestInstalledProductsCache(unittest.TestCase): def setUp(self): self.prod_dir = StubCertificateDirectory([ StubProductCertificate(StubProduct('a-product', name="Product A")), StubProductCertificate(StubProduct('b-product', name="Product B")), StubProductCertificate(StubProduct('c-product', name="Product C")), ]) self.mgr = InstalledProductsManager(self.prod_dir) def test_cert_parsing(self): self.assertEqual(3, len(self.mgr.installed.keys())) self.assertTrue('a-product' in self.mgr.installed) self.assertTrue('b-product' in self.mgr.installed) self.assertTrue('c-product' in self.mgr.installed) self.assertEquals("Product A", self.mgr.installed['a-product']) def test_load_data(self): cached = {'prod1': 'Product 1', 'prod2': 'Product 2'} mock_file = Mock() mock_file.read = Mock(return_value=json.dumps(cached)) data = self.mgr._load_data(mock_file) self.assertEquals(data, cached) def test_has_changed(self): cached = {'prod1': 'Product 1', 'prod2': 'Product 2'} self.mgr._read_cache = Mock(return_value=cached) self.mgr._cache_exists = Mock(return_value=True) self.assertTrue(self.mgr.has_changed()) def test_has_not_changed(self): cached = { 'a-product': 'Product A', 'b-product': 'Product B', 'c-product': 'Product C', } self.mgr._read_cache = Mock(return_value=cached) self.mgr._cache_exists = Mock(return_value=True) self.assertFalse(self.mgr.has_changed()) def test_update_check_no_change(self): uuid = 'FAKEUUID' uep = Mock() uep.updateConsumer = Mock() self.mgr.has_changed = Mock(return_value=False) self.mgr.write_cache = Mock() self.mgr.update_check(uep, uuid) self.assertEquals(0, uep.updateConsumer.call_count) self.assertEquals(0, self.mgr.write_cache.call_count) def test_update_check_has_changed(self): uuid = 'FAKEUUID' uep = Mock() uep.updateConsumer = Mock() self.mgr.has_changed = Mock(return_value=True) self.mgr.write_cache = Mock() self.mgr.update_check(uep, uuid) uep.updateConsumer.assert_called_with( uuid, installed_products=self.mgr.format_for_server()) self.assertEquals(1, self.mgr.write_cache.call_count) def test_update_check_error_uploading(self): uuid = 'FAKEUUID' uep = Mock() self.mgr.has_changed = Mock(return_value=True) self.mgr.write_cache = Mock() # Throw an exception when trying to upload: uep.updateConsumer = Mock(side_effect=Exception('BOOM!')) self.assertRaises(Exception, self.mgr.update_check, uep, uuid) uep.updateConsumer.assert_called_with( uuid, installed_products=self.mgr.format_for_server()) self.assertEquals(0, self.mgr.write_cache.call_count)
class TestInstalledProductsCache(unittest.TestCase): def setUp(self): self.prod_dir = StubCertificateDirectory([ StubProductCertificate(StubProduct('a-product', name="Product A")), StubProductCertificate(StubProduct('b-product', name="Product B")), StubProductCertificate(StubProduct('c-product', name="Product C")), ]) self.mgr = InstalledProductsManager(self.prod_dir) def test_cert_parsing(self): self.assertEqual(3, len(self.mgr.installed.keys())) self.assertTrue('a-product' in self.mgr.installed) self.assertTrue('b-product' in self.mgr.installed) self.assertTrue('c-product' in self.mgr.installed) self.assertEquals("Product A", self.mgr.installed['a-product']['productName']) def test_load_data(self): cached = { 'prod1': 'Product 1', 'prod2': 'Product 2' } mock_file = Mock() mock_file.read = Mock(return_value=json.dumps(cached)) data = self.mgr._load_data(mock_file) self.assertEquals(data, cached) def test_has_changed(self): cached = { 'prod1': 'Product 1', 'prod2': 'Product 2' } self.mgr._read_cache = Mock(return_value=cached) self.mgr._cache_exists = Mock(return_value=True) self.assertTrue(self.mgr.has_changed()) def test_has_not_changed(self): cached = { 'a-product': {'productName': 'Product A', 'productId': 'a-product', 'version': '1.0', 'arch': 'x86_64'}, 'b-product': {'productName': 'Product B', 'productId': 'b-product', 'version': '1.0', 'arch': 'x86_64'}, 'c-product': {'productName': 'Product C', 'productId': 'c-product', 'version': '1.0', 'arch': 'x86_64'} } self.mgr._read_cache = Mock(return_value=cached) self.mgr._cache_exists = Mock(return_value=True) self.assertFalse(self.mgr.has_changed()) def test_update_check_no_change(self): uuid = 'FAKEUUID' uep = Mock() uep.updateConsumer = Mock() self.mgr.has_changed = Mock(return_value=False) self.mgr.write_cache = Mock() self.mgr.update_check(uep, uuid) self.assertEquals(0, uep.updateConsumer.call_count) self.assertEquals(0, self.mgr.write_cache.call_count) def test_update_check_has_changed(self): uuid = 'FAKEUUID' uep = Mock() uep.updateConsumer = Mock() self.mgr.has_changed = Mock(return_value=True) self.mgr.write_cache = Mock() self.mgr.update_check(uep, uuid) uep.updateConsumer.assert_called_with(uuid, installed_products=self.mgr.format_for_server()) self.assertEquals(1, self.mgr.write_cache.call_count) def test_update_check_error_uploading(self): uuid = 'FAKEUUID' uep = Mock() self.mgr.has_changed = Mock(return_value=True) self.mgr.write_cache = Mock() # Throw an exception when trying to upload: uep.updateConsumer = Mock(side_effect=Exception('BOOM!')) self.assertRaises(Exception, self.mgr.update_check, uep, uuid) uep.updateConsumer.assert_called_with(uuid, installed_products=self.mgr.format_for_server()) self.assertEquals(0, self.mgr.write_cache.call_count)
class TestInstalledProductsCache(SubManFixture): def setUp(self): super(TestInstalledProductsCache, self).setUp() self.prod_dir = StubCertificateDirectory( [ StubProductCertificate(StubProduct("a-product", name="Product A")), StubProductCertificate(StubProduct("b-product", name="Product B")), StubProductCertificate(StubProduct("c-product", name="Product C")), ] ) inj.provide(inj.PROD_DIR, self.prod_dir) self.mgr = InstalledProductsManager() def test_cert_parsing(self): self.assertEqual(3, len(self.mgr.installed.keys())) self.assertTrue("a-product" in self.mgr.installed) self.assertTrue("b-product" in self.mgr.installed) self.assertTrue("c-product" in self.mgr.installed) self.assertEquals("Product A", self.mgr.installed["a-product"]["productName"]) def test_load_data(self): cached = {"prod1": "Product 1", "prod2": "Product 2"} mock_file = Mock() mock_file.read = Mock(return_value=json.dumps(cached)) data = self.mgr._load_data(mock_file) self.assertEquals(data, cached) def test_has_changed(self): cached = {"prod1": "Product 1", "prod2": "Product 2"} self.mgr._read_cache = Mock(return_value=cached) self.mgr._cache_exists = Mock(return_value=True) self.assertTrue(self.mgr.has_changed()) def test_has_not_changed(self): cached = { "a-product": {"productName": "Product A", "productId": "a-product", "version": "1.0", "arch": "x86_64"}, "b-product": {"productName": "Product B", "productId": "b-product", "version": "1.0", "arch": "x86_64"}, "c-product": {"productName": "Product C", "productId": "c-product", "version": "1.0", "arch": "x86_64"}, } self.mgr._read_cache = Mock(return_value=cached) self.mgr._cache_exists = Mock(return_value=True) self.assertFalse(self.mgr.has_changed()) def test_update_check_no_change(self): uuid = "FAKEUUID" uep = Mock() uep.updateConsumer = Mock() self.mgr.has_changed = Mock(return_value=False) self.mgr.write_cache = Mock() self.mgr.update_check(uep, uuid) self.assertEquals(0, uep.updateConsumer.call_count) self.assertEquals(0, self.mgr.write_cache.call_count) def test_update_check_has_changed(self): uuid = "FAKEUUID" uep = Mock() uep.updateConsumer = Mock() self.mgr.has_changed = Mock(return_value=True) self.mgr.write_cache = Mock() self.mgr.update_check(uep, uuid) uep.updateConsumer.assert_called_with(uuid, installed_products=self.mgr.format_for_server()) self.assertEquals(1, self.mgr.write_cache.call_count) def test_update_check_error_uploading(self): uuid = "FAKEUUID" uep = Mock() self.mgr.has_changed = Mock(return_value=True) self.mgr.write_cache = Mock() # Throw an exception when trying to upload: uep.updateConsumer = Mock(side_effect=Exception("BOOM!")) self.assertRaises(Exception, self.mgr.update_check, uep, uuid) uep.updateConsumer.assert_called_with(uuid, installed_products=self.mgr.format_for_server()) self.assertEquals(0, self.mgr.write_cache.call_count)