Example #1
0
    def __init__(self, response=""):
        #: Holds the response as plain text / string
        self._raw = response
        if (response is "") or (response is None):
            descr = "Empty API response. Probably unreachable API end point {CONNECTION_URL}"
            self._raw = "[RESPONSE]\r\nCODE=423\r\nDESCRIPTION=%s\r\nEOF\r\n" % (
                descr)

        # try/except to support old versions of python (python2.5)
        try:
            if isinstance(self._raw, bytes):
                self._raw = self._raw.decode("utf-8")
        except UnicodeError:
            self._raw = self._raw.decode("latin1")
        except BaseException:
            self._raw = self._raw.decode("utf-8")

        if isinstance(response, dict):
            raise TypeError(
                'Type "dict" is not allowed for parameter "response". Use type "string" instead.'
            )
        else:
            #: Holds the response as hash
            self.__hash = RP.parse(self._raw)

        if ("CODE" not in self.__hash) or ("DESCRIPTION" not in self.__hash):
            self._raw = "[RESPONSE]\r\nCODE=423\r\nDESCRIPTION=Invalid API response. Contact Support\r\nEOF\r\n"
            self.__hash = RP.parse(self._raw)
 def isTemplateMatchPlain(self, plain, id):
     """
     Check if given API plain response matches a given template by code and description
     """
     h = self.getTemplate(id).getHash()
     tpl2 = RP.parse(plain)
     return (h["CODE"] == tpl2["CODE"]) and (h["DESCRIPTION"]
                                             == tpl2["DESCRIPTION"])
def test_rpmethods():
    rtm = RTM.getInstance()
    rtm.addTemplate(
        'OK', rtm.generateTemplate('200', 'Command completed successfully'))

    # #.parse()
    plain = re.sub(r'/\r\nDESCRIPTION=/', '', rtm.generateTemplate('421', ''))
    assert RP.parse(plain)["DESCRIPTION"] is ""

    # #.serialize()
    # [w/ PROPERTY]
    r = rtm.getTemplate('OK').getHash()
    r["PROPERTY"] = {
        "DOMAIN": ['mydomain1.com', 'mydomain2.com', 'mydomain3.com'],
        "RATING": ['1', '2', '3'],
        "SUM": [3]
    }
    assert RP.serialize(r) == (
        '[RESPONSE]\r\nPROPERTY[DOMAIN][0]=mydomain1.com\r\nPROPERTY[DOMAIN' +
        '][1]=mydomain2.com\r\nPROPERTY[DOMAIN][2]=mydomain3.com\r\nPROPERT' +
        'Y[RATING][0]=1\r\nPROPERTY[RATING][1]=2\r\nPROPERTY[RATING][2]=3\r' +
        '\nPROPERTY[SUM][0]=3\r\nCODE=200\r\nDESCRIPTION=Command completed ' +
        'successfully\r\nEOF\r\n')

    # [w/o PROPERTY]
    tpl = rtm.getTemplate('OK')
    assert RP.serialize(tpl.getHash()) == tpl.getPlain()

    # [w/o CODE, w/o DESCRIPTION]
    h = rtm.getTemplate('OK').getHash()
    h.pop('CODE')
    h.pop('DESCRIPTION')
    assert RP.serialize(h) == '[RESPONSE]\r\nEOF\r\n'

    # [w/ QUEUETIME, w/ RUNTIME]
    h = rtm.getTemplate('OK').getHash()
    h["QUEUETIME"] = '0'
    h["RUNTIME"] = '0.12'
    assert RP.serialize(h) == (
        '[RESPONSE]\r\nCODE=200\r\nDESCRIPTION=Command completed successful' +
        'ly\r\nQUEUETIME=0\r\nRUNTIME=0.12\r\nEOF\r\n')
Example #4
0
    def __init__(self, response=""):
        #: Holds the response as plain text / string
        self.__raw = response
        if (response is "") or (response is None):
            self.__raw = "[RESPONSE]\r\nCODE=423\r\nDESCRIPTION=Empty API response\r\nEOF\r\n"

        # try/except to support old versions of python (python2.5)
        try:
            if isinstance(self.__raw, bytes):
                self.__raw = self.__raw.decode("utf-8")
        except UnicodeError:
            self.__raw = self.__raw.decode("latin1")
        except BaseException:
            self.__raw = self.__raw.decode("utf-8")

        if isinstance(response, dict):
            raise TypeError(
                'Type "dict" is not allowed for parameter "response". Use type "string" instead.'
            )
        else:
            #: Holds the response as hash
            self.__hash = RP.parse(self.__raw)