示例#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 )
示例#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 )
示例#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 )
示例#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 )
示例#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 )		# Файла на диске нет, а в базе есть - пропажа файла.
示例#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 )
示例#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 )	# Файл на диске совпал с тем, что в базе -  игнорируем.
示例#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 )
示例#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 )	
示例#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 )
示例#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 )
示例#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 )
示例#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 )
示例#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 )
示例#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
示例#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 )
示例#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 )	# Файл, который удалили, и так не было в базе - не обрабатываем его.
示例#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 )