Beispiel #1
0
    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)
Beispiel #2
0
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, '')
Beispiel #7
0
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')
Beispiel #9
0
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))
Beispiel #14
0
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}')
Beispiel #15
0
def fetch_inactive_objects(connection):
    """Returns list of inactive objects"""

    resp = connection.execute('GET', 'activation/inactiveobjects')
    return Marshal.deserialize(resp.text, IOCList())