def test_proxy_upload_and_check_compatibility_pass(self):
        """Verify proxy_upload_and_check_compatibility"""
        self._set_args({
            "firmware": "test_firmware.dlp",
            "nvsram": "test_nvsram.dlp"
        })
        firmware = NetAppESeriesFirmware()
        firmware.proxy_check_nvsram_compatibility = lambda: None
        firmware.proxy_check_firmware_compatibility = lambda: None
        with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                   return_value=("headers", "data")):
            with patch(self.REQUEST_FUNC,
                       side_effect=[(200, [{
                           "version": "XX.XX.XX.XX",
                           "filename": "test"
                       }, {
                           "version": "XXXXXXXXXX",
                           "filename": "test.dlp"
                       }]), (200, None), (200, None)]):
                firmware.proxy_upload_and_check_compatibility()

            with patch(self.REQUEST_FUNC,
                       return_value=(200, [{
                           "version": "XX.XX.XX.XX",
                           "filename": "test"
                       }, {
                           "version": "test_nvsram",
                           "filename": "test_nvsram.dlp"
                       }, {
                           "version": "test",
                           "filename": "test.dlp"
                       }, {
                           "filename": "test_firmware.dlp",
                           "version": "test_firmware"
                       }])):
                firmware.proxy_upload_and_check_compatibility()
    def test_proxy_upload_and_check_compatibility_fail(self):
        """Verify proxy_upload_and_check_compatibility throws expected exceptions."""
        self._set_args({
            "firmware": "test_firmware.dlp",
            "nvsram": "test_nvsram.dlp"
        })
        firmware = NetAppESeriesFirmware()
        firmware.proxy_check_nvsram_compatibility = lambda: None
        with self.assertRaisesRegexp(
                AnsibleFailJson,
                "Failed to retrieve existing existing firmware files."):
            with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                       return_value=("headers", "data")):
                with patch(self.REQUEST_FUNC, return_value=Exception()):
                    firmware.proxy_upload_and_check_compatibility()

        with self.assertRaisesRegexp(AnsibleFailJson,
                                     "Failed to upload NVSRAM file."):
            with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                       return_value=("headers", "data")):
                with patch(self.REQUEST_FUNC,
                           side_effect=[(200, [{
                               "version": "XX.XX.XX.XX",
                               "filename": "test"
                           }, {
                               "version": "XXXXXXXXXX",
                               "filename": "test.dlp"
                           }]),
                                        Exception()]):
                    firmware.proxy_upload_and_check_compatibility()

        with self.assertRaisesRegexp(AnsibleFailJson,
                                     "Failed to upload firmware bundle file."):
            with patch(self.CREATE_MULTIPART_FORMDATA_FUNC,
                       return_value=("headers", "data")):
                with patch(self.REQUEST_FUNC,
                           side_effect=[(200, [{
                               "version": "XX.XX.XX.XX",
                               "filename": "test"
                           }, {
                               "version": "XXXXXXXXXX",
                               "filename": "test.dlp"
                           }]), (200, None),
                                        Exception()]):
                    firmware.proxy_upload_and_check_compatibility()