Flask -WTF - Невозможно проверить отправку формы - PullRequest
3 голосов
/ 06 января 2020

Я хотел бы проверить wtf-форму с токеном crsf, но не знаю, как отправить токен.

Вот моя форма:

class myLoginForm(FlaskForm):
    username = StringField()
    password = StringField()
    mySubmit = SubmitField('Save')

Вот мой маршрут:

@app.route('/login', methods=['GET', 'POST'])
def login():
    loginForm = myLoginForm()

    if loginForm.validate_on_submit():
        result = request.form
        username = result.get("username")
        password = result.get("password")

Вот мой тест:

import unittest
from flask_testing import TestCase
from flask import Flask
import json

class TestLogin(TestCase):

    def create_app(self):
        app = Flask(__name__)
        return app

    def test_submission(self):
        headers = {
            'ContentType': 'application/json',
            'dataType': 'json'
        }
        data = {
            'username': 'foo',
            'password': 'bar'
        }

        response = app.test_client().post(
            '/login',
            data=json.dumps(data),
            content_type='application/json',
            follow_redirects=True
        )

        assert self.get_context_variable("loginForm").validate_on_submit() == True

Утверждение не выполняется, потому что validate_on_submit () возвращает False. Я думаю, что это связано с токеном crsf.

Как я могу отправить токен crsf на запрос POST?

Хорошего дня

Ответы [ 2 ]

2 голосов
/ 06 января 2020
1 голос
/ 15 января 2020

Если вы не хотите проверить фактическую защиту CSRF в Flask -WTF , гораздо проще полностью отключить CSRF в конфигурации приложения при запуске модульных тестов. Условия, запускающие защиту CSRF, могут быть легче протестированы с помощью тестов интеграции / e2e.

...