Exemplo n.º 1
0
    def tearDown(self):
        """Delete created objects."""
        attrs = []
        attrs.append(
            pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_CHANNEL_NAME,
                       String=utils.py3str2bytes(self.tls_channel_name)))
        attrs.append(
            pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_CHLAUTH_TYPE,
                       Value=pymqi.CMQCFC.MQCAUT_USERMAP))
        attrs.append(
            pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_ACTION,
                       Value=pymqi.CMQCFC.MQACT_REMOVEALL))
        self.delete_auth_rec(attrs)

        attrs = []
        attrs.append(
            pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_CHANNEL_NAME,
                       String=utils.py3str2bytes(self.tls_channel_name)))
        attrs.append(
            pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_CHLAUTH_TYPE,
                       Value=pymqi.CMQCFC.MQCAUT_BLOCKUSER))
        attrs.append(
            pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_ACTION,
                       Value=pymqi.CMQCFC.MQACT_REMOVEALL))
        self.delete_auth_rec(attrs)

        self.delete_channel(self.tls_channel_name)

        super(TestTLS, self).tearDown()
Exemplo n.º 2
0
 def create_channel(self, channel_name, attrs=None):
     """Create channle."""
     if not attrs:
         attrs = []
         attrs.append(pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_CHANNEL_NAME,
                                 String=utils.py3str2bytes(channel_name)))
         attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACH_CHANNEL_TYPE,
                                 Value=pymqi.CMQC.MQCHT_SVRCONN))
         attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_REPLACE,
                                 Value=pymqi.CMQCFC.MQRP_YES))
     self.pcf.MQCMD_CREATE_CHANNEL(attrs)
Exemplo n.º 3
0
    def setUp(self):
        """Initialize test environment."""
        super(TestTLS, self).setUp()

        attrs = []
        attrs.append(pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_CHANNEL_NAME,
                                String=utils.py3str2bytes(self.tls_channel_name)))
        attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACH_CHANNEL_TYPE,
                                Value=pymqi.CMQC.MQCHT_SVRCONN))
        attrs.append(pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_SSL_CIPHER_SPEC,
                                String=self.cypher_spec))
        attrs.append(pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_SSL_PEER_NAME,
                                String=self.client_dn))
        attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACH_SSL_CLIENT_AUTH,
                                Value=pymqi.CMQXC.MQSCA_OPTIONAL))
        attrs.append(pymqi.CFST(Parameter=pymqi.CMQC.MQCA_CERT_LABEL,
                                String=self.certificate_label_qmgr))
        attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_REPLACE,
                                Value=pymqi.CMQCFC.MQRP_YES))
        self.create_channel(self.tls_channel_name, attrs)

        attrs = []
        attrs.append(pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_CHANNEL_NAME,
                                String=utils.py3str2bytes(self.tls_channel_name)))
        attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_CHLAUTH_TYPE,
                                Value=pymqi.CMQCFC.MQCAUT_USERMAP))
        attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_ACTION,
                                Value=pymqi.CMQCFC.MQACT_REPLACE))
        attrs.append(pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_CLIENT_USER_ID,
                                String=utils.py3str2bytes(self.user)))
        attrs.append(pymqi.CFIN(Parameter=pymqi.CMQC.MQIA_CHECK_CLIENT_BINDING,
                                Value=pymqi.CMQCFC.MQCHK_REQUIRED_ADMIN))
        attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACH_USER_SOURCE,
                                Value=pymqi.CMQC.MQUSRC_MAP))
        attrs.append(pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_MCA_USER_ID,
                                String=b'mqm'))

        self.create_auth_rec(attrs)

        attrs = []
        attrs.append(pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_CHANNEL_NAME,
                                String=utils.py3str2bytes(self.tls_channel_name)))
        attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_CHLAUTH_TYPE,
                                Value=pymqi.CMQCFC.MQCAUT_BLOCKUSER))
        attrs.append(pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_MCA_USER_ID_LIST,
                                String=b'nobody'))
        attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACH_WARNING,
                                Value=pymqi.CMQC.MQWARN_NO))
        attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_ACTION,
                                Value=pymqi.CMQCFC.MQACT_REPLACE))
        self.create_auth_rec(attrs)
