Exemplo n.º 1
0
	def test_NEW_file_already_in_db_not_exists( self ):
		self.engine.db.add( file = 'filename', hash = 'xxx' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.NEW
		newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
		ev.action = Event.ACTION.MISSING	# Функция должна обнаружить пропажу файла, так как в базе он есть
		ev.isInDB = True
		self.assertEqual( ev, newEv )
Exemplo n.º 2
0
	def test_MISSING_file_not_in_db_exists( self ):
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.MISSING
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
			exists_test.assert_called_once_with( ev.path )
		ev.action = Event.ACTION.NEW		# Пришло событие об удалении файла, а он есть, добавляем в базу.
		ev.isInDB = False
		ev.info = None
		self.assertEqual( ev, newEv )
Exemplo n.º 3
0
	def test_MISSING_file_already_in_db_exists_bad_hash( self ):
		self.engine.db.add( file = 'filename', hash = 'xxx' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.MISSING
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
			exists_test.assert_called_once_with( ev.path )
		ev.isInDB = True
		ev.action = Event.ACTION.BAD_HASH					# Файл на диске есть, в базе есть, но они не совпали.
		ev.info = self.engine.db.find( file = 'filename' )
		self.assertEqual( ev, newEv )
Exemplo n.º 4
0
	def test_NEW_file_already_in_db_exists_bad_hash( self ):
		self.engine.db.add( file = 'filename', hash = 'xxx' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.NEW
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
			exists_test.assert_called_once_with( ev.path )
		ev.isInDB = True
		ev.action = Event.ACTION.BAD_HASH	# Так как оказывается, что тот файл, который сейчас на диске не совпадает с тем, что в базе.
		ev.info = self.engine.db.find( file = 'filename' )
		self.assertEqual( ev, newEv )
Exemplo n.º 5
0
	def test_MISSING_file_already_in_db_not_exists( self ):
		self.engine.db.add( file = 'filename' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.MISSING
		newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
		ev.isInDB = True
		self.assertEqual( ev, newEv )		# Файла на диске нет, а в базе есть - пропажа файла.
Exemplo n.º 6
0
	def test_UPDATED_file_not_in_db( self ):
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.UPDATED
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
			exists_test.assert_called_once_with( ev.path )
		self.assertEqual( newEv.action, Event.ACTION.NEW )
		self.assertEqual( newEv.isInDB, False )
Exemplo n.º 7
0
	def test_MISSING_file_already_in_db_exists_good_hash( self ):
		self.engine.db.add( file = 'filename', hash = None )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.MISSING
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
			exists_test.assert_called_once_with( ev.path )
		self.assertEqual( Event.ACTION.NOT_PROCESSING, newEv.action )	# Файл на диске совпал с тем, что в базе -  игнорируем.
Exemplo n.º 8
0
	def test_UPDATED_file( self ):
		self.engine.db.add( file = 'filename', hash = 'xxx' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0], 'new_hash' )
		ev.action = Event.ACTION.UPDATED
		self.engine.processEvent( ev )
		elem = self.engine.db.find( hash = 'new_hash' )
		self.assertEqual( len( self.engine.db.find( hash = 'xxx' ) ), 0 )
		self.assertEqual( len( elem ), 1 )
		self.assertEqual( elem[0]['file'], ev.fileName )
Exemplo n.º 9
0
	def test_RENAMED_file_not_in_db( self ):
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.RENAMED
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			new_path = os.path.join( self.DEFAULT_CFG[0], 'new_filename' )
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action, new_path )
			exists_test.assert_called_once_with( ev.path )
		self.assertEqual( Event.ACTION.NEW, newEv.action )	# Файл был переименован, но в базе его нет - новый файл
		self.assertEqual( new_path, newEv.path )	
Exemplo n.º 10
0
	def test_RENAMED_dir( self ):
		ev = Event( '', 'dir', True, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.RENAMED
		with unittest.mock.patch( 'os.path.isdir', return_value = True ) as isdir_test:
			new_path = os.path.join( self.DEFAULT_CFG[0], 'new_dir' )
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action, new_path )
			isdir_test.assert_called_once_with( ev.path )
		self.assertEqual( Event.ACTION.RENAMED, newEv.action )	# Папка была переименована, в базе есть - нужно обновить базу
		self.assertEqual( new_path, newEv.info )
Exemplo n.º 11
0
	def test_NEW_file_not_in_db_exists( self ):
		ev = Event( 'filename', '', False,self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.NEW
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
			exists_test.assert_called_once_with( ev.path )
		ev.isInDB = False
		ev.info = None
		self.assertEqual( ev, newEv )
Exemplo n.º 12
0
	def test_UPDATED_file_already_in_db_diff_hash( self ):
		self.engine.db.add( file = 'filename', hash = 'same' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.UPDATED
		with unittest.mock.patch( 'fileutils.get_hash', return_value = 'same' ) as hash_test:
			with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
				newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
				exists_test.assert_called_once_with( ev.path )
				hash_test.assert_called_once_with( ev.path )
		self.assertEqual( newEv.action, Event.ACTION.NOT_PROCESSING )
Exemplo n.º 13
0
	def test_NEW_file_not_in_db_another_file_in_db_with_same_hash( self ):
		self.engine.db.add( file = 'duplicate', hash = 'xxx' )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.NEW
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			with unittest.mock.patch( 'fileutils.get_hash', return_value = 'xxx' ) as get_hash_patch:
				newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
				get_hash_patch.assert_called_once_with( ev.path )
				exists_test.assert_called_once_with( ev.path )
		self.assertEqual( Event.ACTION.DUPLICATE, newEv.action )		# Файл на диске имеет такой же хэш как и файл в базе - дубликат
		self.assertEqual( self.engine.db.find( file = 'duplicate' ), newEv.info )
Exemplo n.º 14
0
	def test_RENAMED_file_already_in_db( self ):
		self.engine.db.add( file = 'filename', hash = None )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.RENAMED
		with unittest.mock.patch( 'os.path.exists', return_value = True ) as exists_test:
			new_path = os.path.join( self.DEFAULT_CFG[0], 'new_filename' )
			newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action, new_path )
			exists_test.assert_called_once_with( ev.path )
		self.assertEqual( Event.ACTION.RENAMED, newEv.action )	# Файл был переименован, в базе есть - нужно обновить базу
		self.assertEqual( ev.path, newEv.path )
		self.assertEqual( get_file_and_dir( new_path, self.DEFAULT_CFG[0], False ), newEv.info )
Exemplo n.º 15
0
	def construct_event( self, action, d = '', isdir = False, name = 'filename' ):
		ev = Event( name, d, isdir, self.DEFAULT_CFG[0] )
		ev.action = action
		return ev
Exemplo n.º 16
0
	def test_NEW_file_not_in_db_not_exists( self ):
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.NEW
		newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
		self.assertEqual( newEv.action, Event.ACTION.NOT_PROCESSING )
Exemplo n.º 17
0
	def test_MISSING_file_not_in_db_not_exists( self ):
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.MISSING
		newEv = self.engine.prepareEvent( ev.path, self.DEFAULT_CFG[0], ev.action )
		self.assertEqual( newEv.action, Event.ACTION.NOT_PROCESSING )	# Файл, который удалили, и так не было в базе - не обрабатываем его.
Exemplo n.º 18
0
	def test_double_item_in_db( self ):
		self.engine.db.add( file = 'filename', hash = None )
		self.engine.db.add( file = 'filename', hash = None )
		ev = Event( 'filename', '', False, self.DEFAULT_CFG[0] )
		ev.action = Event.ACTION.NEW
		self.assertRaises( RuntimeError, self.engine.prepareEvent, ev.path, self.DEFAULT_CFG[0], ev.action )