def test_get_branded_template(self): # Get a branded (non default) template and make sure we get what we expect template = CourseEmailTemplate.get_template(name="branded.template") assert template.html_template is not None assert template.plain_template is not None assert 'THIS IS A BRANDED HTML TEMPLATE' in template.html_template assert 'THIS IS A BRANDED TEXT TEMPLATE' in template.plain_template
def test_render_plaintext_without_context(self): template = CourseEmailTemplate.get_template() base_context = self._get_sample_plain_context() for keyname in base_context: context = dict(base_context) del context[keyname] with pytest.raises(KeyError): template.render_plaintext("My new plain text.", context)
def test_render_html_without_context(self): template = CourseEmailTemplate.get_template() base_context = self._get_sample_html_context() for keyname in base_context: context = dict(base_context) del context[keyname] with self.assertRaises(KeyError): template.render_htmltext("My new html text.", context)
def test_render_plain_no_escaping(self): template = CourseEmailTemplate.get_template() context = self._add_xss_fields(self._get_sample_plain_context()) message = template.render_plaintext( "Dear %%USER_FULLNAME%%, thanks for enrolling in %%COURSE_DISPLAY_NAME%%.", context) assert '<script>' not in message assert context['course_title'] in message assert context['name'] in message
def test_render_html_xss(self): template = CourseEmailTemplate.get_template() context = self._add_xss_fields(self._get_sample_html_context()) message = template.render_htmltext( "Dear %%USER_FULLNAME%%, thanks for enrolling in %%COURSE_DISPLAY_NAME%%.", context) assert '<script>' not in message assert '<script>alert('Course Title!');</alert>' in message assert '<script>alert('Profile Name!');</alert>' in message
def test_get_branded_template(self): # Get a branded (non default) template and make sure we get what we expect template = CourseEmailTemplate.get_template(name="branded.template") self.assertIsNotNone(template.html_template) self.assertIsNotNone(template.plain_template) self.assertIn(u"THIS IS A BRANDED HTML TEMPLATE", template.html_template) self.assertIn(u"THIS IS A BRANDED TEXT TEMPLATE", template.plain_template)
def clean_name(self): """Validate the name field. Enforce uniqueness constraint on 'name' field""" # Note that we get back a blank string in the Form for an empty 'name' field # we want those to be set to None in Python and NULL in the database name = self.cleaned_data.get("name").strip() or None # if we are creating a new CourseEmailTemplate, then we need to # enforce the uniquess constraint as part of the Form validation if not self.instance.pk: try: CourseEmailTemplate.get_template(name) # already exists, this is no good raise ValidationError( f'Name of "{name}" already exists, this must be unique.') except CourseEmailTemplate.DoesNotExist: # this is actually the successful validation pass return name
def test_render_plain(self): template = CourseEmailTemplate.get_template() context = self._get_sample_plain_context() template.render_plaintext("My new plain text.", context)
def test_render_html(self): template = CourseEmailTemplate.get_template() context = self._get_sample_html_context() template.render_htmltext("My new html text.", context)
def test_get_template(self): # Get the default template, which has name=None template = CourseEmailTemplate.get_template() assert template.html_template is not None assert template.plain_template is not None
def test_get_missing_template(self): with pytest.raises(CourseEmailTemplate.DoesNotExist): CourseEmailTemplate.get_template()
def test_get_template(self): # Get the default template, which has name=None template = CourseEmailTemplate.get_template() self.assertIsNotNone(template.html_template) self.assertIsNotNone(template.plain_template)
def test_get_missing_template(self): with self.assertRaises(CourseEmailTemplate.DoesNotExist): CourseEmailTemplate.get_template()