mirror of https://github.com/OWASP/Nettacker.git
43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from unittest.mock import patch, MagicMock
|
|
|
|
from sqlalchemy import create_engine, inspect
|
|
|
|
from nettacker.config import Config
|
|
from nettacker.database.models import Base
|
|
from nettacker.database.sqlite import sqlite_create_tables
|
|
from tests.common import TestCase
|
|
|
|
|
|
class TestSQLiteFunctions(TestCase):
|
|
@patch("nettacker.database.sqlite.create_engine")
|
|
def test_sqlite_create_tables(self, mock_create_engine):
|
|
Config.db = MagicMock()
|
|
Config.db.as_dict.return_value = {"name": "/path/to/test.db"}
|
|
|
|
mock_engine = MagicMock()
|
|
mock_create_engine.return_value = mock_engine
|
|
|
|
with patch.object(Base.metadata, "create_all") as mock_create_all:
|
|
sqlite_create_tables()
|
|
|
|
mock_create_engine.assert_called_once_with(
|
|
"sqlite:////path/to/test.db", connect_args={"check_same_thread": False}
|
|
)
|
|
mock_create_all.assert_called_once_with(mock_engine)
|
|
|
|
def test_sqlite_create_tables_integration(self):
|
|
engine = create_engine("sqlite:///:memory:")
|
|
|
|
Config.db = MagicMock()
|
|
Config.db.as_dict.return_value = {"name": ":memory:"}
|
|
|
|
with patch("nettacker.database.sqlite.create_engine", return_value=engine):
|
|
sqlite_create_tables()
|
|
|
|
inspector = inspect(engine)
|
|
tables = inspector.get_table_names()
|
|
|
|
self.assertIn("reports", tables, "Reports table was not created")
|
|
self.assertIn("temp_events", tables, "Temp events table was not created")
|
|
self.assertIn("scan_events", tables, "Scan events table was not created")
|