def test_domain_url(self): """ Domain and URL attributes """ instance = OpenEdXInstanceFactory( internal_lms_domain='sample.example.org', name='Sample Instance' ) internal_lms_domain = 'sample.example.org' internal_lms_preview_domain = 'preview-sample.example.org' internal_studio_domain = 'studio-sample.example.org' self.assertEqual(instance.internal_lms_domain, internal_lms_domain) self.assertEqual(instance.internal_lms_preview_domain, internal_lms_preview_domain) self.assertEqual(instance.internal_studio_domain, internal_studio_domain) # External domains are empty by default. self.assertEqual(instance.external_lms_domain, '') self.assertEqual(instance.external_lms_preview_domain, '') self.assertEqual(instance.external_studio_domain, '') # When external domain is empty, main domains/URLs equal internal domains. self.assertEqual(instance.domain, internal_lms_domain) self.assertEqual(instance.lms_preview_domain, internal_lms_preview_domain) self.assertEqual(instance.studio_domain, internal_studio_domain) self.assertEqual(instance.studio_domain_nginx_regex, r'~^(studio\-sample\.example\.org)$') self.assertEqual(instance.url, 'http://{}/'.format(internal_lms_domain)) self.assertEqual(instance.lms_preview_url, 'http://{}/'.format(internal_lms_preview_domain)) self.assertEqual(instance.studio_url, 'http://{}/'.format(internal_studio_domain)) self.assertEqual(str(instance), 'Sample Instance (sample.example.org)') # External domains take precedence over internal domains. external_lms_domain = 'external.domain.com' external_lms_preview_domain = 'lms-preview.external.domain.com' external_studio_domain = 'external-studio.domain.com' instance.external_lms_domain = external_lms_domain instance.external_lms_preview_domain = external_lms_preview_domain instance.external_studio_domain = external_studio_domain # Internal domains are still the same. self.assertEqual(instance.internal_lms_domain, internal_lms_domain) self.assertEqual(instance.internal_lms_preview_domain, internal_lms_preview_domain) self.assertEqual(instance.internal_studio_domain, internal_studio_domain) # Default domains will now equal external domains. self.assertEqual(instance.domain, external_lms_domain) self.assertEqual(instance.lms_preview_domain, external_lms_preview_domain) self.assertEqual(instance.studio_domain, external_studio_domain) self.assertEqual( instance.studio_domain_nginx_regex, r'~^(external\-studio\.domain\.com|studio\-sample\.example\.org)$' ) self.assertEqual(instance.url, 'http://{}/'.format(external_lms_domain)) self.assertEqual(instance.lms_preview_url, 'http://{}/'.format(external_lms_preview_domain)) self.assertEqual(instance.studio_url, 'http://{}/'.format(external_studio_domain)) self.assertEqual(str(instance), 'Sample Instance (external.domain.com)') # URLs respect the protocol setting. instance.protocol = 'https' self.assertEqual(instance.url, 'https://{}/'.format(external_lms_domain)) self.assertEqual(instance.lms_preview_url, 'https://{}/'.format(external_lms_preview_domain)) self.assertEqual(instance.studio_url, 'https://{}/'.format(external_studio_domain))