def setUpClass(cls):
     tenant = TenantModel(schema_name="tenant")
     tenant.save(verbosity=0)
     catalog = Catalog.objects.create()
     Catalog.objects.create()
     with SchemaDescriptor.create(schema_name="www"):
         user = User.objects.create(email="*****@*****.**",
                                    display_name="Main User")
         user.set_password("weakpassword")
         user.save()
         MainData.objects.create()
     with SchemaDescriptor.create(schema_name="blog"):
         user = User.objects.create(email="*****@*****.**",
                                    display_name="Blog User")
         user.set_password("weakpassword")
         user.save()
         BlogEntry.objects.create(user=user)
     with TenantModel.objects.first():
         user = User.objects.create(email="*****@*****.**",
                                    display_name="Tenant User")
         user.set_password("weakpassword")
         user.save()
         TenantData.objects.create(user=user, catalog=catalog)
     activate_public()
     super().setUpClass()
 def test_file_url_simple(self):
     with SchemaDescriptor.create(schema_name=""):
         self.assertEqual(self.storage.url("test.file"), "/base-url/test.file")
     with SchemaDescriptor.create(schema_name="public"):
         self.assertEqual(self.storage.url("test.file"), "/base-url/public/test.file")
     with SchemaDescriptor.create(schema_name="tenant", folder="folder"):
         self.assertEqual(self.storage.url("test.file"), "/base-url/test.file")
 def test_base_url(self):
     with SchemaDescriptor.create(schema_name=""):
         self.assertEquals(self.storage.base_url, "/base-url/")
     with SchemaDescriptor.create(schema_name="public"):
         self.assertEquals(self.storage.base_url, "/base-url/public/")
     with SchemaDescriptor.create(schema_name="blog"):
         self.assertEquals(self.storage.base_url, "/base-url/blog/")
     with SchemaDescriptor.create(schema_name="tenant", folder="folder"):
         self.assertEquals(self.storage.base_url, "/base-url/")
 def test_base_location(self):
     with SchemaDescriptor.create(schema_name=""):
         self.assertEquals(self.storage.base_location, self.temp_dir + "/")
     with SchemaDescriptor.create(schema_name="public"):
         self.assertEquals(self.storage.base_location, self.temp_dir + "/public/")
     with SchemaDescriptor.create(schema_name="blog"):
         self.assertEquals(self.storage.base_location, self.temp_dir + "/blog/")
     with SchemaDescriptor.create(schema_name="tenant", folder="folder"):
         self.assertEquals(self.storage.base_location, self.temp_dir + "/tenant/")
 def test_path_identifier_basic(self):
     with SchemaDescriptor.create(schema_name=""):
         self.assertEquals(self.storage.get_schema_path_identifier(), "")
     with SchemaDescriptor.create(schema_name="public"):
         self.assertEquals(self.storage.get_schema_path_identifier(), "public")
     with SchemaDescriptor.create(schema_name="blog"):
         self.assertEquals(self.storage.get_schema_path_identifier(), "blog")
     with TenantModel(schema_name="tenant"):
         self.assertEquals(self.storage.get_schema_path_identifier(), "tenant")
 def test_file_path(self):
     self.assertFalse(self.storage.exists("test.file"))
     with SchemaDescriptor.create(schema_name="tenant1"):
         f = ContentFile("random content")
         f_name = self.storage.save("test.file", f)
         self.assertEqual(os.path.join(self.temp_dir, "tenant1", f_name), self.storage.path(f_name))
         self.storage.delete(f_name)
     self.assertFalse(self.storage.exists("test.file"))
 def test_cross_authentication(self):
     with SchemaDescriptor.create(schema_name="www"):
         self.assertTrue(authenticate(email="*****@*****.**", password="******"))  # good
         self.assertFalse(authenticate(email="*****@*****.**", password="******"))  # bad
         self.assertFalse(authenticate(email="*****@*****.**", password="******"))  # bad
     with SchemaDescriptor.create(schema_name="blog"):
         self.assertTrue(authenticate(email="*****@*****.**", password="******"))  # good
         self.assertFalse(authenticate(email="*****@*****.**", password="******"))  # bad
         self.assertFalse(authenticate(email="*****@*****.**", password="******"))  # bad
     with TenantModel.objects.first():
         self.assertTrue(authenticate(email="*****@*****.**", password="******"))  # good
         self.assertFalse(authenticate(email="*****@*****.**", password="******"))  # bad
         self.assertFalse(authenticate(email="*****@*****.**", password="******"))  # bad
     # Switching to public schema
     activate_public()
     with self.assertRaises(ProgrammingError):
         authenticate(email="*****@*****.**", password="******")  # unexisting, error
 def test_file_save_with_path(self):
     self.assertFalse(self.storage.exists("path/to"))
     with SchemaDescriptor.create(schema_name="tenant1"):
         self.storage.save("path/to/test.file", ContentFile("file saved with path"))
         self.assertTrue(self.storage.exists("path/to"))
         with self.storage.open("path/to/test.file") as f:
             self.assertEqual(f.read(), b"file saved with path")
         self.assertTrue(os.path.exists(os.path.join(self.temp_dir, "tenant1", "path", "to", "test.file")))
         self.storage.delete("path/to/test.file")
         self.assertFalse(self.storage.exists("test.file"))
 def test_file_url_complex(self):
     with SchemaDescriptor.create(schema_name="tenant"):
         self.assertEqual(
             self.storage.url(r"~!*()'@#$%^&*abc`+ =.file"),
             "/base-url/tenant/~!*()'%40%23%24%25%5E%26*abc%60%2B%20%3D.file",
         )
         self.assertEqual(self.storage.url("ab\0c"), "/base-url/tenant/ab%00c")
         self.assertEqual(self.storage.url("a/b\\c.file"), "/base-url/tenant/a/b/c.file")
         self.assertEqual(self.storage.url(""), "/base-url/tenant/")
         self.assertEqual(self.storage.url(None), "/base-url/tenant/")
