def setup_method(self, method): self.fd, self.path = tempfile.mkstemp() with open(self.path, 'w') as f: f.write('') self.configs = Configs(self.path) if method.__name__ in ['test_get_config', 'test_is_token_expired', 'test_set_config', 'test_set_config_new']: self.configs.config.read_string(""" [api] serverurl = https://server [token] expires = 1000 """) elif method.__name__ == 'test_is_valid__true': self.configs.config.read_string(""" [api] serverurl = url username = user password = pass [oauth2] client = 100 secret = 100 """) elif method.__name__ == 'test_get_path': self.configs = Configs()
def setup_method(self, method): self.config = Configs("/tmp/config") self.config.config.read_string(""" [api] serverurl = url username = user password = pass [oauth2] client = 100 secret = 100 """)
def setup_method(self, method): self.fd, self.path = tempfile.mkstemp() with open(self.path, 'w') as f: f.write('') self.configs = Configs(self.path) self.configs.config.read_string(""" [api] serverurl = url username = user password = pass [oauth2] client = 100 secret = 100 """)
def cli(ctx, config, debug, debug_level): __init_logging(debug, debug_level) # Workaround for default non-unicode encodings in the # Windows cmd and Powershell # -> Analyze encoding and set to utf-8 if platform.system() == "Windows": codepage = subprocess.check_output(['chcp'], shell=True).decode() if "65001" not in codepage: subprocess.check_output(['chcp', '65001'], shell=True) ctx.obj = Configs(config) logger = logging.getLogger('wallabag') logger.info('wallabag started')
class TestConfigs(): configs = None def teardown_method(self, method): os.close(self.fd) os.remove(self.path) def setup_method(self, method): self.fd, self.path = tempfile.mkstemp() with open(self.path, 'w') as f: f.write('') self.configs = Configs(self.path) if method.__name__ in ['test_get_config', 'test_is_token_expired', 'test_set_config', 'test_set_config_new']: self.configs.config.read_string(""" [api] serverurl = https://server [token] expires = 1000 """) elif method.__name__ == 'test_is_valid__true': self.configs.config.read_string(""" [api] serverurl = url username = user password = pass [oauth2] client = 100 secret = 100 """) elif method.__name__ == 'test_get_path': self.configs = Configs() def test_get_path(self): xdg_config = os.path.expanduser(XDG_CONFIG_HOME) expected = f"{xdg_config}/wallabag-cli/config.ini" actual = self.configs.get_path() assert expected == str(actual) def test_get_path_custom(self): expected = pathlib.PurePath("custom/directory") assert expected == self.configs.get_path(expected) @pytest.mark.parametrize( 'condition', [(Sections.TOKEN, Options.EXPIRES, '1000', 'get'), (Sections.TOKEN, Options.ACCESS_TOKEN, None, 'get'), (Sections.API, Options.SERVERURL, "https://server", 'get'), (Sections.API, '', 0, 'getint'), (Sections.API, '', None, 'get'), ('', '', None, 'get'), (None, None, None, 'get'), (None, None, 0, 'getint'), (Sections.TOKEN, Options.EXPIRES, 1000, 'getint')]) def test_get_config(self, condition): if condition[3] == 'get': assert self.configs.get(condition[0], condition[1]) == condition[2] elif condition[3] == 'getint': assert self.configs.getint( condition[0], condition[1]) == condition[2] def test_is_token_expired(self): assert self.configs.is_token_expired() def test_is_token_expired_no_value(self): assert self.configs.is_token_expired() def test_is_valid__false(self): assert not self.configs.is_valid() def test_is_valid__true(self): assert self.configs.is_valid() def test_set_config(self): self.configs.set(Sections.TOKEN, Options.EXPIRES, str(500)) assert self.configs.getint(Sections.TOKEN, Options.EXPIRES) == 500 def test_set_config_new(self): self.configs.set(Sections.TOKEN, Options.ACCESS_TOKEN, 'abba') assert self.configs.get(Sections.TOKEN, Options.ACCESS_TOKEN) == 'abba' def test_load_or_create(self, monkeypatch): self.save_called = False def exists(path): return False def savemock(configs, path): self.save_called = True return True monkeypatch.setattr(os.path, 'exists', exists) monkeypatch.setattr(Configs, 'save', savemock) self.configs.load_or_create() assert self.save_called def test_load_or_create_load(self, monkeypatch): self.load_called = False def exists(path): return True def loadmock(configs, path): self.load_called = True return True monkeypatch.setattr(os.path, 'exists', exists) monkeypatch.setattr(Configs, 'load', loadmock) self.configs.load_or_create() assert self.load_called def test_load_or_create_value_error(self, monkeypatch): def exists(path): return False def savemock(configs, path): return False monkeypatch.setattr(os.path, 'exists', exists) monkeypatch.setattr(Configs, 'save', savemock) with pytest.raises(ValueError, match=Configs.LOAD_ERROR): self.configs.load_or_create() @pytest.mark.parametrize( 'password', ['123456', 'password', 'secret']) def test_encryption(self, password): self.configs.set(Sections.API, Options.PASSWORD, password) encrypted = self.configs.config.get(Sections.API, Options.PASSWORD) plain = self.configs.get(Sections.API, Options.PASSWORD) assert encrypted != password assert plain == password