Ejemplo n.º 1
0
    def test_save_server_config(self):
        config = load_config(self.path, self.server_name_setup)
        self.assertEqual(config.server, self.server_name_setup)
        self.assertEqual(config.remote, self.remote_value_setup)
        self.assertEqual(config.ui, self.ui_value_setup)
        self.assertEqual(config.token, self.token_value_setup)

        config.remote = fake.hostname()
        config.ui = fake.hostname()
        config.token = fake.password(length=40)
        server_dict = {
            'remote': f'{config.remote}',
            'ui': f'{config.ui}',
            'token': f'{config.token}',
        }
        config_dict_new = {
            'server': {
                self.server_name_setup: server_dict
            },
        }
        config.config_dict = config_dict_new

        self.assertNotEqual(config.config_dict, self.config_value_setup)

        config.save_server_to_config_file()
        config_new = load_config(self.path, self.server_name_setup)

        self.assertEqual(config_new.server, config.server)
        self.assertEqual(config_new.remote, config.remote)
        self.assertEqual(config_new.ui, config.ui)
        self.assertEqual(config_new.token, config.token)
Ejemplo n.º 2
0
    def test_config_remote_environ(self):
        remote_value = fake.hostname()
        os.environ["AA_REMOTE"] = remote_value

        config = load_config()

        self.assertEqual(config.remote, remote_value)
Ejemplo n.º 3
0
    def test_config_ui_environ(self):
        ui_value = fake.hostname()
        os.environ["AA_UI"] = ui_value

        config = load_config()

        self.assertEqual(config.ui, ui_value)
Ejemplo n.º 4
0
    def test_load_random_config(self):
        path = f'{self.tempdir}/{fake.file_name(extension="yml",)}'
        remote_value = fake.hostname()
        ui_value = fake.hostname()
        token_value = fake.password(length=40)
        config_value = {
            f'{fake.name()}': {
                'remote': f'{remote_value}',
                'ui': f'{ui_value}',
            },
            f'{fake.name()}': {
                'token': f'{token_value}',
            },
        }

        store_config(path, config_value)

        capture_output = io.StringIO()
        sys.stdout = capture_output
        config = load_config(path)

        output_value = '[INFO] We updated your AskAnna config file to support the latest features'
        self.assertNotIn(output_value, capture_output.getvalue())

        self.assertIsNotNone(config.remote)
        self.assertEqual(config.server, 'default')
        self.assertNotEqual(config.remote, remote_value)
        self.assertNotEqual(config.ui, ui_value)
        self.assertNotEqual(config.token, token_value)
Ejemplo n.º 5
0
    def test_load_old_config_no_auth(self):
        path = f'{self.tempdir}/{fake.file_name(extension="yml")}'
        remote_value = fake.hostname()
        config_value = {'askanna': {'remote': f'{remote_value}'}}

        store_config(path, config_value)

        config_dict_before = read_config(path)
        self.assertIsNotNone(config_dict_before.get('askanna'))
        self.assertIsNone(config_dict_before.get('auth'))

        capture_output = io.StringIO()
        sys.stdout = capture_output
        config = load_config(path)

        output_value = '[INFO] We updated your AskAnna config file to support the latest features'
        self.assertIn(output_value, capture_output.getvalue())

        self.assertEqual(config.server, 'default')
        self.assertEqual(config.remote, remote_value)
        self.assertIs(config.ui, '')
        self.assertIs(config.token, '')
        self.assertFalse(config.is_authenticated)

        config_dict_after = read_config(path)
        self.assertIsNone(config_dict_after.get('askanna'))
        self.assertIsNone(config_dict_after.get('auth'))
Ejemplo n.º 6
0
    def test_load_from_path(self):
        path = f'{self.tempdir}/{fake.file_name(extension="yml")}'
        remote_value = fake.hostname()
        ui_value = fake.hostname()
        token_value = fake.password(length=40)
        server_dict = {
            'remote': f'{remote_value}',
            'ui': f'{ui_value}',
            'token': f'{token_value}',
        }
        config_value = {
            'server': {
                'default': server_dict
            },
        }

        store_config(path, config_value)
        config = load_config(path)

        self.assertEqual(config.server, 'default')
        self.assertEqual(config.remote, remote_value)
        self.assertEqual(config.ui, ui_value)
        self.assertEqual(config.token, token_value)
        self.assertTrue(config.is_authenticated)
        self.assertEqual(config.config_dict['server']['default'], server_dict)
