Exemplo n.º 1
0
 def test_tenant_delete_callback(self):
     TenantModel = get_tenant_model()
     TenantModel.auto_create_schema = False
     TenantModel.auto_drop_schema = True
     tenant = TenantModel(schema_name="tenant1")
     tenant.save()
     tenant.create_schema(sync_schema=False)
     self.assertTrue(schema_exists("tenant1"))
     TenantModel.objects.all().delete()
     self.assertFalse(schema_exists("tenant1"))
Exemplo n.º 2
0
    def setUpClass(cls):
        super().setUpClass()
        TenantModel = get_tenant_model()
        DomainModel = get_domain_model()

        def fake_get_response(request):
            return request

        cls.factory = RequestFactory()
        cls.middleware = TenantMiddleware(fake_get_response)
        tenant1 = TenantModel(schema_name="tenant1")
        tenant2 = TenantModel(schema_name="tenant2")
        tenant1.auto_create_schema = tenant2.auto_create_schema = False
        tenant1.save()
        tenant2.save()
        DomainModel(domain="tenant1.test.com", tenant=tenant1).save()
        DomainModel(domain="everyone.test.com", folder="tenant1", tenant=tenant1).save()
        DomainModel(domain="tenant2.test.com", tenant=tenant2).save()
        DomainModel(domain="everyone.test.com", folder="tenant2", tenant=tenant2).save()
Exemplo n.º 3
0
from io import StringIO

from django.core import management
from django.test import TestCase

from django_pgschemas.utils import get_domain_model, get_tenant_model

TenantModel = get_tenant_model()
DomainModel = get_domain_model()


class WhoWillCommandTestCase(TestCase):
    """
    Tests the whowill management command.
    """
    @classmethod
    def setUpClass(cls):
        tenant = TenantModel(schema_name="tenant1")
        tenant.save(verbosity=0)
        DomainModel.objects.create(tenant=tenant,
                                   domain="tenant1.localhost",
                                   is_primary=True)

    @classmethod
    def tearDownClass(cls):
        for tenant in TenantModel.objects.all():
            tenant.delete(force_drop=True)

    def split_output(self, buffer):
        buffer.seek(0)
        return set(buffer.read().strip().splitlines())
Exemplo n.º 4
0
 class Meta:
     app_label = get_tenant_model()._meta.app_label
Exemplo n.º 5
0
 def test_get_tenant_model(self):
     self.assertEqual(utils.get_tenant_model()._meta.model_name, "tenant")
Exemplo n.º 6
0
from io import StringIO
from unittest.mock import patch

from django.core.management import call_command
from django.core.management.base import CommandError
from django.test import TestCase, TransactionTestCase

from django_pgschemas import utils

TenantModel = utils.get_tenant_model()
DomainModel = utils.get_domain_model()


class SchemaCreationCommandsTestCase(TestCase):
    """
    Tests that the schema creation commands do what they are expected to do.
    """
    def test_cloneschema(self):
        "Tests 'cloneschema' command"

        utils._create_clone_schema_function()
        self.assertFalse(utils.schema_exists("cloned"))
        call_command("cloneschema", "sample", "cloned",
                     verbosity=0)  # All good
        self.assertTrue(utils.schema_exists("cloned"))
        with self.assertRaises(CommandError):  # Existing destination
            call_command("cloneschema", "sample", "cloned", verbosity=0)
        with self.assertRaises(CommandError):  # Not existing source
            call_command("cloneschema",
                         "nonexisting",
                         "newschema",