Example #1
0
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')
Example #2
0
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])
Example #3
0
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')
Example #4
0
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
Example #5
0
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
Example #6
0
def test_autherror():
    """
    Test `prewikka.auth.auth.AuthError` error.
    """
    session = Session(ConfigSection(None))
    error = AuthError(session)

    with pytest.raises(AuthError):
        raise error
Example #7
0
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)
Example #8
0
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)
Example #9
0
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
Example #10
0
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')
Example #11
0
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()
Example #12
0
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)