def test_1010(self): """Serialization: Checksum -> XML -> Checksum""" checksum_obj_in = dataoneTypes.checksum('1' * 32) checksum_obj_in.algorithm = 'MD5' checksum_xml = checksum_obj_in.toxml('utf-8') checksum_obj_out = dataoneTypes.CreateFromDocument(checksum_xml) assert checksum_obj_in.value() == checksum_obj_out.value() assert checksum_obj_in.algorithm == checksum_obj_out.algorithm
def deserialize_and_check(self, doc, shouldfail=False): try: dataoneTypes.CreateFromDocument(doc) except (pyxb.PyXBException, xml.sax.SAXParseException): if shouldfail: return else: raise
def test_130(self): """Serialization: Checksum -> XML -> Checksum. """ checksum_obj_in = dataoneTypes.checksum('1' * 32) checksum_obj_in.algorithm = 'MD5' checksum_xml = checksum_obj_in.toxml() checksum_obj_out = dataoneTypes.CreateFromDocument(checksum_xml) self.assertEqual(checksum_obj_in.value(), checksum_obj_out.value()) self.assertEqual(checksum_obj_in.algorithm, checksum_obj_out.algorithm)
def deserialize_and_check(doc, shouldfail=False): try: dataoneTypes.CreateFromDocument(doc) except (pyxb.PyXBException, xml.sax.SAXParseException): if shouldfail: return else: raise if shouldfail: raise Exception('Did not receive expected exception')
def test_1000(self, filename, raises_pyxb_exc): """Deserialize: XML -> Checksum""" exp_dict = self.sample.load_json(filename) try: checksum_pyxb = dataoneTypes.CreateFromDocument(exp_dict['xml']) except (pyxb.PyXBException, xml.sax.SAXParseException): if not raises_pyxb_exc: raise else: assert checksum_pyxb.algorithm == exp_dict['algorithm'] assert checksum_pyxb.value() == exp_dict['checksum']
def deserialize_checksum_and_check(self, doc, shouldfail=False): try: obj = dataoneTypes.CreateFromDocument(doc[0]) except (pyxb.PyXBException, xml.sax.SAXParseException): if shouldfail: return else: raise else: self.assertEqual(obj.algorithm, doc[1]) self.assertEqual(obj.value(), doc[2])
def deserialize_pid_and_check(self, doc, shouldfail=False): try: obj = dataoneTypes.CreateFromDocument(doc[0]) except (pyxb.PyXBException, xml.sax.SAXParseException): if shouldfail: return else: raise if shouldfail: raise Exception('Did not receive expected exception') self.assertEqual(obj.value(), doc[1])
def __init__(self, pid=None, doc=None, sysmeta_xml=None): if not pid or not doc or not sysmeta_xml: raise ValueError( 'Either "pid" or science metadata "doc" or "sysmeta_xml" is None.' ) self.doc = doc.encode('utf-8') self.sysmeta = d1_types.CreateFromDocument(sysmeta_xml) self.pid = pid if self.pid != self.sysmeta.identifier.value(): raise ValueError( 'PID "{0}" does not match system metadata identifier "{1}".'. format(self.pid, self.sysmeta.identifier.value()))
def test_1280(self, cn_client_v2): """do_meta(): Successful system metadata download""" mock_get_system_metadata.add_callback('http://responses/cn') cli = d1_cli.impl.cli.CLI() cli.do_set('cn-url http://responses/cn') with tempfile.NamedTemporaryFile() as tmp_file: tmp_file_path = tmp_file.name pid_str = 'test_pid_1234' cli.do_meta('{} {}'.format(pid_str, tmp_file_path)) with open(tmp_file_path, 'rb') as f: received_sysmeta_pyxb = v2.CreateFromDocument(f.read()) client = d1_client.cnclient.CoordinatingNodeClient( 'http://responses/cn') expected_sysmeta_pyxb = client.getSystemMetadata(pid_str) d1_common.system_metadata.is_equivalent_pyxb(received_sysmeta_pyxb, expected_sysmeta_pyxb)
def getObjectFormatFromID(fmtid, default='application/octet-stream'): """Returns an ObjectFormat instance given a format id """ formatlistURL = ( 'https://repository.dataone.org/software/cicore/trunk/d1_common_java/src/' 'main/resources/org/dataone/service/resources/config/v1/objectFormatList.xml' ) doc = urllib2.urlopen(formatlistURL).read().decode('utf-8') formats = dataoneTypes.CreateFromDocument(doc) for format in formats.objectFormat: if format.formatId == fmtid: logging.info("Found format for %s" % fmtid) return format for format in formats: if format.formatId == default: return format return None
def test_1300(self, cn_client_v2): """do_log(): Successful object listing""" mock_get_log_records.add_callback('http://responses/cn') cli = d1_cli.impl.cli.CLI() cli.do_set('mn-url http://responses/cn') with tempfile.NamedTemporaryFile() as tmp_file: tmp_file_path = tmp_file.name cli.do_log(tmp_file_path) with open(tmp_file_path, 'rb') as f: received_event_log_pyxb = v2.CreateFromDocument(f.read()) client = d1_client.mnclient.MemberNodeClient('http://responses/cn') expected_event_log_pyxb = client.getLogRecords() now = datetime.datetime.utcnow() for log_entry in received_event_log_pyxb.logEntry: log_entry.dateLogged = now for log_entry in expected_event_log_pyxb.logEntry: log_entry.dateLogged = now assert d1_common.xml. \ are_equal_pyxb(received_event_log_pyxb, expected_event_log_pyxb)