def test_system_importer_file_csv_cron_wrong_type(self): """ test importer view """ # change config set_csv_import_path(os.path.join(BASE_DIR, 'dfirtrack_main/tests/system_importer/system_importer_file_csv_files')) # change config set_csv_import_filename('system_importer_file_csv_testfile_04_wrong_type.png') # execute cron job / scheduled task system_cron() # login testuser self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual(str(response.context['user']), 'testuser_system_importer_file_csv_check_content_file_type') self.assertEqual(messages[0].message, '[Scheduled task CSV system importer] Wrong file type for CSV import. Check config or file system!') self.assertEqual(messages[0].level_tag, 'error') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual(messages[0].message, '[Scheduled task CSV system importer] Wrong file type for CSV import. Check config or file system!') self.assertEqual(messages[0].level_tag, 'error')
def test_system_importer_file_csv_complete_overwrite_cron(self): """test importer view""" # compare before action - systems / attributes self = pre_compare_system_and_attributes_csv(self) # change config set_csv_import_filename( 'system_importer_file_csv_testfile_41_complete_overwrite.csv') # change config set_config_complete_attributes_csv() # change config set_config_complete_overwrite_csv() # mock timezone.now() t_1 = datetime(2021, 3, 17, 19, 30, tzinfo=timezone.utc) with patch.object(timezone, 'now', return_value=t_1): # execute cron job / scheduled task system_cron() # login testuser self.client.login( username='******', password='******', ) # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 1 self.assertEqual( str(response.context['user']), 'testuser_system_importer_file_csv_complete_overwrite', ) self.assertEqual( messages[0].message, 'System CSV importer: created: 0 | updated: 3 | skipped: 0 | multiple: 0 [2021-03-17 19:30:00 - 2021-03-17 19:30:00]', ) self.assertEqual(messages[0].level_tag, 'success') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 2 self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, 'System CSV importer: created: 0 | updated: 3 | skipped: 0 | multiple: 0 [2021-03-17 19:30:00 - 2021-03-17 19:30:00]', ) self.assertEqual(messages[0].level_tag, 'success') # compare - systems / attributes self = compare_system_and_attributes_csv(self)
def test_system_importer_file_csv_complete_preserve_cron(self): """test importer view""" # compare before action - systems / attributes self = pre_compare_system_and_attributes_csv(self) # change config set_csv_import_filename( 'system_importer_file_csv_testfile_42_complete_preserve.csv' ) # change config set_config_complete_attributes_csv() # change config set_config_complete_preserve_csv() # mock timezone.now() t_1 = datetime(2021, 3, 20, 18, 30, tzinfo=timezone.utc) with patch.object(timezone, 'now', return_value=t_1): # execute cron job / scheduled task system_cron() # login testuser self.client.login( username='******', password='******', ) # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 1 self.assertEqual( str(response.context['user']), 'testuser_system_importer_file_csv_complete_preserve', ) self.assertEqual( messages[0].message, 'System CSV importer: created: 0 | updated: 3 | skipped: 0 | multiple: 0 [2021-03-20 18:30:00 - 2021-03-20 18:30:00]', ) self.assertEqual(messages[0].level_tag, 'success') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 2 self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, 'System CSV importer: created: 0 | updated: 3 | skipped: 0 | multiple: 0 [2021-03-20 18:30:00 - 2021-03-20 18:30:00]', ) self.assertEqual(messages[0].level_tag, 'success') # compare - systems / attributes self = compare_system_and_attributes_csv(self)
def test_system_importer_file_csv_messages_cron_many_systems_skip(self): """test importer view""" # create systems create_system('system_csv_12_001') create_system('system_csv_12_002') create_system('system_csv_12_003') # change config set_csv_import_filename( 'system_importer_file_csv_testfile_12_messages_many_systems.csv' ) # change config set_csv_skip_existing_system(True) # mock timezone.now() t_7 = datetime(2021, 3, 7, 11, 35, tzinfo=timezone.utc) with patch.object(timezone, 'now', return_value=t_7): # execute cron job / scheduled task system_cron() # login testuser self.client.login( username='******', password='******', ) # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual( str(response.context['user']), 'testuser_system_importer_file_csv_messages' ) self.assertEqual( messages[0].message, 'System CSV importer: created: 0 | updated: 0 | skipped: 3 | multiple: 0 [2021-03-07 11:35:00 - 2021-03-07 11:35:00]', ) self.assertEqual(messages[0].level_tag, 'success') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, 'System CSV importer: created: 0 | updated: 0 | skipped: 3 | multiple: 0 [2021-03-07 11:35:00 - 2021-03-07 11:35:00]', ) self.assertEqual(messages[0].level_tag, 'success')
def test_system_importer_file_csv_check_content_file_system_cron_file_no_read_permission( self, ): """test importer view""" # get timestamp string t1 = timezone.now().strftime('%Y%m%d_%H%M%S') # set file system attributes csv_import_path = '/tmp' csv_import_filename = f'{t1}_cron_no_read_permission.csv' # create file create_file_no_read_permission(csv_import_path, csv_import_filename) # change config set_csv_import_path(csv_import_path) # change config set_csv_import_filename(csv_import_filename) # execute cron job / scheduled task system_cron() # login testuser self.client.login( username= '******', password='******', ) # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual( str(response.context['user']), 'testuser_system_importer_file_csv_check_content_file_system', ) self.assertEqual( messages[0].message, '[Scheduled task CSV system importer] No read permission for CSV import file. Check config or file system!', ) self.assertEqual(messages[0].level_tag, 'error') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, '[Scheduled task CSV system importer] No read permission for CSV import file. Check config or file system!', ) self.assertEqual(messages[0].level_tag, 'error')
def test_system_importer_file_csv_check_attributes_cron_faulty_attributes( self): """test importer view""" # change config set_config_check_attributes_csv() # change config set_csv_import_filename( 'system_importer_file_csv_testfile_32_faulty_attributes.csv') # mock timezone.now() t_2 = datetime(2021, 3, 8, 18, 10, tzinfo=timezone.utc) with patch.object(timezone, 'now', return_value=t_2): # execute cron job / scheduled task system_cron() # login testuser self.client.login( username='******', password='******', ) # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 1 self.assertEqual( str(response.context['user']), 'testuser_system_importer_file_csv_check_attributes', ) self.assertEqual( messages[0].message, 'System CSV importer: created: 4 | updated: 0 | skipped: 0 | multiple: 0 [2021-03-08 18:10:00 - 2021-03-08 18:10:00]', ) self.assertEqual(messages[0].level_tag, 'success') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 2 self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, 'System CSV importer: created: 4 | updated: 0 | skipped: 0 | multiple: 0 [2021-03-08 18:10:00 - 2021-03-08 18:10:00]', ) self.assertEqual(messages[0].level_tag, 'success') # compare - systems / attributes self = compare_system_and_attributes_csv(self)
def test_system_importer_file_csv_complete_attributes_database_cron(self): """test importer view""" # change config set_config_complete_attributes_database() # change config set_csv_import_filename( 'system_importer_file_csv_testfile_08_complete_database.csv' ) # mock timezone.now() t_3 = datetime(2021, 3, 8, 18, 15, tzinfo=timezone.utc) with patch.object(timezone, 'now', return_value=t_3): # execute cron job / scheduled task system_cron() # login testuser self.client.login( username='******', password='******', ) # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 1 self.assertEqual( str(response.context['user']), 'testuser_system_importer_file_csv_complete_attributes_database', ) self.assertEqual( messages[0].message, 'System CSV importer: created: 4 | updated: 0 | skipped: 0 | multiple: 0 [2021-03-08 18:15:00 - 2021-03-08 18:15:00]', ) self.assertEqual(messages[0].level_tag, 'success') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 2 self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, 'System CSV importer: created: 4 | updated: 0 | skipped: 0 | multiple: 0 [2021-03-08 18:15:00 - 2021-03-08 18:15:00]', ) self.assertEqual(messages[0].level_tag, 'success') # compare - systems / attributes self = compare_system_and_attributes_database(self)
def test_system_importer_file_csv_complete_attributes_csv_cron(self): """ test importer view """ # change config set_csv_import_filename( 'system_importer_file_csv_testfile_07_complete_csv.csv') # change config set_config_complete_attributes_csv() # mock timezone.now() t_4 = datetime(2021, 3, 6, 18, 14, tzinfo=timezone.utc) with patch.object(timezone, 'now', return_value=t_4): # execute cron job / scheduled task system_cron() # login testuser self.client.login( username= '******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 1 self.assertEqual( str(response.context['user']), 'testuser_system_importer_file_csv_complete_attributes_csv') self.assertEqual( messages[0].message, 'System CSV importer: created: 3 | updated: 0 | skipped: 0 | multiple: 0 [2021-03-06 18:14:00 - 2021-03-06 18:14:00]' ) self.assertEqual(messages[0].level_tag, 'success') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 2 self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, 'System CSV importer: created: 3 | updated: 0 | skipped: 0 | multiple: 0 [2021-03-06 18:14:00 - 2021-03-06 18:14:00]' ) self.assertEqual(messages[0].level_tag, 'success') # compare - systems / attributes self = compare_system_and_attributes_csv(self)
def test_system_importer_file_csv_check_content_file_system_cron_file_empty( self): """test importer view""" # change config set_csv_import_path( os.path.join( BASE_DIR, 'dfirtrack_main/tests/system_importer/system_importer_file_csv_files/', )) # change config set_csv_import_filename( 'system_importer_file_csv_testfile_06_empty.csv') # execute cron job / scheduled task system_cron() # login testuser self.client.login( username= '******', password='******', ) # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual( str(response.context['user']), 'testuser_system_importer_file_csv_check_content_file_system', ) self.assertEqual( messages[0].message, '[Scheduled task CSV system importer] CSV import file is empty. Check config or file system!', ) self.assertEqual(messages[0].level_tag, 'error') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, '[Scheduled task CSV system importer] CSV import file is empty. Check config or file system!', ) self.assertEqual(messages[0].level_tag, 'error')
def test_system_importer_file_csv_cron_tag_remove_none(self): """test importer view""" # change config set_config_tag_remove_none() # mock timezone.now() t_3 = datetime(2021, 3, 26, 18, 45, tzinfo=timezone.utc) with patch.object(timezone, 'now', return_value=t_3): # execute cron job / scheduled task system_cron() # login testuser self.client.login( username='******', password='******', ) # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 1 self.assertEqual( str(response.context['user']), 'testuser_system_importer_file_csv_tag_removal', ) self.assertEqual( messages[0].message, 'System CSV importer: created: 0 | updated: 3 | skipped: 0 | multiple: 0 [2021-03-26 18:45:00 - 2021-03-26 18:45:00]', ) self.assertEqual(messages[0].level_tag, 'success') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 2 self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, 'System CSV importer: created: 0 | updated: 3 | skipped: 0 | multiple: 0 [2021-03-26 18:45:00 - 2021-03-26 18:45:00]', ) self.assertEqual(messages[0].level_tag, 'success') # compare - tags compare_tag_remove_none(self, '56')
def test_system_importer_file_csv_status_cron_tagfree_status(self): """ test importer view """ # change config set_csv_import_filename( 'system_importer_file_csv_testfile_35_tagfree_status.csv') # change config set_config_tagfree_status() # mock timezone.now() t_2 = datetime(2021, 3, 11, 19, 10, tzinfo=timezone.utc) with patch.object(timezone, 'now', return_value=t_2): # execute cron job / scheduled task system_cron() # login testuser self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 1 self.assertEqual(str(response.context['user']), 'testuser_system_importer_file_csv_status') self.assertEqual( messages[0].message, 'System CSV importer: created: 2 | updated: 4 | skipped: 0 | multiple: 0 [2021-03-11 19:10:00 - 2021-03-11 19:10:00]' ) self.assertEqual(messages[0].level_tag, 'success') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare - user 2 self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, 'System CSV importer: created: 2 | updated: 4 | skipped: 0 | multiple: 0 [2021-03-11 19:10:00 - 2021-03-11 19:10:00]' ) self.assertEqual(messages[0].level_tag, 'success') # compare - systems / attributes self = compare_system_and_attributes_tagfree_status(self)
def test_system_importer_file_csv_check_content_file_system_cron_file_not_existing( self, ): """test importer view""" # change config set_csv_import_path('/tmp') # change config set_csv_import_filename('filename_not_existing.abc') # execute cron job / scheduled task system_cron() # login testuser self.client.login( username= '******', password='******', ) # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual( str(response.context['user']), 'testuser_system_importer_file_csv_check_content_file_system', ) self.assertEqual( messages[0].message, '[Scheduled task CSV system importer] CSV import file does not exist. Check config or provide file!', ) self.assertEqual(messages[0].level_tag, 'error') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, '[Scheduled task CSV system importer] CSV import file does not exist. Check config or provide file!', ) self.assertEqual(messages[0].level_tag, 'error')
def test_system_importer_file_csv_messages_cron_single_system_multiple(self): """ test importer view """ # create system create_system('system_csv_11_001') create_system('system_csv_11_001') # change config set_csv_import_filename('system_importer_file_csv_testfile_11_messages_single_system.csv') # change config set_csv_skip_existing_system(False) # mock timezone.now() t_4 = datetime(2021, 3, 7, 11, 00, tzinfo=timezone.utc) with patch.object(timezone, 'now', return_value=t_4): # execute cron job / scheduled task system_cron() # login testuser self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual(str(response.context['user']), 'testuser_system_importer_file_csv_messages') self.assertEqual(messages[0].message, 'System CSV importer: created: 0 | updated: 0 | skipped: 0 | multiple: 1 [2021-03-07 11:00:00 - 2021-03-07 11:00:00]') self.assertEqual(messages[0].level_tag, 'success') self.assertEqual(messages[1].message, "1 system was skipped because it existed several times. ['system_csv_11_001']") self.assertEqual(messages[1].level_tag, 'warning') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual(messages[0].message, 'System CSV importer: created: 0 | updated: 0 | skipped: 0 | multiple: 1 [2021-03-07 11:00:00 - 2021-03-07 11:00:00]') self.assertEqual(messages[0].level_tag, 'success') self.assertEqual(messages[1].message, "1 system was skipped because it existed several times. ['system_csv_11_001']") self.assertEqual(messages[1].level_tag, 'warning')
def test_system_importer_file_csv_check_content_file_system_cron_path_no_read_permission( self): """ test importer view """ # change config set_csv_import_path('/root') # execute cron job / scheduled task system_cron() # login testuser self.client.login( username= '******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual( str(response.context['user']), 'testuser_system_importer_file_csv_check_content_file_system') self.assertEqual( messages[0].message, '[Scheduled task CSV system importer] No read permission for CSV import path. Check config or file system!' ) self.assertEqual(messages[0].level_tag, 'error') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, '[Scheduled task CSV system importer] No read permission for CSV import path. Check config or file system!' ) self.assertEqual(messages[0].level_tag, 'error')
def test_system_importer_file_csv_check_config_cron_user_cron_no_import_user( self): """test importer view""" # execute cron job / scheduled task system_cron() # login testuser self.client.login( username='******', password='******', ) # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual( str(response.context['user']), 'testuser_system_importer_file_csv_check_config_cron_user', ) self.assertEqual( messages[0].message, '[Scheduled task CSV system importer] No user for import defined. Check config!', ) self.assertEqual(messages[0].level_tag, 'error') # switch user context self.client.logout() self.client.login(username='******', password='******') # get response response = self.client.get('/system/') # get messages messages = list(get_messages(response.wsgi_request)) # compare self.assertEqual(str(response.context['user']), 'message_user') self.assertEqual( messages[0].message, '[Scheduled task CSV system importer] No user for import defined. Check config!', ) self.assertEqual(messages[0].level_tag, 'error')