Exemple #1
0
    def _prompt_for_file(label, validator=None):
        """
        Prompt the user for a path.

        :param str label: The user-friendly label for the file.
        :param callable validator: A method which will be called to validate the supplied input
            after it has been validated to be a non-empty path to an existing file. Should throw a
            `~certbot.errors.PluginError` to indicate any issue.
        :returns: The user's response (guaranteed to exist).
        :rtype: str
        """
        def __validator(filename):
            if not filename:
                raise errors.PluginError(
                    'Please enter a valid path to your {0}.'.format(label))

            filename = os.path.expanduser(filename)

            validate_file(filename)

            if validator:
                validator(filename)

        code, response = ops.validated_directory(
            __validator,
            'Input the path to your {0}'.format(label),
            force_interactive=True)

        if code == display_util.OK:
            return response
        else:
            raise errors.PluginError('{0} required to proceed.'.format(label))
Exemple #2
0
    def test_directory_select_validation(self, mock_util):
        mock_util().directory_select.side_effect = [(display_util.OK, ""),
                                                    (display_util.OK, self.valid_directory)]

        returned = ops.validated_directory(self.__validator, "msg", force_interactive=True)
        self.assertEqual(ValidatorTests.__ERROR, mock_util().notification.call_args[0][0])
        self.assertEqual(returned, (display_util.OK, self.valid_directory))
Exemple #3
0
    def _prompt_for_file(label, validator=None):
        """
        Prompt the user for a path.

        :param str label: The user-friendly label for the file.
        :param callable validator: A method which will be called to validate the supplied input
            after it has been validated to be a non-empty path to an existing file. Should throw a
            `~certbot.errors.PluginError` to indicate any issue.
        :returns: The user's response (guaranteed to exist).
        :rtype: str
        """

        def __validator(filename):
            if not filename:
                raise errors.PluginError('Please enter a valid path to your {0}.'.format(label))

            filename = os.path.expanduser(filename)

            validate_file(filename)

            if validator:
                validator(filename)

        code, response = ops.validated_directory(
            __validator,
            'Input the path to your {0}'.format(label),
            force_interactive=True)

        if code == display_util.OK:
            return response
        else:
            raise errors.PluginError('{0} required to proceed.'.format(label))
    def test_directory_select_validation_with_default(self, mock_util):
        mock_util().directory_select.side_effect = [(display_util.OK,
                                                     self.valid_directory)]

        returned = ops.validated_directory(self.__validator,
                                           "msg",
                                           default="other")
        self.assertEqual(returned, (display_util.OK, self.valid_directory))
Exemple #5
0
 def _prompt_for_new_webroot(self, domain):
     code, webroot = ops.validated_directory(
         _validate_webroot,
         "Input the webroot for {0}:".format(domain),
         force_interactive=True)
     if code == display_util.CANCEL:
         return None
     else:  # code == display_util.OK
         return _validate_webroot(webroot)
Exemple #6
0
 def _prompt_for_new_webroot(self, domain):
     code, webroot = ops.validated_directory(
         _validate_webroot,
         "Input the webroot for {0}:".format(domain),
         force_interactive=True)
     if code == display_util.CANCEL:
         return None
     else:  # code == display_util.OK
         return _validate_webroot(webroot)
Exemple #7
0
 def _prompt_for_new_webroot(self, domain, allowraise=False):
     code, webroot = ops.validated_directory(
         _validate_webroot,
         "Input the webroot for {0}:".format(domain),
         force_interactive=True)
     if code == display_util.CANCEL:
         if not allowraise:
             return None
         raise errors.PluginError("Every requested domain must have a "
                                  "webroot when using the webroot plugin.")
     return _validate_webroot(webroot)  # code == display_util.OK
Exemple #8
0
 def _prompt_for_new_webroot(self, domain):
     code, webroot = ops.validated_directory(
         _validate_webroot,
         "Input the webroot for {0}:".format(domain),
         force_interactive=True)
     if code == display_util.HELP:
         # Displaying help is not currently implemented
         return None
     elif code == display_util.CANCEL or code == display_util.ESC:
         return None
     else:  # code == display_util.OK
         return _validate_webroot(webroot)
Exemple #9
0
 def _prompt_for_new_webroot(self, domain, allowraise=False):
     code, webroot = ops.validated_directory(
         _validate_webroot,
         "Input the webroot for {0}:".format(domain),
         force_interactive=True)
     if code == display_util.CANCEL:
         if not allowraise:
             return None
         else:
             raise errors.PluginError(
                 "Every requested domain must have a "
                 "webroot when using the webroot plugin.")
     else:  # code == display_util.OK
         return _validate_webroot(webroot)
Exemple #10
0
    def test_directory_select_validation_with_default(self, mock_util):
        mock_util().directory_select.side_effect = [(display_util.OK, self.valid_directory)]

        returned = ops.validated_directory(self.__validator, "msg", default="other")
        self.assertEqual(returned, (display_util.OK, self.valid_directory))