aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/test_db_utils.py
blob: 68f80a06af24bfe1d862b49f8913d065a122d1fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"""module contains test for db_utils"""

from unittest import TestCase
from unittest import mock
from types import SimpleNamespace

import pytest

from gn3.db_utils import database_connector
from gn3.db_utils import parse_db_url


class TestDatabase(TestCase):
    """class contains testd for db connection functions"""

    @pytest.mark.unit_test
    @mock.patch("gn3.db_utils.mdb")
    @mock.patch("gn3.db_utils.parse_db_url")
    def test_database_connector(self, mock_db_parser, mock_sql):
        """test for creating database connection"""
        mock_db_parser.return_value = ("localhost", "guest", "4321", "users", None)
        callable_cursor = lambda: SimpleNamespace(execute=3)
        cursor_object = SimpleNamespace(cursor=callable_cursor)
        mock_sql.connect.return_value = cursor_object
        mock_sql.close.return_value = None
        results = database_connector()

        mock_sql.connect.assert_called_with(
            "localhost", "guest", "4321", "users", port=3306)
        self.assertIsInstance(
            results, SimpleNamespace, "database not created successfully")

    @pytest.mark.unit_test
    @mock.patch("gn3.db_utils.SQL_URI",
                "mysql://username:4321@localhost/test")
    def test_parse_db_url(self):
        """test for parsing db_uri env variable"""
        results = parse_db_url()
        expected_results = ("localhost", "username", "4321", "test", None)
        self.assertEqual(results, expected_results)