def run_for(self, obj_sets, max_verdicts=100): """Executes checks for the given object sets""" run_request = RunRequest(obj_sets, max_verdicts) request = Marshal().serialize(run_request) worklist_id = self._get_id() resp = self._connection.execute('POST', 'atc/runs', params={'worklistId': worklist_id}, accept='application/xml', content_type='application/xml', body=request) run_response = RunResponse() Marshal.deserialize(resp.text, run_response) resp = self._connection.execute( 'GET', f'atc/worklists/{worklist_id}', params={'includeExemptedFindings': 'false'}, accept='application/atc.worklist.v1+xml') worklist = WorkList() Marshal.deserialize(resp.text, worklist) return WorkListRunResult(run_response, worklist)
def try_activate(adt_object): """Activates the given object and returns CheckResults with the activation results. """ request = ADTObjectReferences() request.add_object(adt_object) resp = _send_activate(adt_object, request, activation_params(pre_audit_requested=True)) if 'application/vnd.sap.adt.inactivectsobjects.v1+xml' in resp.headers.get( 'Content-Type', ''): ioc = Marshal.deserialize(resp.text, IOCList()) get_logger().debug(ioc.entries) request = ADTObjectReferences([ entry.object.reference for entry in ioc.entries if entry.object is not None and entry.object.deleted == 'false' ]) resp = _send_activate(adt_object, request, activation_params(pre_audit_requested=False)) results = CheckResults() if resp.text: Marshal.deserialize(resp.text, results) return (results, resp)
def test_deserialize_with_node_attribute_value(self): parent = XmlNodeAttributePropertyADTObject() Marshal.deserialize( '''<?xml version="1.0" encoding="UTF-8"?> <mock:xmlnode xmlns:mock="https://example.org/mock" mock:attribute="deserialize"/>''', parent) self.assertEqual(parent.attribute, 'deserialize')
def test_deserialize_with_node_attribute_missing(self): parent = XmlNodeAttributePropertyADTObject() Marshal.deserialize( '''<?xml version="1.0" encoding="UTF-8"?> <mock:xmlnode xmlns:mock="https://example.org/mock"/>''', parent) self.assertIsNone(parent.attribute)
def test_deserialize_with_node_object(self): parent = XmlNodePropertyADTObject() Marshal.deserialize( '''<?xml version="1.0" encoding="UTF-8"?> <mock:xmlnodeparent xmlns:mock="https://example.org/mock"> <mock:child attribute="deserialize"/> </mock:xmlnodeparent>''', parent) self.assertIsNotNone(parent.child) self.assertEqual(parent.child.attribute, 'deserialize')
def test_deserialize_with_elem_text_empty(self): parent = TextElementADTObject() Marshal.deserialize( '''<?xml version="1.0" encoding="UTF-8"?> <mock:have_child_with_text xmlns:mock="https://example.org/mock"> <mock:holdstext></mock:holdstext> </mock:have_child_with_text>''', parent) self.assertEqual(parent.text, '')
def fetch_reporters(connection): """Returns the list of supported ADT reporters""" reporters = ReportersContainer() resp = connection.execute('GET', reporters.objtype.basepath, accept=reporters.objtype.mimetype) Marshal.deserialize(resp.text, reporters) return reporters.items
def test_deserialize_with_factory(self): dummy = DummyWithChildFactory() Marshal.deserialize( """<?xml version="1.0" encoding="UTF-8"?> <dummyxmlns:dummyelem> <child attribute="implicit"/> <child_setter attribute="setter"/> </dummyxmlns:dummyelem> """, dummy) self.assertEqual(DummyChild.instances[0].attribute, 'implicit') self.assertEqual(dummy.child_setter.attribute, 'setter')
def run(connection, reporter, object_list): """Run the reporter :class Reporter: for the give object list :class CheckObjectList:""" xml = Marshal().serialize(object_list) resp = connection.execute('POST', object_list.objtype.basepath, accept=CheckReportList.objtype.mimetype, content_type=object_list.objtype.mimetype, params={'reporters': reporter.name}, body=xml) report_list = CheckReportList() Marshal.deserialize(resp.text, report_list) return report_list.items
def test_deserialize_versioned(self): obj = DummyADTObjectWithVersions() marshal = Marshal() marshal.deserialize( '''<?xml version="1.0" encoding="UTF-8"?> <mock:versioned xmlns:mock="https://github.com/jfilak/sapcli/mock" mock:attrverfst="de-attr-fst" mock:attrverboth="de-attr-both" mock:attrverall="de-attr-all"> <adtcore:packageRef/> <mock:elemverfst>de-elem-fst</mock:elemverfst> <mock:elemverboth>de-elem-both</mock:elemverboth> <mock:elemverall>de-elem-all</mock:elemverall> </mock:versioned>''', obj) self.assertEqual(obj.attrverfst, 'de-attr-fst') self.assertEqual(obj.attrverboth, 'de-attr-both') self.assertEqual(obj.attrverall, 'de-attr-all') self.assertEqual(obj.elemverfst, 'de-elem-fst') self.assertEqual(obj.elemverboth, 'de-elem-both') self.assertEqual(obj.elemverall, 'de-elem-all')
def test_deserialize_xml_text_list(self): container = DummyWithTheTextList() act = Marshal.deserialize( '''<?xml version="1.0" encoding="UTF-8"?> <mock:withlist xmlns:mock="https://example.org/mock"> <mock:item>1</mock:item> <mock:item>2</mock:item> <mock:item>3</mock:item> </mock:withlist>''', container) self.assertEqual(container.the_text_list, ['1', '2', '3'])
def test_deserialization(self): obj = Dummy() marshal = Marshal() xml_data = marshal.serialize(obj) clone = DummyWithSetters() ret = Marshal.deserialize(xml_data, clone) self.assertEqual(clone, ret) self.assertEqual(obj.first, clone.first) self.assertEqual(obj.second, clone.second) self.assertEqual('EEE', clone.third) self.assertEqual(obj.value.first, clone.value.first) self.assertEqual(obj.value.second, clone.value.second) self.assertEqual(obj.value.supernested.yetanother, clone.value.supernested.yetanother)
def test_deserialize_xml_container(self): container = DummyOjbectWithContainer() act = Marshal.deserialize( '''<?xml version="1.0" encoding="UTF-8"?> <adtcore:container xmlns:adtcore="http://www.sap.com/adt/core"> <adtcore:packageRef/> <items> <item number="1"/> <item number="2"/> <item number="3"/> </items> </adtcore:container>''', container) self.assertEqual(container.items[0], DummyContainerItem(1)) self.assertEqual(container.items[1], DummyContainerItem(2)) self.assertEqual(container.items[2], DummyContainerItem(3))
def activate(adt_object): """Activates the given object""" request = ADTObjectReferences() request.add_object(adt_object) resp = _send_activate(adt_object, request, activation_params(pre_audit_requested=True)) if 'application/vnd.sap.adt.inactivectsobjects.v1+xml' in resp.headers.get( 'Content-Type', ''): ioc = Marshal.deserialize(resp.text, IOCList()) get_logger().debug(ioc.entries) request = ADTObjectReferences([ entry.object.reference for entry in ioc.entries if entry.object is not None and entry.object.deleted == 'false' ]) resp = _send_activate(adt_object, request, activation_params(pre_audit_requested=False)) if resp.text: raise SAPCliError( f'Could not activate the object {adt_object.name}: {resp.text}')
def fetch_inactive_objects(connection): """Returns list of inactive objects""" resp = connection.execute('GET', 'activation/inactiveobjects') return Marshal.deserialize(resp.text, IOCList())