Example #1
0
    def test_sign_error(self, mock_tmp_store, mock_get_cert):
        mock_tmp_store.return_value = self.mock_tmpfile
        self.mock_runner.run.return_value = ("stdout", "tool output error", 1)

        assert_raise_library_error(
            lambda: lib.qdevice_sign_certificate_request(
                self.mock_runner, "certificate request", "clusterName"
            ),
            (
                severity.ERROR,
                report_codes.QDEVICE_CERTIFICATE_SIGN_ERROR,
                {
                    "reason": "tool output error\nstdout",
                },
            ),
        )

        mock_tmp_store.assert_called_once_with(
            "certificate request",
            reports.messages.QdeviceCertificateSignError,
        )
        self.mock_runner.run.assert_called_once_with(
            [
                _qnetd_cert_tool,
                "-s",
                "-c",
                self.mock_tmpfile.name,
                "-n",
                "clusterName",
            ]
        )
        mock_get_cert.assert_not_called()
Example #2
0
    def test_output_read_error(self, mock_tmp_store, mock_get_cert):
        mock_tmp_store.return_value = self.mock_tmpfile
        self.mock_runner.run.return_value = ("tool output", "", 0)
        mock_get_cert.side_effect = LibraryError

        self.assertRaises(
            LibraryError,
            lambda: lib.qdevice_sign_certificate_request(
                self.mock_runner, "certificate request", "clusterName"
            ),
        )

        mock_tmp_store.assert_called_once_with(
            "certificate request",
            reports.messages.QdeviceCertificateSignError,
        )
        self.mock_runner.run.assert_called_once_with(
            [
                _qnetd_cert_tool,
                "-s",
                "-c",
                self.mock_tmpfile.name,
                "-n",
                "clusterName",
            ]
        )
        self.assertEqual("tool output", mock_get_cert.call_args[0][0])
        self.assertEqual(
            reports.messages.QdeviceCertificateSignError("tool output"),
            mock_get_cert.call_args[0][1]("tool output"),
        )
Example #3
0
def qdevice_net_sign_certificate_request(
    lib_env: LibraryEnvironment,
    certificate_request,
    cluster_name,
):
    """
    Sign node certificate request by qnetd CA

    string certificate_request -- base64 encoded certificate request
    string cluster_name -- name of the cluster to which qdevice is being added
    """
    try:
        certificate_request_data = base64.b64decode(certificate_request)
    except (TypeError, binascii.Error) as e:
        raise LibraryError(
            ReportItem.error(
                reports.messages.InvalidOptionValue(
                    "qnetd certificate request",
                    certificate_request,
                    ["base64 encoded certificate"],
                ))) from e
    return base64.b64encode(
        qdevice_net.qdevice_sign_certificate_request(lib_env.cmd_runner(),
                                                     certificate_request_data,
                                                     cluster_name))
Example #4
0
    def test_success(self, mock_tmp_store, mock_get_cert):
        mock_tmp_store.return_value = self.mock_tmpfile
        self.mock_runner.run.return_value = ("tool output", "", 0)
        mock_get_cert.return_value = "new certificate".encode("utf-8")

        result = lib.qdevice_sign_certificate_request(
            self.mock_runner, "certificate request", "clusterName"
        )
        self.assertEqual(result, mock_get_cert.return_value)

        mock_tmp_store.assert_called_once_with(
            "certificate request",
            reports.messages.QdeviceCertificateSignError,
        )
        self.mock_runner.run.assert_called_once_with(
            [
                _qnetd_cert_tool,
                "-s",
                "-c",
                self.mock_tmpfile.name,
                "-n",
                "clusterName",
            ]
        )
        self.assertEqual("tool output", mock_get_cert.call_args[0][0])
        self.assertEqual(
            reports.messages.QdeviceCertificateSignError("tool output"),
            mock_get_cert.call_args[0][1]("tool output"),
        )
Example #5
0
    def test_sign_error(self, mock_tmp_store, mock_get_cert):
        mock_tmp_store.return_value = self.mock_tmpfile
        self.mock_runner.run.return_value = ("stdout", "tool output error", 1)

        assert_raise_library_error(
            lambda: lib.qdevice_sign_certificate_request(
                self.mock_runner,
                "certificate request",
                "clusterName"
            ),
            (
                severity.ERROR,
                report_codes.QDEVICE_CERTIFICATE_SIGN_ERROR,
                {
                    "reason": "tool output error\nstdout",
                }
            )
        )

        mock_tmp_store.assert_called_once_with(
            "certificate request",
            reports.qdevice_certificate_sign_error
        )
        self.mock_runner.run.assert_called_once_with([
            _qnetd_cert_tool,
            "-s", "-c", self.mock_tmpfile.name, "-n", "clusterName"
        ])
        mock_get_cert.assert_not_called()
