mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 14:35:27 +00:00
This adds support for running a Zulip production server with each realm on its own unique subdomain, e.g. https://realm_name.example.com. This patch includes a ton of important features: * Configuring the Zulip sesion middleware to issue cookier correctly for the subdomains case. * Throwing an error if the user tries to visit an invalid subdomain. * Runs a portion of the Casper tests with REALMS_HAVE_SUBDOMAINS enabled to test the subdomain signup process. * Updating our integrations documentation to refer to the current subdomain. * Enforces that users can only login to the subdomain of their realm (but does not restrict the API; that will be tightened in a future commit). Note that toggling settings.REALMS_HAVE_SUBDOMAINS on a live server is not supported without manual intervention (the main problem will be adding "subdomain" values for all the existing realms). [substantially modified by tabbott as part of merging]
45 lines
2.0 KiB
Python
45 lines
2.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import absolute_import
|
|
|
|
import os
|
|
|
|
from django.conf import settings
|
|
from django.test import TestCase, override_settings
|
|
from typing import Any
|
|
|
|
from zproject.settings import DEPLOY_ROOT
|
|
from zerver.lib.integrations import INTEGRATIONS
|
|
from zerver.lib.test_helpers import HostRequestMock
|
|
from zerver.views.integrations import add_api_uri_context
|
|
|
|
class IntegrationTest(TestCase):
|
|
def test_check_if_every_integration_has_logo_that_exists(self):
|
|
# type: () -> None
|
|
for integration in INTEGRATIONS.values():
|
|
self.assertTrue(os.path.isfile(os.path.join(DEPLOY_ROOT, integration.logo)))
|
|
|
|
@override_settings(REALMS_HAVE_SUBDOMAINS=False)
|
|
def test_api_url_view_base(self):
|
|
# type: () -> None
|
|
context = dict() # type: Dict[str, Any]
|
|
add_api_uri_context(context, HostRequestMock())
|
|
self.assertEqual(context["external_api_path_subdomain"], "zulipdev.com:9991/api")
|
|
self.assertEqual(context["external_api_uri_subdomain"], "http://zulipdev.com:9991/api")
|
|
|
|
@override_settings(REALMS_HAVE_SUBDOMAINS=True)
|
|
def test_api_url_view_subdomains_base(self):
|
|
# type: () -> None
|
|
context = dict() # type: Dict[str, Any]
|
|
add_api_uri_context(context, HostRequestMock())
|
|
self.assertEqual(context["external_api_path_subdomain"], "yourZulipDomain.zulipdev.com:9991/api")
|
|
self.assertEqual(context["external_api_uri_subdomain"], "http://yourZulipDomain.zulipdev.com:9991/api")
|
|
|
|
@override_settings(REALMS_HAVE_SUBDOMAINS=True, EXTERNAL_HOST="zulipdev.com")
|
|
def test_api_url_view_subdomains_full(self):
|
|
# type: () -> None
|
|
context = dict() # type: Dict[str, Any]
|
|
request = HostRequestMock(host="mysubdomain.zulipdev.com")
|
|
add_api_uri_context(context, request)
|
|
self.assertEqual(context["external_api_path_subdomain"], "mysubdomain.zulipdev.com:9991/api")
|
|
self.assertEqual(context["external_api_uri_subdomain"], "http://mysubdomain.zulipdev.com:9991/api")
|