2222from django .conf import settings
2323from django .forms import Form
2424from django .utils .html import escape
25+ from django .test import override_settings
2526from django .utils .text import slugify
2627
2728from tastypie .test import ResourceTestCaseMixin
@@ -1773,6 +1774,12 @@ def test_document_nonietf_pubreq_button(self):
17731774 self .assertEqual (r .status_code , 200 )
17741775 self .assertNotContains (r , "Request publication" )
17751776
1777+ def _parse_bibtex_response (self , response ) -> dict :
1778+ parser = bibtexparser .bparser .BibTexParser ()
1779+ parser .homogenise_fields = False # do not modify field names (e.g., turns "url" into "link" by default)
1780+ return bibtexparser .loads (response .content .decode (), parser = parser ).get_entry_dict ()
1781+
1782+ @override_settings (RFC_EDITOR_INFO_BASE_URL = 'https://www.rfc-editor.ietf.org/info/' )
17761783 def test_document_bibtex (self ):
17771784 rfc = WgRfcFactory .create (
17781785 #other_aliases = ['rfc6020',],
@@ -1785,12 +1792,13 @@ def test_document_bibtex(self):
17851792 #
17861793 url = urlreverse ('ietf.doc.views_doc.document_bibtex' , kwargs = dict (name = rfc .name ))
17871794 r = self .client .get (url )
1788- entry = bibtexparser . loads ( unicontent ( r )). get_entry_dict ( )["rfc%s" % num ]
1795+ entry = self . _parse_bibtex_response ( r )["rfc%s" % num ]
17891796 self .assertEqual (entry ['series' ], 'Request for Comments' )
17901797 self .assertEqual (entry ['number' ], num )
17911798 self .assertEqual (entry ['doi' ], '10.17487/RFC%s' % num )
17921799 self .assertEqual (entry ['year' ], '2010' )
17931800 self .assertEqual (entry ['month' ], 'oct' )
1801+ self .assertEqual (entry ['url' ], f'https://www.rfc-editor.ietf.org/info/rfc{ num } ' )
17941802 #
17951803 self .assertNotIn ('day' , entry )
17961804
@@ -1806,25 +1814,27 @@ def test_document_bibtex(self):
18061814 url = urlreverse ('ietf.doc.views_doc.document_bibtex' , kwargs = dict (name = april1 .name ))
18071815 r = self .client .get (url )
18081816 self .assertEqual (r .get ('Content-Type' ), 'text/plain; charset=utf-8' )
1809- entry = bibtexparser . loads ( unicontent ( r )). get_entry_dict ()[ ' rfc%s' % num ]
1817+ entry = self . _parse_bibtex_response ( r )[ " rfc%s" % num ]
18101818 self .assertEqual (entry ['series' ], 'Request for Comments' )
18111819 self .assertEqual (entry ['number' ], num )
18121820 self .assertEqual (entry ['doi' ], '10.17487/RFC%s' % num )
18131821 self .assertEqual (entry ['year' ], '1990' )
18141822 self .assertEqual (entry ['month' ], 'apr' )
18151823 self .assertEqual (entry ['day' ], '1' )
1824+ self .assertEqual (entry ['url' ], f'https://www.rfc-editor.ietf.org/info/rfc{ num } ' )
18161825
18171826 draft = IndividualDraftFactory .create ()
18181827 docname = '%s-%s' % (draft .name , draft .rev )
18191828 bibname = docname [6 :] # drop the 'draft-' prefix
18201829 url = urlreverse ('ietf.doc.views_doc.document_bibtex' , kwargs = dict (name = draft .name ))
18211830 r = self .client .get (url )
1822- entry = bibtexparser . loads ( unicontent ( r )). get_entry_dict ( )[bibname ]
1831+ entry = self . _parse_bibtex_response ( r )[bibname ]
18231832 self .assertEqual (entry ['note' ], 'Work in Progress' )
18241833 self .assertEqual (entry ['number' ], docname )
18251834 self .assertEqual (entry ['year' ], str (draft .pub_date ().year ))
18261835 self .assertEqual (entry ['month' ], draft .pub_date ().strftime ('%b' ).lower ())
18271836 self .assertEqual (entry ['day' ], str (draft .pub_date ().day ))
1837+ self .assertEqual (entry ['url' ], f'https://datatracker.ietf.org/doc/html/{ docname } ' )
18281838 #
18291839 self .assertNotIn ('doi' , entry )
18301840
0 commit comments