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()
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"), )
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))
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"), )
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()
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 )
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()
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()
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()
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()
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))
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 ) )
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 )