Beispiel #1
0
    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)
Beispiel #3
0
    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')
Beispiel #5
0
    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')
Beispiel #6
0
    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)
Beispiel #8
0
    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)
Beispiel #9
0
    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)
Beispiel #12
0
    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')
Beispiel #13
0
    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')
Beispiel #14
0
    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')
Beispiel #15
0
    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')