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)
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)
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)
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)
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'))
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)
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)
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, '')
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())
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)
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)
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)
def test_load_config(self): config = load_config() self.assertIsNotNone(config.remote)