def test_synchronize_catch_node_error(self, *unused):
     # Setup
     request = self.request()
     # Test
     strategy = strategies.ImporterStrategy()
     strategy.synchronize(request)
     self.assertEqual(len(request.summary.errors), 1)
     self.assertEqual(request.summary.errors[0].error_id, error.UnitDownloadError.ERROR_ID)
 def test_synchronize_catch_unknown_exception(self, *unused):
     # Setup
     request = self.request()
     # Test
     strategy = strategies.ImporterStrategy()
     strategy.synchronize(request)
     self.assertEqual(len(request.summary.errors), 1)
     self.assertEqual(request.summary.errors[0].error_id, error.CaughtException.ERROR_ID)
 def test_add_unit_exception(self, *unused):
     # Setup
     request = self.request()
     # Test
     unit = dict(unit_id='abc', type_id='T', unit_key={}, metadata={})
     strategy = strategies.ImporterStrategy()
     strategy.add_unit(request, unit)
     self.assertEqual(len(request.summary.errors), 1)
     self.assertEqual(request.summary.errors[0].error_id, error.AddUnitError.ERROR_ID)
 def test_delete_units_exception(self, *unused):
     # Setup
     request = self.request()
     # Test
     unit = dict(unit_id='abc', type_id='T', unit_key={}, metadata={})
     inventory = UnitInventory(BASE_URL, [], [unit])
     strategy = strategies.ImporterStrategy()
     strategy._delete_units(request, inventory)
     self.assertEqual(len(request.summary.errors), 1)
     self.assertEqual(request.summary.errors[0].error_id, error.DeleteUnitError.ERROR_ID)
 def test_cancel_at_delete_units(self):
     # Setup
     request = self.request(1)
     unit = dict(unit_id='abc', type_id='T', unit_key={}, metadata={})
     inventory = UnitInventory(BASE_URL, [], [unit])
     request.conduit.remove_unit = Mock()
     # Test
     strategy = strategies.ImporterStrategy()
     strategy._delete_units(request, inventory)
     self.assertEqual(request.cancel_event.call_count, 1)
     request.conduit.remove_unit.assert_not_called()
 def test_cancel_at_add_units(self, mock_add_unit):
     # Setup
     request = self.request(1)
     request.downloader.download = Mock()
     unit = dict(unit_id='abc', type_id='T', unit_key={}, metadata={})
     units = [unit]
     manifest = TestManifest(units)
     inventory = UnitInventory(BASE_URL, manifest.get_units(), [])
     # Test
     strategy = strategies.ImporterStrategy()
     strategy._add_units(request, inventory)
     self.assertEqual(request.cancel_event.call_count, 1)
     self.assertEqual(mock_add_unit.call_count, 0)
 def test_needs_update(self):
     # Setup
     path = os.path.join(self.tmp_dir, 'unit_1')
     with open(path, 'w+') as fp:
         fp.write('123')
     size = os.path.getsize(path)
     strategy = strategies.ImporterStrategy()
     # Test
     unit = {constants.STORAGE_PATH: path, constants.FILE_SIZE: size}
     self.assertFalse(strategy._needs_download(unit))
     unit = {constants.STORAGE_PATH: '&&&&&&&', constants.FILE_SIZE: size}
     self.assertTrue(strategy._needs_download(unit))
     unit = {constants.STORAGE_PATH: path, constants.FILE_SIZE: size + 1}
     self.assertTrue(strategy._needs_download(unit))
 def test_cancel_just_before_downloading(self, mock_download):
     # Setup
     unit_id = str(uuid4())
     request = self.request(2)
     request.downloader.download = Mock()
     unit = dict(
         unit_id=unit_id,
         type_id='T',
         unit_key={},
         metadata={},
         storage_path=os.path.join(self.tmp_dir, unit_id),
         relative_path=os.path.join(self.tmp_dir, 'testing', unit_id))
     units = [unit]
     manifest = TestManifest(units)
     inventory = UnitInventory(BASE_URL, manifest.get_units(), [])
     # Test
     strategy = strategies.ImporterStrategy()
     strategy._add_units(request, inventory)
     self.assertEqual(request.cancel_event.call_count, 2)
     self.assertFalse(mock_download.called)
 def test_get_parent_units_manifest_error(self, *unused):
     # Setup
     request = self.request()
     # Test
     strategy = strategies.ImporterStrategy()
     self.assertRaises(error.ManifestDownloadError, strategy._unit_inventory, request)
 def test_get_parent_units_exception(self, *unused):
     # Setup
     request = self.request()
     # Test
     strategy = strategies.ImporterStrategy()
     self.assertRaises(error.GetParentUnitsError, strategy._unit_inventory, request)
 def test_abstract(self):
     # Test
     strategy = strategies.ImporterStrategy()
     # Verify
     self.assertRaises(NotImplementedError, strategy._synchronize, None)