Esempio n. 1
0
    def test_registartion_closed(client: FlaskClient, captured_templates):
        conftest.disable_registration()
        conftest.signup_client_user(
            client, '*****@*****.**', 'some_user',
            'some_name', 'some_password', 'some_password',
        )
        user = User.get_or_none(User.username == 'some_user')
        assert user is None

        response = client.get('/signup')
        template, _ = captured_templates[-1]
        assert template.name == 'login.html'
        assert '/signup' not in response.get_data(as_text=True)
Esempio n. 2
0
    def test_invalid_username(
        client: FlaskClient, student_user: User, captured_templates,
    ):
        conftest.signup_client_user(
            client, '*****@*****.**', student_user.username,
            'some_name', 'some_password', 'some_password',
        )
        template, _ = captured_templates[-1]
        assert template.name == 'signup.html'

        conftest.login_client_user(
            client, student_user.username, 'some_password',
        )
        fail_login_response = client.get('/exercises')
        assert fail_login_response.status_code == 302
Esempio n. 3
0
    def test_use_token_twice(client: FlaskClient):
        conftest.signup_client_user(
            client, '*****@*****.**', 'some_user',
            'some_name', 'some_password', 'some_password',
        )
        user = User.get_or_none(User.username == 'some_user')
        token = generate_user_token(user)
        success_token_response = client.get(
            f'/confirm-email/{user.id}/{token}', follow_redirects=True,
        )
        assert success_token_response.status_code == 200

        fail_token_response = client.get(
            f'/confirm-email/{user.id}/{token}', follow_redirects=True,
        )
        assert fail_token_response.status_code == 403
Esempio n. 4
0
    def test_bad_token_or_id(client: FlaskClient):
        conftest.signup_client_user(
            client, '*****@*****.**', 'some_user',
            'some_name', 'some_password', 'some_password',
        )
        user = User.get_or_none(User.username == 'some_user')
        bad_token = 'fake-token43@$@'  # noqa: S105
        fail_confirm_response = client.get(
            f'/confirm-email/{user.id}/{bad_token}', follow_redirects=True,
        )
        assert fail_confirm_response.status_code == 404

        # No such 999 user id
        another_fail_response = client.get(
            f'/confirm-email/999/{bad_token}', follow_redirects=True,
        )
        assert another_fail_response.status_code == 404
Esempio n. 5
0
    def test_successful_registration(client: FlaskClient, captured_templates):
        conftest.signup_client_user(
            client, '*****@*****.**', 'some_user',
            'some_name', 'some_password', 'some_password',
        )
        template, _ = captured_templates[-1]
        assert template.name == 'login.html'

        conftest.login_client_user(client, 'some_user', 'some_password')
        fail_login_response = client.get('/exercises')
        assert fail_login_response.status_code == 302

        user = User.get_or_none(User.username == 'some_user')
        token = generate_user_token(user)
        client.get(f'/confirm-email/{user.id}/{token}', follow_redirects=True)
        conftest.login_client_user(client, 'some_user', 'some_password')
        success_login_response = client.get('/exercises')
        assert success_login_response.status_code == 200
Esempio n. 6
0
    def test_invalid_email(
        client: FlaskClient, student_user: User, captured_templates,
    ):
        conftest.signup_client_user(
            client, student_user.mail_address, 'some_user',
            'some_name', 'some_password', 'some_password',
        )
        client.post('/signup', data={
            'email': student_user.mail_address,
            'username': '******',
            'fullname': 'some_name',
            'password': '******',
            'confirm': 'some_password',
        }, follow_redirects=True)
        template, _ = captured_templates[-1]
        assert template.name == 'signup.html'

        conftest.login_client_user(client, 'some_user', 'some_password')
        fail_login_response = client.get('/exercises')
        assert fail_login_response.status_code == 302
Esempio n. 7
0
    def test_expired_token(client: FlaskClient):
        conftest.signup_client_user(
            client, '*****@*****.**', 'some_user',
            'some_name', 'some_password', 'some_password',
        )
        user = User.get_or_none(User.username == 'some_user')
        token = generate_user_token(user)

        fake_time = time.time() + CONFIRMATION_TIME + 1
        with patch('time.time', Mock(return_value=fake_time)):
            client.get(
                f'/confirm-email/{user.id}/{token}', follow_redirects=True,
            )
            conftest.login_client_user(client, 'some_user', 'some_password')
            fail_login_response = client.get('/exercises')
            assert fail_login_response.status_code == 302

            token = generate_user_token(user)
            client.get(
                f'/confirm-email/{user.id}/{token}', follow_redirects=True,
            )
            conftest.login_client_user(client, 'some_user', 'some_password')
            success_login_response = client.get('/exercises')
            assert success_login_response.status_code == 200