Exemplo n.º 4
0
    def create_queue(self, queue_name, max_depth=5000, attrs=None):
        """Create queue."""
        if not attrs:
            attrs = []
            attrs.append(pymqi.CFST(Parameter=pymqi.CMQC.MQCA_Q_NAME,
                                    String=utils.py3str2bytes(queue_name)))
            attrs.append(pymqi.CFIN(Parameter=pymqi.CMQC.MQIA_Q_TYPE,
                                    Value=pymqi.CMQC.MQQT_LOCAL))
            attrs.append(pymqi.CFIN(Parameter=pymqi.CMQC.MQIA_MAX_Q_DEPTH,
                                    Value=max_depth))
            attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_REPLACE,
                                    Value=pymqi.CMQCFC.MQRP_YES))

        self.pcf.MQCMD_CREATE_Q(attrs)
Exemplo n.º 5
0
    def test_mqcfif(self):
        """Test string filter MQCFIF.

        Also uses MQCFST, MQCFIN and MQCFIL as parameters
        """
        attrs = []  # type: List[pymqi.MQOpts]
        attrs.append(pymqi.CFST(Parameter=pymqi.CMQC.MQCA_Q_NAME, String=b'*'))
        attrs.append(
            pymqi.CFIN(Parameter=pymqi.CMQC.MQIA_Q_TYPE,
                       Value=pymqi.CMQC.MQQT_LOCAL))
        attrs.append(
            pymqi.CFIL(Parameter=pymqi.CMQCFC.MQIACF_Q_ATTRS,
                       Values=[
                           pymqi.CMQC.MQIA_CURRENT_Q_DEPTH,
                           pymqi.CMQC.MQCA_Q_DESC
                       ]))

        object_filters = []
        object_filters.append(
            pymqi.CFIF(Parameter=pymqi.CMQC.MQIA_CURRENT_Q_DEPTH,
                       Operator=pymqi.CMQCFC.MQCFOP_GREATER,
                       FilterValue=0))

        results = self.pcf.MQCMD_INQUIRE_Q(attrs, object_filters)

        self.assertTrue(results, 'Queue not found')
        for result in results:
            self.assertTrue(
                result[pymqi.CMQC.MQIA_CURRENT_Q_DEPTH] > 0,
                'Found Queue with depth {}'.format(
                    result[pymqi.CMQC.MQIA_CURRENT_Q_DEPTH]))
Exemplo n.º 6
0
    def test_mqcfbs(self):
        """Test MQCFBS PCF byte string parameter.

        Also uses MQCFIN and MQCFIL as parameters
        """
        attrs = []  # type: List[pymqi.MQOpts]
        attrs.append(
            pymqi.CFBS(Parameter=pymqi.CMQCFC.MQBACF_GENERIC_CONNECTION_ID,
                       String=b''))
        attrs.append(
            pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_CONN_INFO_TYPE,
                       Value=pymqi.CMQCFC.MQIACF_CONN_INFO_CONN))
        attrs.append(
            pymqi.CFIL(Parameter=pymqi.CMQCFC.MQIACF_CONNECTION_ATTRS,
                       Values=[pymqi.CMQCFC.MQIACF_ALL]))

        object_filters = []
        object_filters.append(
            pymqi.CFIF(Parameter=pymqi.CMQC.MQIA_APPL_TYPE,
                       Operator=pymqi.CMQCFC.MQCFOP_EQUAL,
                       FilterValue=pymqi.CMQC.MQAT_USER))

        results = self.pcf.MQCMD_INQUIRE_CONNECTION(attrs, object_filters)

        self.assertGreater(len(results), 0)