Example #6
0
    def test_output_read_error(self, mock_tmp_store, mock_get_cert):
        mock_tmp_store.return_value = self.mock_tmpfile
        self.mock_runner.run.return_value = ("tool output", "", 0)
        mock_get_cert.side_effect = LibraryError

        self.assertRaises(
            LibraryError,
            lambda: lib.qdevice_sign_certificate_request(
                self.mock_runner,
                "certificate request",
                "clusterName"
            )
        )

        mock_tmp_store.assert_called_once_with(
            "certificate request",
            reports.qdevice_certificate_sign_error
        )
        self.mock_runner.run.assert_called_once_with([
            _qnetd_cert_tool,
            "-s", "-c", self.mock_tmpfile.name, "-n", "clusterName"
        ])
        mock_get_cert.assert_called_once_with(
            "tool output",
            reports.qdevice_certificate_sign_error
        )
Example #7
0
    def test_input_write_error(self, mock_tmp_store, mock_get_cert):
        mock_tmp_store.side_effect = LibraryError

        self.assertRaises(
            LibraryError, lambda: lib.qdevice_sign_certificate_request(
                self.mock_runner, "certificate request", "clusterName"))

        self.mock_runner.run.assert_not_called()
        mock_get_cert.assert_not_called()
Example #8
0
 def test_not_initialized(self, mock_tmp_store, mock_get_cert):
     assert_raise_library_error(
         lambda: lib.qdevice_sign_certificate_request(
             self.mock_runner, "certificate request", "clusterName"),
         (severity.ERROR, report_codes.QDEVICE_NOT_INITIALIZED, {
             "model": "net",
         }))
     mock_tmp_store.assert_not_called()
     self.mock_runner.run.assert_not_called()
     mock_get_cert.assert_not_called()
Example #9
0
    def test_input_write_error(self, mock_tmp_store, mock_get_cert):
        mock_tmp_store.side_effect = LibraryError

        self.assertRaises(
            LibraryError,
            lambda: lib.qdevice_sign_certificate_request(
                self.mock_runner,
                "certificate request",
                "clusterName"
            )
        )

        self.mock_runner.run.assert_not_called()
        mock_get_cert.assert_not_called()
Example #10
0
 def test_not_initialized(self, mock_tmp_store, mock_get_cert):
     assert_raise_library_error(
         lambda: lib.qdevice_sign_certificate_request(
             self.mock_runner,
             "certificate request",
             "clusterName"
         ),
         (
             severity.ERROR,
             report_codes.QDEVICE_NOT_INITIALIZED,
             {
                 "model": "net",
             }
         )
     )
     mock_tmp_store.assert_not_called()
     self.mock_runner.run.assert_not_called()
     mock_get_cert.assert_not_called()
Example #11
0
def qdevice_net_sign_certificate_request(lib_env, certificate_request,
                                         cluster_name):
    """
    Sign node certificate request by qnetd CA
    string certificate_request base64 encoded certificate request
    string cluster_name name of the cluster to which qdevice is being added
    """
    try:
        certificate_request_data = base64.b64decode(certificate_request)
    except (TypeError, binascii.Error):
        raise LibraryError(
            reports.invalid_option_value("qnetd certificate request",
                                         certificate_request,
                                         ["base64 encoded certificate"]))
    return base64.b64encode(
        qdevice_net.qdevice_sign_certificate_request(lib_env.cmd_runner(),
                                                     certificate_request_data,
                                                     cluster_name))
Example #12
0
def qdevice_net_sign_certificate_request(
    lib_env, certificate_request, cluster_name
):
    """
    Sign node certificate request by qnetd CA
    string certificate_request base64 encoded certificate request
    string cluster_name name of the cluster to which qdevice is being added
    """
    try:
        certificate_request_data = base64.b64decode(certificate_request)
    except (TypeError, binascii.Error):
        raise LibraryError(reports.invalid_option_value(
            "qnetd certificate request",
            certificate_request,
            ["base64 encoded certificate"]
        ))
    return base64.b64encode(
        qdevice_net.qdevice_sign_certificate_request(
            lib_env.cmd_runner(),
            certificate_request_data,
            cluster_name
        )
    )
Example #13
0
    def test_success(self, mock_tmp_store, mock_get_cert):
        mock_tmp_store.return_value = self.mock_tmpfile
        self.mock_runner.run.return_value = ("tool output", "", 0)
        mock_get_cert.return_value = "new certificate".encode("utf-8")

        result = lib.qdevice_sign_certificate_request(
            self.mock_runner,
            "certificate request",
            "clusterName"
        )
        self.assertEqual(result, mock_get_cert.return_value)

        mock_tmp_store.assert_called_once_with(
            "certificate request",
            reports.qdevice_certificate_sign_error
        )
        self.mock_runner.run.assert_called_once_with([
            _qnetd_cert_tool,
            "-s", "-c", self.mock_tmpfile.name, "-n", "clusterName"
        ])
        mock_get_cert.assert_called_once_with(
            "tool output",
            reports.qdevice_certificate_sign_error
        )