def METHOD_NAME(self):
    url = urlreverse('ietf.doc.views_downref.downref_registry_add')
    login_testing_unauthorized(self, "plain", url)
    # secretariat - get the form to add entries to the registry
    self.client.login(username='secretary', password='secretary+password')
    r = self.client.get(url)
    self.assertContains(r, '<h1>Add entry to the downref registry</h1>')
    self.assertContains(r, 'Save downref')
    # area director - get the form to add entries to the registry
    self.client.login(username='ad', password='ad+password')
    r = self.client.get(url)
    self.assertContains(r, '<h1>Add entry to the downref registry</h1>')
    self.assertContains(r, 'Save downref')
    # error - already in the downref registry
    r = self.client.post(url, dict(rfc=self.rfcalias.pk, drafts=(self.docalias.pk, )))
    self.assertContains(r, 'Downref is already in the registry')
    # error - source is not in an approved state
    r = self.client.get(url)
    self.assertEqual(r.status_code, 200)
    r = self.client.post(url, dict(rfc=self.rfcalias.pk, drafts=(self.draftalias.pk, )))
    self.assertContains(r, 'Draft is not yet approved')
    # error - the target is not a normative reference of the source
    self.draft.set_state(State.objects.get(used=True, type="draft-iesg", slug="pub"))
    r = self.client.get(url)
    self.assertEqual(r.status_code, 200)
    r = self.client.post(url, dict(rfc=self.rfcalias.pk, drafts=(self.draftalias.pk, )))
    self.assertContains(r, 'There does not seem to be a normative reference to RFC')
    self.assertContains(r, 'Save downref anyway')
    # normal - approve the document so the downref is now okay
    RelatedDocument.objects.create(source=self.draft, target=self.rfcalias, relationship_id='refnorm')
    draft_de_count_before = self.draft.docevent_set.count()
    rfc_de_count_before = self.rfc.docevent_set.count()
    r = self.client.get(url)
    self.assertEqual(r.status_code, 200)
    r = self.client.post(url, dict(rfc=self.rfcalias.pk, drafts=(self.draftalias.pk, )))
    self.assertEqual(r.status_code, 302)
    newurl = urlreverse('ietf.doc.views_downref.downref_registry')
    r = self.client.get(newurl)
    self.assertContains(r, '<a href="/doc/draft-ietf-mars-test')
    self.assertTrue(RelatedDocument.objects.filter(source=self.draft, target=self.rfcalias, relationship_id='downref-approval'))
    self.assertEqual(self.draft.docevent_set.count(), draft_de_count_before + 1)
    self.assertEqual(self.rfc.docevent_set.count(), rfc_de_count_before + 1)