Exemplo n.º 7
0
    def test_mqcfsf(self):
        """Test string filter MQCFSF.

        Also uses MQCFST, MQCFIN and MQCFIL as parameters
        """
        attrs = []  # type: List[pymqi.MQOpts]
        attrs.append(pymqi.CFST(Parameter=pymqi.CMQC.MQCA_Q_NAME, String=b'*'))
        attrs.append(
            pymqi.CFIN(Parameter=pymqi.CMQC.MQIA_Q_TYPE,
                       Value=pymqi.CMQC.MQQT_LOCAL))
        attrs.append(
            pymqi.CFIL(Parameter=pymqi.CMQCFC.MQIACF_Q_ATTRS,
                       Values=[
                           pymqi.CMQC.MQIA_CURRENT_Q_DEPTH,
                           pymqi.CMQC.MQCA_Q_DESC
                       ]))

        object_filters = []
        object_filters.append(
            pymqi.CFSF(Parameter=pymqi.CMQC.MQCA_Q_DESC,
                       Operator=pymqi.CMQCFC.MQCFOP_LIKE,
                       FilterValue=b'IBM MQ*'))

        results = self.pcf.MQCMD_INQUIRE_Q(attrs, object_filters)

        self.assertTrue(results, 'Queue not found')
        for result in results:
            self.assertTrue(
                not result[pymqi.CMQC.MQCA_Q_DESC].startswith(b'MQ'),
                'Found Queue with description {}'.format(
                    result[pymqi.CMQC.MQCA_Q_DESC]))
            self.assertTrue(
                pymqi.CMQC.MQCA_Q_DESC in result,
                'Attribute {} is not returned'.format(
                    result[pymqi.CMQC.MQCA_Q_DESC]))
Exemplo n.º 8
0
 def delete_queue(self, queue_name):
     """Delete queue."""
     attrs = []
     attrs.append(pymqi.CFST(Parameter=pymqi.CMQC.MQCA_Q_NAME,
                             String=utils.py3str2bytes(queue_name)))
     attrs.append(pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_PURGE,
                             Value=pymqi.CMQCFC.MQPO_YES))
     self.pcf.MQCMD_DELETE_Q(attrs)
Exemplo n.º 9
0
    def test_mqcfsl(self, value):
        """Test MQCFSL PCF string list parameter.

        Also uses MQCFST and MQCFIN as parameters
        """
        attrs = []  # type: List[pymqi.MQOpts]
        attrs.append(
            pymqi.CFST(Parameter=pymqi.CMQC.MQCA_NAMELIST_NAME,
                       String='{}NAMELIST'.format(self.prefix).encode()))
        attrs.append(pymqi.CFSL(Parameter=pymqi.CMQC.MQCA_NAMES,
                                Strings=value))
        attrs.append(
            pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_REPLACE,
                       Value=pymqi.CMQCFC.MQRP_YES))

        try:
            self.pcf.MQCMD_CREATE_NAMELIST(attrs)
        except Exception:  # pylint: disable=broad-except
            self.fail('Exception occurs!')
        else:
            attrs = []
            attrs.append(
                pymqi.CFST(Parameter=pymqi.CMQC.MQCA_NAMELIST_NAME,
                           String='{}NAMELIST'.format(self.prefix).encode()))
            attrs.append(
                pymqi.CFIL(
                    Parameter=pymqi.CMQCFC.MQIACF_NAMELIST_ATTRS,
                    Values=[pymqi.CMQC.MQCA_NAMES,
                            pymqi.CMQC.MQIA_NAME_COUNT]))

            results = self.pcf.MQCMD_INQUIRE_NAMELIST(attrs)

            self.assertEqual(results[0][pymqi.CMQC.MQIA_NAME_COUNT],
                             len(value))

            if results[0][pymqi.CMQC.MQIA_NAME_COUNT] > 0:
                for item in results[0][pymqi.CMQC.MQCA_NAMES]:
                    item = item.strip()
                    self.assertTrue(item in value,
                                    '{} value not in values list'.format(item))
                    value.remove(item)

            attrs = []
            attrs.append(
                pymqi.CFST(Parameter=pymqi.CMQC.MQCA_NAMELIST_NAME,
                           String='{}NAMELIST'.format(self.prefix).encode()))
            self.pcf.MQCMD_DELETE_NAMELIST(attrs)
