ложный вызов ldap всегда возвращает True - PullRequest
0 голосов
/ 26 сентября 2019

Я издевался над методом внутри своей функции входа в систему, чтобы не использовать соединение lpdap.Теперь я не могу установить ложное значение макета, он всегда возвращает истину.Даже если я вставлю неверные учетные данные, он всегда возвращает мне токен, в то время как я хочу получить ответное сообщение «неверные учетные данные». Любая помощь?

Функция входа:

def login():

    user = request.form['user']
    passwd = request.form['passwd']

    test = ldap.bind_user(user, passwd)
    if test is None or passwd == '':
        response = jsonify(message='Invalid Credentials')
        return response ,401

    access_token = create_access_token(identity=user)
    return jsonify(access_token=access_token), 200

Контрольный пример:


    #Test to check if we get a token when the user logs in
    @patch('dev_maintenance.active_directory.ldap.bind_user')
    def test_token_return(self, bind_user):

        bind_user.verify.return_value = True
        tester = app.test_client(self)
        with tester as client:

            response = client.post(
                '/login',
                data =dict(user="hermes", passwd ="hermes"),
                follow_redirects=True)
            self.assertIn(b'Invalid Credentials, response.data)

Теперь, если я изменил эту строку на False:

bind_user.verify.return_value = False

Он должен выполнить работу, но это не так, он возвращает true и поэтому принимает любые учетные данные.

тестовый вывод:

E           AssertionError: b'Invalid Credentials' not found in b'{\n  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1Njk1MDU5OTQsIm5iZiI6MTU2OTUwNTk5NCwianRpIjoiOTg2YjQwNTYtODQyNC00ZDhjLTg2N2YtM2E3ODc4OWE4MTZjIiwiZXhwIjoxNTY5NTA2ODk0LCJpZGVudGl0eSI6Ik5vdXNlciIsImZyZXNoIjpmYWxzZSwidHlwZSI6ImFjY2VzcyJ9.RFKW2mSmqHbLtX8jBlxj9w1waug1wAe0uExPtAMkhkg"\n}\n'

1 Ответ

0 голосов
/ 27 сентября 2019

Я решил это, добавив эту строку в @patch: return_value = None. С этой строкой макет переопределен, чтобы вернуть значение none.Затем с помощью этой строки bind_user.verify.return_value = False я могу установить свой возврат на False.

...