Beispiel #10
0
    def test_filter(self):
        class FakeRecord:
            pass

        record = FakeRecord()
        scf = SchemaContextFilter()
        with SchemaDescriptor.create(schema_name="some-tenant", domain_url="some-tenant.some-url.com"):
            scf.filter(record)
        self.assertEqual(record.schema_name, "some-tenant")
        self.assertEqual(record.domain_url, "some-tenant.some-url.com")
Beispiel #11
0
 def test_synced_main_apps(self):
     with SchemaDescriptor.create(schema_name="www"):
         # Expected synced apps
         self.assertEqual(2, Catalog.objects.count())
         self.assertEqual(1, MainData.objects.count())
         self.assertEqual(1, User.objects.count())
         # Not expected synced apps
         with self.assertRaises(ProgrammingError):
             list(BlogEntry.objects.all())
         with self.assertRaises(ProgrammingError):
             list(TenantData.objects.all())
 def test_tenant_prefix(self):
     tpp = TenantPrefixPattern()
     for tenant in TenantModel.objects.all():
         # Try with folder
         tenant.domain_url = "everyone.test.com"  # This should be set by middleware
         with tenant:
             self.assertEqual(tpp.tenant_prefix, tenant.get_primary_domain().folder + "/")
         # Try with subdomain
         tenant.domain_url = "{}.test.com".format(tenant.schema_name)  # This should be set by middleware
         with tenant:
             self.assertEqual(tpp.tenant_prefix, "/")
     with SchemaDescriptor.create(schema_name="tenant1", domain_url="unexisting-domain.test.com"):
         self.assertEqual(tpp.tenant_prefix, "/")
 def test_synced_blog_apps(self):
     with SchemaDescriptor.create(schema_name="blog"):
         # Expected synced apps
         self.assertEqual(2, Catalog.objects.count())
         self.assertEqual(1, BlogEntry.objects.count())
         self.assertEqual(1, User.objects.count())
         # Direct and reverse relations
         self.assertEqual(User.objects.first(), BlogEntry.objects.first().user)
         self.assertEqual(User.objects.first().blogs.first(), BlogEntry.objects.first())
         # Not expected synced apps
         with self.assertRaises(ProgrammingError):
             list(MainData.objects.all())
         with self.assertRaises(ProgrammingError):
             list(TenantData.objects.all())
    def test_schema_activate(self):
        response = {}
        params = {
            "schema_name": "test",
            "domain_url": "localhost",
            "folder": "folder",
        }

        def receiver(sender, schema, **kwargs):
            response["value"] = schema

        schema_activate.connect(receiver)
        activate(SchemaDescriptor.create(**params))
        schema_activate.disconnect(receiver)
        for key, value in params.items():
            self.assertEqual(value, getattr(response["value"], key))
Beispiel #15
0
 def test_blog(self):
     schema = SchemaDescriptor.create(schema_name="blog",
                                      domain_url="blog.test.com")
     urlconf = get_urlconf_from_schema(schema)
     self.assertEqual(urlconf, "app_blog.urls")
Beispiel #16
0
 def test_www(self):
     schema = SchemaDescriptor.create(schema_name="www",
                                      domain_url="test.com")
     urlconf = get_urlconf_from_schema(schema)
     self.assertEqual(urlconf, "app_main.urls")
Beispiel #17
0
 def test_sample(self):
     schema = SchemaDescriptor.create(schema_name="sample")
     urlconf = get_urlconf_from_schema(schema)
     self.assertEqual(urlconf, None)
 def setUpClass(cls):
     tenant = SchemaDescriptor.create(schema_name="tenant1", domain_url="everyone.test.com")
     cls.tenant_client = TenantClient(tenant)