Exemplo n.º 10
0
def prepare_queue_manager():
    import pymqi

    conn_info = '{0}({1})'.format(common.HOST, common.PORT)
    qm_name = common.QUEUE_MANAGER.lower()

    qmgr = pymqi.QueueManager(None)
    qmgr.connectTCPClient(common.QUEUE_MANAGER, pymqi.CD(), common.CHANNEL,
                          conn_info, common.USERNAME, common.PASSWORD)
    pcf = pymqi.PCFExecute(qmgr, response_wait_interval=5000)

    attrs = [
        pymqi.CFST(
            Parameter=pymqi.CMQC.MQCA_SSL_KEY_REPOSITORY,
            String=pymqi.ensure_bytes('/etc/mqm/pki/keys/{}'.format(qm_name)),
        ),
        pymqi.CFST(Parameter=pymqi.CMQC.MQCA_CERT_LABEL,
                   String=pymqi.ensure_bytes(qm_name)),
    ]
    pcf.MQCMD_CHANGE_Q_MGR(attrs)

    tls_channel_name = pymqi.ensure_bytes(common.CHANNEL_SSL)
    cypher_spec = pymqi.ensure_bytes(common.SSL_CYPHER_SPEC)
    client_dn = pymqi.ensure_bytes('CN={}'.format(common.SSL_CLIENT_LABEL))
    certificate_label_qmgr = pymqi.ensure_bytes(qm_name)

    attrs = [
        pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_CHANNEL_NAME,
                   String=pymqi.ensure_bytes(tls_channel_name)),
        pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACH_CHANNEL_TYPE,
                   Value=pymqi.CMQC.MQCHT_SVRCONN),
        pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_SSL_CIPHER_SPEC,
                   String=cypher_spec),
        pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_SSL_PEER_NAME,
                   String=client_dn),
        pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACH_SSL_CLIENT_AUTH,
                   Value=pymqi.CMQXC.MQSCA_OPTIONAL),
        pymqi.CFST(Parameter=pymqi.CMQC.MQCA_CERT_LABEL,
                   String=certificate_label_qmgr),
        pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_REPLACE,
                   Value=pymqi.CMQCFC.MQRP_YES),
    ]
    pcf.MQCMD_CREATE_CHANNEL(attrs)

    attrs = [
        pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_CHANNEL_NAME,
                   String=pymqi.ensure_bytes(tls_channel_name)),
        pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_CHLAUTH_TYPE,
                   Value=pymqi.CMQCFC.MQCAUT_USERMAP),
        pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_ACTION,
                   Value=pymqi.CMQCFC.MQACT_REPLACE),
        pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_CLIENT_USER_ID,
                   String=pymqi.ensure_bytes(common.USERNAME)),
        pymqi.CFIN(Parameter=pymqi.CMQC.MQIA_CHECK_CLIENT_BINDING,
                   Value=pymqi.CMQCFC.MQCHK_REQUIRED_ADMIN),
        pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACH_USER_SOURCE,
                   Value=pymqi.CMQC.MQUSRC_MAP),
        pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_MCA_USER_ID, String=b'mqm'),
    ]
    pcf.MQCMD_SET_CHLAUTH_REC(attrs)

    attrs = [
        pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_CHANNEL_NAME,
                   String=pymqi.ensure_bytes(tls_channel_name)),
        pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_CHLAUTH_TYPE,
                   Value=pymqi.CMQCFC.MQCAUT_BLOCKUSER),
        pymqi.CFST(Parameter=pymqi.CMQCFC.MQCACH_MCA_USER_ID_LIST,
                   String=b'nobody'),
        pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACH_WARNING,
                   Value=pymqi.CMQC.MQWARN_NO),
        pymqi.CFIN(Parameter=pymqi.CMQCFC.MQIACF_ACTION,
                   Value=pymqi.CMQCFC.MQACT_REPLACE),
    ]
    pcf.MQCMD_SET_CHLAUTH_REC(attrs)

    pcf.disconnect()
    qmgr.disconnect()