gpt4 book ai didi

python - 使用 pytest 进行 Flask 基本身份验证测试

转载 作者:行者123 更新时间:2023-11-28 21:00:41 26 4
gpt4 key购买 nike

我目前在我的项目中使用 Flask-HTTPAuth 进行基本身份验证。我已经使用 curl 和 base64 标记手动对其进行了测试,它确实有效。但是,我在创建证明它有效的测试时遇到了问题。这是我当前的测试,它总是返回 401:

类 TestLoginApi

def setup(self):
myapp.app.config.from_object("config.TestingConfig")
self.app = myapp.app.test_client()
client = MongoClient(myapp.app.config['DATABASE_URL'])
db = client.get_default_database()
assert list(db.collection_names()) == []

db.users.insert_one({'name': 'testuser', 'password': 'testpassword'})

def teardown(self):
client = MongoClient(myapp.app.config['DATABASE_URL'])
client.drop_database(client.get_default_database())

def test_not_logged_in(self):
rv = self.app.get('/api/v1/login/')
assert rv.status_code == 401

def test_correct_password(self):
d = Headers()
d.add('Authorization', 'Basic dGVzdHVzZXI6dGVzdHBhc3N3b3Jk')
rv = self.app.get('/api/v1/login/', headers=d,
content_type='application/json')
assert rv.status_code == 200

我还尝试更改以下内容:

def test_correct_password(self):
d = Headers()
d.add('Authorization', 'Basic dGVzdHVzZXI6dGVzdHBhc3N3b3Jk')
rv = self.app.get('/api/v1/login/', headers=d,
content_type='application/json')
assert rv.status_code == 200

对此没有成功:

def test_correct_password(self):
rv = self.app.get('/api/v1/login/', headers={"Authorization": "Basic {user}".format(user=base64.b64encode(b"testuser:testpassword"))})
assert rv.status_code == 200

最佳答案

您可以像这样测试授权:

import base64

valid_credentials = base64.b64encode(b"testuser:testpassword").decode("utf-8")
response = self.app.get(
"/api/v1/login/",
headers={"Authorization": "Basic " + valid_credentials}
)
assert response.status_code == 200

我想你会喜欢 my github project ,其中有大量针对 Flask-HTTPAuth 的不同测试。

关于python - 使用 pytest 进行 Flask 基本身份验证测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45452580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com