def test_log_nteventlog(): """ Test `prewikka.log.Log` class. With nteventlog option. """ conf = ConfigSection("nteventlog") conf.level = "debug" log = Log([conf]) log.log(10, 'foo bar')
def test_log_invalid_format(): """ Test `prewikka.log.Log` class. With an invalid format. """ conf = ConfigSection("somethinginvalid") conf.level = "debug" with pytest.raises(ValueError): Log([conf])
def test_log_syslog(): """ Test `prewikka.log.Log` class. With syslog option. """ # syslog is by default # this test should be improved conf = ConfigSection("syslog") conf.level = "debug" log = Log([conf]) log.log(10, 'foo bar')
def test_log_stderr(): """ Test `prewikka.log.Log` class. With stderr option. FIXME: with pytest 3+, a solution exists to disable std* captured by pytest. https://docs.pytest.org/en/3.0.0/capture.html#accessing-captured-output-from-a-test-function """ conf = ConfigSection("debug") conf.level = "debug" initial_stderr = sys.stderr log = Log([conf]) log.log(10, 'foo bar') assert initial_stderr != sys.stderr
def test_log_file(): """ Test `prewikka.log.Log` class. With file option. """ conf = ConfigSection("file") conf.level = "debug" conf.file = os.path.join(TEST_DOWNLOAD_DIR, 'prewikka.logs') try: output_file_size = os.stat(conf.file).st_size except OSError: output_file_size = 0 log = Log([conf]) log.log(10, 'foo bar') assert output_file_size != os.stat(conf.file).st_size
def test_autherror(): """ Test `prewikka.auth.auth.AuthError` error. """ session = Session(ConfigSection(None)) error = AuthError(session) with pytest.raises(AuthError): raise error
def test_dbauth(): """ Test `prewikka.auth.dbauth.DBAuth` class. """ auth = DBAuth(ConfigSection(None)) user = User('john') group = Group('grp') assert auth.can_create_user() assert auth.can_delete_user() assert auth.can_set_password() assert auth.can_manage_permissions() assert not auth.get_user_by_id(user.id) auth.create_user(user) assert auth.has_user(user) assert auth.get_user_by_id(user.id) assert user in auth.get_user_list() assert user in auth.get_user_list('jo') auth.set_user_permissions(user, ['FAKE_PERM1']) assert 'FAKE_PERM1' in auth.get_user_permissions(user) assert 'FAKE_PERM1' in auth.get_user_permissions(user, True) assert auth.can_create_group() assert auth.can_delete_group() assert auth.can_manage_group_members() assert auth.can_manage_group_permissions() assert not auth.get_group_by_id(group.id) auth.create_group(group) assert auth.has_group(group) assert auth.get_group_by_id(group.id) assert group in auth.get_group_list() assert group in auth.get_group_list('gr') auth.set_group_members(group, [user]) assert user in auth.get_group_members(group) auth.set_member_of(user, [group]) assert group in auth.get_member_of(user) assert auth.is_member_of(group, user) auth.set_group_permissions(group, ['FAKE_PERM2']) assert 'FAKE_PERM2' in auth.get_group_permissions(group) assert 'FAKE_PERM2' in auth.get_user_permissions(user) assert 'FAKE_PERM2' not in auth.get_user_permissions(user, True) assert 'FAKE_PERM2' in auth.get_user_permissions_from_groups(user) auth.delete_user(user) assert not auth.get_user_by_id(user.id) auth.delete_group(group) assert not auth.get_group_by_id(group.id)
def test_anonymous_session(): """ Test `prewikka.session.anonymous.anonymous.AnonymousSession` class. Anonymous do not really implements all methods of Session class, just checks all works by default. """ anonymous_session = AnonymousSession(ConfigSection("")) assert anonymous_session.get_user_permissions(None) assert anonymous_session.get_user_info(None) assert anonymous_session.get_user_list() assert anonymous_session.get_user_by_id(None) assert anonymous_session.has_user(None) assert anonymous_session.authenticate(None, None)
def test_log(): """ Test `prewikka.log.Log` class. """ conf = ConfigSection("syslog") conf.level = "debug" log = Log([conf]) log.log(10, 'foo bar') log.log(20, 'foo bar') log.log(30, 'foo bar') log.log(40, 'foo bar') log.log(50, 'foo bar') with pytest.raises(KeyError): log.log(60, 'foo bar') # with exception log.log(10, TypeError()) # levels if env.config.log: for level in ('debug', 'all', 'warning', 'error', 'critical', 'invalid'): c = ConfigSection("syslog") c.level = level log = Log([c]) log.log(10, 'foo bar') log.log(20, 'foo bar') log.log(30, 'foo bar') log.log(40, 'foo bar') log.log(50, 'foo bar') # request.web backup_web = copy.copy(env.request.web) env.request.web.is_xhr = True log = Log([conf]) log.log(10, 'foo bar') env.request.web.is_xhr = False env.request.web.is_stream = True log = Log([conf]) log.log(10, 'foo bar') env.request.web.is_stream = False env.request.web.port = 8080 # clean env.request.web = backup_web
def test_log_smtp(): """ Test `prewikka.log.Log` class. With smtp option. """ conf = ConfigSection("smtp") conf.level = "debug" conf.host = "localhost" conf["from"] = "user@localhost" conf.to = "root@localhost" conf.subject = "Prewikka Test !" log = Log([conf]) log.log(10, 'foo bar')
def test_session(): """ Test `prewikka.session.session.Session` class. """ session_config = ConfigSection("") session_config.expiration = 60 # 1 hour create_session(env.request.user, session_id=TEST_SESSION_ID) req = deepcopy(env.request.web) # __init__() session = Session(session_config) # get_user() user_from_session = session.get_user(req) assert env.request.user == user_from_session # get_user() with old (but valid) cookie clean_sessions() create_session(env.request.user, time_=time.time() - 3600, session_id=TEST_SESSION_ID) user_from_session = session.get_user(req) assert env.request.user == user_from_session # get_user() with invalid session (empty cookie) with pytest.raises(SessionInvalid): req = deepcopy(env.request.web) req.input_cookie = {} session.get_user(req) # get_user() with expired session (AJAX request) with pytest.raises(SessionExpired): req = deepcopy(env.request.web) req.input_cookie = {} req.is_xhr = True session.get_user(req) # get_user() with invalid session (bad session_id) with pytest.raises(SessionInvalid): req = deepcopy(env.request.web) req.input_cookie['sessionid'] = cookies.Morsel() req.input_cookie['sessionid'].value = 'invalid' session.get_user(req) # get_user() with expired session (cookie expired) with pytest.raises(SessionExpired): clean_sessions() req = deepcopy(env.request.web) create_session(env.request.user, time_=time.time() - 3600 * 24, session_id=TEST_SESSION_ID) session = Session(session_config) session.get_user(req) # get_user() with invalid user backup_user = env.request.user with pytest.raises(SessionInvalid): req = deepcopy(env.request.web) env.request.user = User('test') session.get_user(req) env.request.user = backup_user # get_user() with changed backend backup_auth = env.auth with pytest.raises(SessionInvalid): req = deepcopy(env.request.web) clean_sessions() create_session(env.request.user, session_id=TEST_SESSION_ID) env.auth = FakeAuthBackend(ConfigSection("")) session.get_user(req) env.auth = backup_auth # logout() with pytest.raises(SessionInvalid): clean_sessions() create_session(env.request.user, session_id=TEST_SESSION_ID) session = Session(session_config) req = deepcopy(env.request.web) session.logout(req) # can_logout() assert session.can_logout() clean_sessions()
def test_auth(): """ Test `prewikka.auth.auth.Auth` class. """ auth = Auth(ConfigSection(None)) user = User('john') group = Group('grp') # _AuthUser() assert not auth.can_create_user() assert not auth.can_delete_user() assert not auth.can_set_password() assert not auth.can_manage_permissions() assert not auth.get_user_list() assert not auth.get_user_list('foo') assert not auth.get_user_by_id(user.id) auth.create_user(user) assert auth.get_user_by_id(user.id) auth.delete_user(user) assert not auth.get_user_by_id(user.id) with pytest.raises(NotImplementedError): auth.has_user(user) assert not auth.get_user_permissions(user) assert not auth.get_user_permissions(user, True) assert not auth.get_user_permissions_from_groups(user) with pytest.raises(NotImplementedError): auth.set_user_permissions(user, ['FAKE_PERM']) # _AuthGroup assert not auth.can_create_group() assert not auth.can_delete_group() assert not auth.can_manage_group_members() assert not auth.can_manage_group_permissions() assert not auth.get_group_list() assert not auth.get_group_list('foo') assert not auth.get_group_by_id(group.id) auth.create_group(group) assert auth.get_group_by_id(group.id) auth.delete_group(group) assert not auth.get_group_by_id(group.id) with pytest.raises(NotImplementedError): auth.set_group_permissions(group, ['FAKE_PERM']) assert not auth.get_group_permissions(group) with pytest.raises(NotImplementedError): auth.set_group_members(group, [user]) assert not auth.get_group_members(group) with pytest.raises(NotImplementedError): auth.set_member_of(user, [group]) assert not auth.get_member_of(user) with pytest.raises(NotImplementedError): auth.is_member_of(group, user) with pytest.raises(NotImplementedError): auth.has_group(group)