refactor: replace manual model_validate with @model_validate in auth/billing/tag controllers (#40240)

This commit is contained in:
Likalikali
2026-08-09 06:14:07 +00:00
committed by GitHub
parent acda0341ed
commit a1577fc48c
10 changed files with 125 additions and 113 deletions
@@ -5,7 +5,7 @@ from unittest.mock import patch
import pytest
from flask import Flask
from sqlalchemy.orm import Session
from werkzeug.exceptions import BadRequest
from werkzeug.exceptions import BadRequest, UnprocessableEntity
from controllers.console import wraps as console_wraps
from controllers.console.billing.billing import PartnerTenants
@@ -129,7 +129,7 @@ class TestPartnerTenants:
assert "Invalid partner_key" in str(exc_info.value)
def test_put_missing_click_id(self, app: Flask, mock_account, mock_billing_service, mock_decorators):
"""Test that missing click_id raises BadRequest."""
"""Test that missing click_id raises UnprocessableEntity (422)."""
# Arrange
partner_key_encoded = base64.b64encode(b"partner-key-123").decode("utf-8")
@@ -148,8 +148,8 @@ class TestPartnerTenants:
resource = PartnerTenants()
# Act & Assert
# Validation should raise BadRequest for missing required field
with pytest.raises(BadRequest):
# Validation should raise UnprocessableEntity (422) for missing required field
with pytest.raises(UnprocessableEntity):
resource.put(partner_key_encoded)
def test_put_billing_service_json_decode_error(
@@ -13,8 +13,11 @@ from controllers.console import console_ns
from controllers.console.tag.tags import (
TagBasePayload,
TagBindingCollectionApi,
TagBindingPayload,
TagBindingRemoveApi,
TagBindingRemovePayload,
TagListApi,
TagListQueryParam,
TagUpdateDeleteApi,
TagUpdateRequestPayload,
)
@@ -132,7 +135,7 @@ class TestTagListApi:
],
),
):
result, status = method(api, "tenant-1")
result, status = method(api, TagListQueryParam(type="knowledge"), "tenant-1")
assert status == 200
assert result == [{"id": "1", "name": "tag", "type": "knowledge", "binding_count": "1"}]
@@ -155,7 +158,7 @@ class TestTagListApi:
],
) as get_tags_mock,
):
result, status = method(api, "tenant-1")
result, status = method(api, TagListQueryParam(type="snippet"), "tenant-1")
get_tags_mock.assert_called_once()
assert get_tags_mock.call_args.args == ("snippet", "tenant-1", None)
@@ -219,7 +222,7 @@ class TestTagListApi:
with app.test_request_context("/"):
with pytest.raises(Forbidden):
method(api, None, readonly_user)
method(api, TagBasePayload(name="test", type=TagType.KNOWLEDGE), readonly_user)
class TestTagUpdateDeleteApi:
@@ -256,7 +259,7 @@ class TestTagUpdateDeleteApi:
with app.test_request_context("/"):
with pytest.raises(Forbidden):
method(api, None, readonly_user, "tag-1")
method(api, TagUpdateRequestPayload(name="test"), readonly_user, "tag-1")
def test_delete_success(self, app: Flask, admin_user, sqlite_engine: Engine):
api = TagUpdateDeleteApi()
@@ -375,7 +378,7 @@ class TestTagBindingCollectionApi:
payload_patch(payload),
patch("controllers.console.tag.tags.TagService.save_tag_binding") as save_mock,
):
result, status = method(api, admin_user)
result, status = method(api, TagBindingPayload.model_validate(payload), admin_user)
save_mock.assert_called_once()
assert status == 200
@@ -396,7 +399,7 @@ class TestTagBindingCollectionApi:
payload_patch(payload),
patch("controllers.console.tag.tags.TagService.save_tag_binding") as save_mock,
):
result, status = method(api, admin_user)
result, status = method(api, TagBindingPayload.model_validate(payload), admin_user)
save_mock.assert_called_once()
binding_payload = save_mock.call_args.args[0]
@@ -414,7 +417,11 @@ class TestTagBindingCollectionApi:
payload_patch({}),
):
with pytest.raises(Forbidden):
method(api, readonly_user)
method(
api,
TagBindingPayload(tag_ids=["tag-1"], target_id="target-1", type=TagType.KNOWLEDGE),
readonly_user,
)
class TestTagBindingRemoveApi:
@@ -433,7 +440,7 @@ class TestTagBindingRemoveApi:
payload_patch(payload),
patch("controllers.console.tag.tags.TagService.delete_tag_binding") as delete_mock,
):
result, status = method(api, admin_user)
result, status = method(api, TagBindingRemovePayload.model_validate(payload), admin_user)
delete_mock.assert_called_once()
delete_payload = delete_mock.call_args.args[0]
@@ -450,7 +457,11 @@ class TestTagBindingRemoveApi:
payload_patch({}),
):
with pytest.raises(Forbidden):
method(api, readonly_user)
method(
api,
TagBindingRemovePayload(tag_ids=["tag-1"], target_id="target-1", type=TagType.KNOWLEDGE),
readonly_user,
)
class TestTagResponseModel: