Exemplo n.º 1
0
class CheckMessage(metaclass=OrderedClassMembers):
    """Run Check result message"""

    uri = XmlNodeAttributeProperty('chkrun:uri')
    typ = XmlNodeAttributeProperty('chkrun:type')
    short_text = XmlNodeAttributeProperty('chkrun:shortText')
    category = XmlNodeAttributeProperty('chkrun:category')
Exemplo n.º 2
0
class CheckObject(metaclass=OrderedClassMembers):
    """ADT Check Object item for the run request"""

    uri = XmlNodeAttributeProperty('adtcore:uri')
    chkrun_version = XmlNodeAttributeProperty('chkrun:version', value='active')

    def __init__(self, uri):
        self.uri = uri
Exemplo n.º 3
0
class CheckProperties(metaclass=OrderedClassMembers):
    """Run Check result properties"""

    checked = XmlNodeAttributeProperty('checkExecuted')
    activated = XmlNodeAttributeProperty('activationExecuted')
    generated = XmlNodeAttributeProperty('generationExecuted')

    def __init__(self):
        self.checked = None
        self.activated = None
        self.generated = None
Exemplo n.º 4
0
class CheckReport(metaclass=OrderedClassMembers):
    """Group of messages for a single reporter"""

    reporter = XmlNodeAttributeProperty('chkrun:reporter')
    triggering_uri = XmlNodeAttributeProperty('chkrun:triggeringUri')
    status = XmlNodeAttributeProperty('chkrun:status')
    status_text = XmlNodeAttributeProperty('chkrun:statusText')
    messages = XmlNodeProperty('chkrun:checkMessageList')

    def __init__(self):
        self.messages = CheckMessageList()
Exemplo n.º 5
0
class WorkList(metaclass=OrderedClassMembers):
    """atcworklist:worklist XML Node"""

    objtype = ADTObjectType(None, None, XMLNS_ATCWORKLIST, 'application/xml', None, 'worklist')

    worklist_id = XmlNodeAttributeProperty('atcworklist:id')
    timestamp = XmlNodeAttributeProperty('atcworklist:timestamp')
    used_objectset = XmlNodeAttributeProperty('atcworklist:usedObjectSet')
    object_set_is_complete = XmlNodeAttributeProperty('atcworklist:objectSetIsComplete')
    object_sets = XmlNodeProperty('atcworklist:objectSets', factory=WorkListObjectSetList)
    objects = XmlNodeProperty('atcworklist:objects', factory=ATCObjectList)
Exemplo n.º 6
0
class TestDurationSettings(metaclass=OrderedClassMembers):
    """Parameters for selection of executed tests.

       Usage:
         run = RunConfiguration()
         run.options.test_durations.short = 'true'
         run.options.test_durations.medium = 'true'
         run.options.test_durations.long = 'true'
    """

    short = XmlNodeAttributeProperty('short', value='true')
    medium = XmlNodeAttributeProperty('medium', value='true')
    long = XmlNodeAttributeProperty('long', value='true')
Exemplo n.º 7
0
class TestRiskLevelSettings(metaclass=OrderedClassMembers):
    """Parameters for selection of executed tests.

       Usage:
         run = RunConfiguration()
         run.options.test_risk_levels.harmless = 'true'
         run.options.test_risk_levels.dangerous = 'true'
         run.options.test_risk_levels.critical = 'true'
    """

    harmless = XmlNodeAttributeProperty('harmless', value='true')
    dangerous = XmlNodeAttributeProperty('dangerous', value='true')
    critical = XmlNodeAttributeProperty('critical', value='true')
    def test_xml_node_attribute_property_init(self):
        template = XmlAttributeProperty('attribute', None)

        node = XmlNodeAttributeProperty('attribute')
        self.assertIsNone(node.default_value)
        self.assertEqual(node.name, template.name)
        self.assertEqual(node.deserialize, template.deserialize)
        self.assertEqual(node.version, template.version)

        node = XmlNodeAttributeProperty('attribute2', value='value', deserialize=False, version='v2')
        self.assertEqual(node.default_value, 'value')
        self.assertEqual(node.name, 'attribute2')
        self.assertFalse(node.deserialize)
        self.assertEqual(node.version, 'v2')
Exemplo n.º 9
0
class TestDeterminationStrategy(metaclass=OrderedClassMembers):
    """Parameters for selection of executed tests

       Usage:
         run = RunConfiguration()
         run.options.test_determination_strategy.same_program = 'true'
         run.options.test_determination_strategy.assigned_tests = 'false'
         run.options.test_determination_strategy.append_assigned_tests_preview = 'true'
    """

    same_program = XmlNodeAttributeProperty('sameProgram', value='true')
    assigned_tests = XmlNodeAttributeProperty('assignedTests', value='false')
    append_assigned_tests_preview = XmlNodeAttributeProperty(
        'appendAssignedTestsPreview', value='true')
Exemplo n.º 10
0
class ATCFinding(metaclass=OrderedClassMembers):
    """atcfinding:finding XML Node"""

    uri = XmlNodeAttributeProperty('adtcore:uri')
    location = XmlNodeAttributeProperty('atcfinding:location')
    priority = XmlNodeAttributeProperty('atcfinding:priority')
    check_id = XmlNodeAttributeProperty('atcfinding:checkId')
    check_title = XmlNodeAttributeProperty('atcfinding:checkTitle')
    message_id = XmlNodeAttributeProperty('atcfinding:messageId')
    message_title = XmlNodeAttributeProperty('atcfinding:messageTitle')
    exemption_approval = XmlNodeAttributeProperty('atcfinding:exemptionApproval')
    exemption_kind = XmlNodeAttributeProperty('atcfinding:exemptionKind')
class XmlNodeAttributePropertyADTObject(metaclass=OrderedClassMembers):
    def __init__(self):
        self.objtype = ADTObjectType(
            None, None, XMLNamespace('mock', 'https://example.org/mock'),
            'application/xml', None, 'xmlnode')

    attribute = XmlNodeAttributeProperty('mock:attribute')
Exemplo n.º 12
0
class CoverageOption(metaclass=OrderedClassMembers):
    """Enabled/Disabled coverage for an ABAP Unit Test run.

       Usage:
         run = RunConfiguration()
         run.external.coverage.active = 'false'
    """

    active = XmlNodeAttributeProperty('active', value='false')
Exemplo n.º 13
0
class WithNavigationUriOption(metaclass=OrderedClassMembers):
    """Enable/Disable Results Navigation URI.

       Usage:
         run = RunConfiguration()
         run.options.with_navigation_uri.enabled = 'false'
    """

    enabled = XmlNodeAttributeProperty('enabled', value='false')
class DummyADTObjectWithVersions(ADTObject):

    OBJTYPE = ADTObjectType(
        None, None,
        XMLNamespace('mock', 'https://github.com/jfilak/sapcli/mock'), None,
        None, 'versioned')

    elemverfst = XmlNodeProperty('mock:elemverfst',
                                 kind=XmlElementKind.TEXT,
                                 version='V1')
    elemverboth = XmlNodeProperty('mock:elemverboth',
                                  kind=XmlElementKind.TEXT,
                                  version=['V1', 'V2'])

    attrverfst = XmlNodeAttributeProperty('mock:attrverfst', version='V1')
    attrverboth = XmlNodeAttributeProperty('mock:attrverboth',
                                           version=['V1', 'V2'])

    def __init__(self):
        super(DummyADTObjectWithVersions, self).__init__(None, None)

        self._elemverall = 'Init-elem-all'
        self.elemverfst = 'Init-elem-fst'
        self.elemverboth = 'Init-elem-both'

        self._attrverall = 'Init-attr-all'
        self.attrverfst = 'Init-attr-fst'
        self.attrverboth = 'Init-attr-both'

    @xml_element('mock:elemverall', kind=XmlElementKind.TEXT)
    def elemverall(self):
        return self._elemverall

    @elemverall.setter
    def elemverall(self, value):
        self._elemverall = value

    @xml_attribute('mock:attrverall')
    def attrverall(self):
        return self._attrverall

    @attrverall.setter
    def attrverall(self, value):
        self._attrverall = value
Exemplo n.º 15
0
class UriTypeOption(metaclass=OrderedClassMembers):
    """URI Type of Objects in ABAP Unit Test run configuration.

       Usage:
         run = RunConfiguration()
         run.options.uri_type.value = UriTypeOptionValue.SEMANTIC
    """

    value = XmlNodeAttributeProperty('value',
                                     value=UriTypeOptionValue.SEMANTIC)
Exemplo n.º 16
0
class Binding(metaclass=OrderedClassMembers):
    """The node serviceBinding/binding"""

    # [ODATA]
    typ = XmlNodeAttributeProperty('srvb:type')
    # [V2,V4]
    version = XmlNodeAttributeProperty('srvb:version')
    # [0]
    category = XmlNodeAttributeProperty('srvb:category')
    # Holds Name of the Business Service Binding object
    implementation = XmlNodeProperty('srvb:implementation',
                                     factory=Implementation)

    @property
    def term(self):
        """Rerturns code for URL. The name 'term' comes
           from /sap/bc/adt/discovery.
        """

        return f'{self.typ.lower()}{self.version.lower()}'
Exemplo n.º 17
0
class CheckMessage(metaclass=OrderedClassMembers):
    """Run Check result message"""

    obj_descr = XmlNodeAttributeProperty('objDescr')
    typ = XmlNodeAttributeProperty('type')
    line = XmlNodeAttributeProperty('line')
    href = XmlNodeAttributeProperty('href')
    force_supported = XmlNodeAttributeProperty('forceSupported')
    short_text = XmlNodeProperty('shortText', factory=CheckMessageText)

    @property
    def is_error(self):
        """Returns true if the message is an error"""

        return self.typ == 'E'

    @property
    def is_warning(self):
        """Returns true if the message is an error"""

        return self.typ == 'W'
    def test_xml_node_attribute_property_get_set(self):
        node = XmlNodeAttributeProperty('attribute3', value='value2')
        obj = node

        self.assertEqual(node.get(obj), 'value2')
        node.set(obj, 'foo2')
        self.assertEqual(node.get(obj), 'foo2')
        self.assertEqual(node.default_value, 'value2')
Exemplo n.º 19
0
class ATCObject(metaclass=OrderedClassMembers):
    """atcobject:object XML Node"""

    objtype = ADTObjectType(None, None, XMLNS_ATCOBJECT, 'application/xml', None, 'object')

    uri = XmlNodeAttributeProperty('adtcore:uri')
    typ = XmlNodeAttributeProperty('adtcore:type')
    name = XmlNodeAttributeProperty('adtcore:name')
    package_name = XmlNodeAttributeProperty('adtcore:packageName')
    author = XmlNodeAttributeProperty('atcobject:author')
    object_type_id = XmlNodeAttributeProperty('atcobject:objectTypeId')
    findings = XmlNodeProperty('atcobject:findings', factory=ATCFindingList)
Exemplo n.º 20
0
class Reporter(metaclass=OrderedClassMembers):
    """ADT Object Checks Run Reporter"""

    name = XmlNodeAttributeProperty('chkrun:name')
    supported_types = XmlListNodeProperty('chkrun:supportedType', kind=XmlElementKind.TEXT)

    def __init__(self, name=None):
        self.name = name

    def supports_type(self, obj_code):
        """Returns true if the give object code is supported"""

        return any((fnmatch(obj_code, styp) for styp in self.supported_types))

    def supports_object(self, adt_obj):
        """Returns true if the given object is supported"""

        return self.supports_type(adt_obj.objtype.code)
