@@ -231,3 +231,35 @@ def test_get_oai_dc_metadata(self):
231
231
self .assertTrue ('identifier' in md )
232
232
self .assertTrue ('title' in md )
233
233
self .assertTrue ('lang' in md ['title' ][0 ])
234
+
235
+ def test_sensitive_fields_are_removed (self ):
236
+ """
237
+ Ensure some sensitive fields are never present in output of OAI-PMH apis
238
+ """
239
+ sensitive_field_values = [
'[email protected] ' ,
'999-123-123' ,
'999-456-456' ]
240
+
241
+ def _check_fields (content ):
242
+ """
243
+ Verify sensitive fields values are not in the content. Checking for field value, instead
244
+ of field name, since the field names might be different in Datacite etc other formats.
245
+ """
246
+ for sensitive_field_value in sensitive_field_values :
247
+ self .assertEqual (sensitive_field_value not in str (content ), True ,
248
+ 'field %s should have been stripped' % sensitive_field_value )
249
+
250
+ # setup some records to have sensitive fields
251
+ for cr in CatalogRecord .objects .filter (pk__in = (1 , 2 , 3 )):
252
+ cr .research_dataset ['curator' ][0 ].update ({
253
+ 'email' : sensitive_field_values [0 ],
254
+ 'phone' : sensitive_field_values [1 ],
255
+ 'telephone' : sensitive_field_values [2 ],
256
+ })
257
+ cr .force_save ()
258
+
259
+ response = self .client .get ('/oai/?verb=GetRecord&identifier=%s&metadataPrefix=oai_dc' % self .identifier )
260
+ self .assertEqual (response .status_code , status .HTTP_200_OK )
261
+ _check_fields (response .content )
262
+
263
+ response = self .client .get ('/oai/?verb=GetRecord&identifier=%s&metadataPrefix=oai_datacite' % self .identifier )
264
+ self .assertEqual (response .status_code , status .HTTP_200_OK )
265
+ _check_fields (response .content )
0 commit comments