Skip to content

Commit

Permalink
Add tests for VaultMixin and handle import errors for PasswordMixin
Browse files Browse the repository at this point in the history
  • Loading branch information
LeoQuote committed Feb 26, 2025
1 parent da69d20 commit 0edeb50
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
24 changes: 23 additions & 1 deletion sql/plugins/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,16 @@
"""
import json
from django.test import Client, TestCase
from unittest.mock import patch, ANY
from unittest.mock import patch, ANY, Mock
from pytest_mock import MockerFixture
from django.contrib.auth import get_user_model

from sql.plugins.my2sql import My2SQL
from sql.plugins.schemasync import SchemaSync
from sql.plugins.soar import Soar
from sql.plugins.sqladvisor import SQLAdvisor
from sql.plugins.pt_archiver import PtArchiver
from sql.plugins.password import VaultMixin

from common.config import SysConfig

Expand Down Expand Up @@ -334,3 +336,23 @@ def test_rewrite(self, _subprocess):
# 异常测试
with self.assertRaises(RuntimeError):
self.soar.rewrite(sql, "unknown")


def test_password_mixin(mocker: MockerFixture):
from sql.plugins.password import requests
class MockReponse(Mock):
def json(self):
return {"data": {"username": "test", "password": "test", "ttl": 360}}
mocker.patch.object(requests, "get", return_value=MockReponse())

class DummyInstance:
instance_name = "dummy"

class CompondInstance(DummyInstance, VaultMixin):
pass

instance = CompondInstance()
username, password = instance.get_username_password()
assert username == "test"
assert password == "test"
assert requests.get.call_count == 1
8 changes: 7 additions & 1 deletion sql/test_model.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
"""models.py 的补充测试"""

from django.conf import settings
from sql.models import InstanceTag


def test_instance_tag_str():
i = InstanceTag(tag_name="test")

assert str(i) == "test"


def test_password_mixin_import_error():
settings.PASSWORD_MIXIN_PATH = "sql.not_found:ErrorMixin"
from sql.models import PasswordMixin
assert PasswordMixin.__name__ == "DummyMixin"

0 comments on commit 0edeb50

Please sign in to comment.