# HG changeset patch
# User Alexandre Yang <alexandre.yang@datadoghq.com>
# Date 1593091396 -7200
#      Thu Jun 25 15:23:16 2020 +0200
# Node ID c8eee3da654eb75c249730aca93ed6f5bd910c18
# Parent  449e17b8dd577683bf0f5604aab71219ce4ff180
GH #212 Make `PCFExecute.unpack()` return full header

Co-authored-by: Vyacheslav Savchenko <25712100+SeyfSV@users.noreply.github.com>

diff --git a/code/pymqi/__init__.py b/code/pymqi/__init__.py
--- a/code/pymqi/__init__.py
+++ b/code/pymqi/__init__.py
@@ -2733,11 +2733,11 @@
         ress = []
         while True:
             message = self.__pcf.reply_queue.get(None, get_md, get_opts)
-            res, control = self.__pcf.unpack(message)
+            res, mqcfh_response = self.__pcf.unpack(message)
 
             ress.append(res)
 
-            if control == CMQCFC.MQCFC_LAST:
+            if mqcfh_response.Control == CMQCFC.MQCFC_LAST:
                 break
 
         return ress
@@ -2964,7 +2964,7 @@
             else:
                 res[parameter.Parameter] = value
 
-        return res, mqcfh.Control
+        return res, mqcfh
 
 
 class ByteString(object):
diff --git a/code/tests/test_pcf.py b/code/tests/test_pcf.py
--- a/code/tests/test_pcf.py
+++ b/code/tests/test_pcf.py
@@ -259,11 +259,45 @@
             ]
         }, message)
 
+    def test_unpack_header(self):
+        """Test unpack header."""
+        message = pymqi.CFH(Version=pymqi.CMQCFC.MQCFH_VERSION_1,
+                            Type=pymqi.CMQCFC.MQCFT_STATISTICS,
+                            Command=pymqi.CMQCFC.MQCMD_STATISTICS_Q,
+                            ParameterCount=1).pack()
+        message += pymqi.CFST(Parameter=pymqi.CMQC.MQCA_Q_MGR_NAME,
+                                    String=b'QM1').pack()
+
+        queue = pymqi.Queue(self.qmgr, self.queue_name,
+                            pymqi.CMQC.MQOO_INPUT_AS_Q_DEF + pymqi.CMQC.MQOO_OUTPUT)
+
+        put_md = pymqi.MD(Format=pymqi.CMQC.MQFMT_PCF)
+        queue.put(message, put_md)
+
+        get_opts = pymqi.GMO(
+            Options=pymqi.CMQC.MQGMO_NO_SYNCPOINT + pymqi.CMQC.MQGMO_FAIL_IF_QUIESCING,
+            Version=pymqi.CMQC.MQGMO_VERSION_2,
+            MatchOptions=pymqi.CMQC.MQMO_MATCH_CORREL_ID)
+        get_md = pymqi.MD(MsgId=put_md.MsgId)  # pylint: disable=no-member
+        message = queue.get(None, get_md, get_opts)
+        queue.close()
+        message, header = pymqi.PCFExecute.unpack(message)
+
+        self.assertEqual(header.Command,  pymqi.CMQCFC.MQCMD_STATISTICS_Q)
+        self.assertEqual(header.Type,  pymqi.CMQCFC.MQCFT_STATISTICS)
+
+        self.assertEqual({
+            pymqi.CMQC.MQCA_Q_MGR_NAME: b'QM1\x00',
+        }, message)
+
     def test_unpack_group(self):
         """Test parameters group unpack."""
         binary_message = open(os.path.join(self.messages_dir, "statistics_q.dat"), "rb").read()
 
-        message, _ = pymqi.PCFExecute.unpack(binary_message)
+        message, header = pymqi.PCFExecute.unpack(binary_message)
+
+        self.assertEqual(header.Command,  pymqi.CMQCFC.MQCMD_STATISTICS_Q)
+        self.assertEqual(header.Type,  pymqi.CMQCFC.MQCFT_STATISTICS)
 
         self.assertEqual(message[pymqi.CMQC.MQCA_Q_MGR_NAME].strip(), b'mq_mgr1')
         self.assertEqual(message[pymqi.CMQCFC.MQCAMO_START_DATE], b'2020-06-15\x00\x00')