Exemplo n.º 21
0
class RunRequest(metaclass=OrderedClassMembers):
    """Worklist run Request"""

    objtype = ADTObjectType(None, None, XMLNS_ATC, 'application/xml', None, 'run')

    max_verdicts = XmlNodeAttributeProperty('maximumVerdicts')

    def __init__(self, obj_sets, max_verdicts):
        """:param obj_sets: An instance of :class:`ADTObjectSets`
           :param max_verdicts: A number
        """
        self._sets = obj_sets
        self.max_verdicts = max_verdicts

    @xml_element('objectSets')
    def sets(self):
        """Set of objects which we want to check"""

        return self._sets
Exemplo n.º 22
0
class WorkListObjectSet(metaclass=OrderedClassMembers):
    """atcworklist:objectSet XML Node"""

    name = XmlNodeAttributeProperty('atcworklist:name')
    title = XmlNodeAttributeProperty('atcworklist:title')
    kind = XmlNodeAttributeProperty('atcworklist:kind')
Exemplo n.º 23
0
class ServiceBinding(ADTObject):
    """Business Service binding abstraction"""

    OBJTYPE = ADTObjectType(
        'SRVB/SVB', 'businessservices/bindings', XMLNS_SRVB, [
            'application/vnd.sap.adt.businessservices.servicebinding.v2+xml',
            'application/vnd.sap.adt.businessservices.servicebinding.v1+xml'
        ], {}, 'serviceBinding')

    release_supported = XmlNodeAttributeProperty('srvb:releaseSupported')
    published = XmlNodeAttributeProperty('srvb:published')
    bindingCreated = XmlNodeAttributeProperty('srvb:bindingCreated')
    services = XmlNodeProperty('srvb:services', factory=ServicesContainer)
    binding = XmlNodeProperty('srvb:binding', factory=Binding)

    def __init__(self, connection, name, metadata=None):
        super().__init__(connection, name, metadata)

    def find_service(self, service_name=None, service_version=None):
        """Returns a first service matching the given parameters.

           If any parameter is None, the parameter is not considered for
           comparison.
        """

        if service_name and service_version:
            return next((item for item in self.services
                         if item.definition.name == service_name
                         and item.version == service_version), None)

        if service_name is not None:
            return next((item for item in self.services
                         if item.definition.name == service_name), None)

        if service_version is not None:
            return next(
                (item
                 for item in self.services if item.version == service_version),
                None)

        raise SAPCliError(
            "You must specify either Service Name or Service Version or both")

    def publish(self, service):
        """Publish service definition"""

        references = ADTObjectReferences()
        references.add_object(self)

        response = self.connection.execute(
            'POST',
            f'businessservices/{self.binding.term}/publishjobs',
            params={
                'servicename': self.name,
                'serviceversion': service.version,
            },
            headers={
                # pylint: disable=line-too-long
                'Accept':
                'application/xml, application/vnd.sap.as+xml;charset=UTF-8;dataname=com.sap.adt.StatusMessage',
                'Content-Type': 'application/xml'
            },
            body=Marshal().serialize(references))

        return from_xml(StatusMessage(), response.text, root_elem="DATA")
Exemplo n.º 24
0
class Implementation(metaclass=OrderedClassMembers):
    """The node serviceBinding/binding/implementation"""

    name = XmlNodeAttributeProperty('adtcore:name')
Exemplo n.º 25
0
class DefinitionLink(metaclass=OrderedClassMembers):
    """The node serviceBinding/services/content"""

    version = XmlNodeAttributeProperty('srvb:version')
    release_state = XmlNodeAttributeProperty('srvb:releaseState')
    definition = XmlNodeProperty('srvb:serviceDefinition', factory=Definition)
Exemplo n.º 26
0
class Definition(metaclass=OrderedClassMembers):
    """The node serviceBinding/services/content/serviceDefinition"""

    uri = XmlNodeAttributeProperty('adtcore:uri')
    typ = XmlNodeAttributeProperty('adtcore:type')
    name = XmlNodeAttributeProperty('adtcore:name')
Exemplo n.º 27
0
class Reporter(metaclass=OrderedClassMembers):
    """ADT Object Checks Run Reporter"""

    name = XmlNodeAttributeProperty('chkrun:name')
    supported_types = XmlListNodeProperty('chkrun:supportedType',
                                          kind=XmlElementKind.TEXT)