Ejemplo n.º 7
0
    def test_config_token_environ(self):
        token_value = fake.password(length=40)
        os.environ["AA_TOKEN"] = token_value

        config = load_config()

        self.assertEqual(config.token, token_value)
        self.assertTrue(config.is_authenticated)
Ejemplo n.º 8
0
    def test_logout_and_remove_token(self):
        config = load_config(self.path, self.server_name_setup)
        self.assertEqual(config.server, self.server_name_setup)
        self.assertEqual(config.remote, self.remote_value_setup)
        self.assertEqual(config.ui, self.ui_value_setup)
        self.assertEqual(config.token, self.token_value_setup)

        self.assertIsNot(config.token, '')

        config.logout_and_remove_token()

        self.assertIs(config.token, '')

        config_new = load_config(self.path, self.server_name_setup)

        self.assertEqual(config_new.server, config.server)
        self.assertEqual(config_new.remote, config.remote)
        self.assertEqual(config_new.ui, config.ui)
        self.assertIs(config_new.token, '')
Ejemplo n.º 9
0
    def test_load_non_existing_server(self):
        path = f'{self.tempdir}/{fake.file_name(extension="yml")}'
        # default server
        remote_value_default = fake.hostname()
        ui_value_default = fake.hostname()
        token_value_default = fake.password(length=40)

        # non_default server
        server_name = fake.name()
        remote_value = fake.hostname()
        ui_value = fake.hostname()
        token_value = fake.password(length=40)
        server_dict = {
            'remote': f'{remote_value}',
            'ui': f'{ui_value}',
            'token': f'{token_value}',
        }

        config_value = {
            'server': {
                'default': {
                    'remote': f'{remote_value_default}',
                    'ui': f'{ui_value_default}',
                    'token': f'{token_value_default}',
                },
                server_name: server_dict,
            },
        }

        store_config(path, config_value)
        not_existing_server = fake.name()

        capture_error = io.StringIO()
        sys.stderr = capture_error
        with pytest.raises(SystemExit):
            load_config(path, not_existing_server)

        output_value = f"Server settings for '{not_existing_server}' not found. Please try again with a valid " \
                       "server, or add this server."
        self.assertIn(output_value, capture_error.getvalue())
Ejemplo n.º 10
0
    def test_config_all_environ(self):
        remote_value = fake.hostname()
        os.environ["AA_REMOTE"] = remote_value
        ui_value = fake.hostname()
        os.environ["AA_UI"] = ui_value
        token_value = fake.password(length=40)
        os.environ["AA_TOKEN"] = token_value

        config = load_config()

        self.assertEqual(config.remote, remote_value)
        self.assertEqual(config.ui, ui_value)
        self.assertEqual(config.token, token_value)
        self.assertTrue(config.is_authenticated)
Ejemplo n.º 11
0
    def test_load_non_default_server(self):
        path = f'{self.tempdir}/{fake.file_name(extension="yml")}'
        # default server
        remote_value_default = fake.hostname()
        ui_value_default = fake.hostname()
        token_value_default = fake.password(length=40)

        # non_default server
        server_name = fake.name()
        remote_value = fake.hostname()
        ui_value = fake.hostname()
        token_value = fake.password(length=40)
        server_dict = {
            'remote': f'{remote_value}',
            'ui': f'{ui_value}',
            'token': f'{token_value}',
        }

        config_value = {
            'server': {
                'default': {
                    'remote': f'{remote_value_default}',
                    'ui': f'{ui_value_default}',
                    'token': f'{token_value_default}',
                },
                server_name: server_dict,
            },
        }

        store_config(path, config_value)
        config = load_config(path, server_name)

        self.assertEqual(config.server, server_name)
        self.assertNotEqual(config.server, 'default')
        self.assertEqual(config.remote, remote_value)
        self.assertNotEqual(config.remote, remote_value_default)
        self.assertEqual(config.ui, ui_value)
        self.assertNotEqual(config.ui, ui_value_default)
        self.assertEqual(config.token, token_value)
        self.assertNotEqual(config.token, token_value_default)
        self.assertTrue(config.is_authenticated)
        self.assertEqual(config.config_dict['server'][server_name],
                         server_dict)
Ejemplo n.º 12
0
 def test_load_isnotfile(self):
     path = fake.file_path(extension='yml',
                           depth=fake.random_int(min=0, max=10))
     config = load_config(path)
     self.assertIsNotNone(config.remote)
Ejemplo n.º 13
0
 def test_load_config(self):
     config = load_config()
     self.assertIsNotNone(config.remote)