コード例 #1
0
    def test_update_extension_extra_index_url(self):
        """
        Tests extension update while specifying --extra-index-url parameter.
        :return:
        """
        extra_index_urls = [
            'https://testpypi.python.org/simple',
            'https://pypi.python.org/simple'
        ]

        add_extension(cmd=self.cmd,
                      source=MY_EXT_SOURCE,
                      pip_extra_index_urls=extra_index_urls)
        ext = show_extension(MY_EXT_NAME)
        self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
        newer_extension = _get_test_data_file(
            'myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')
        computed_extension_sha256 = _compute_file_hash(newer_extension)
        with mock.patch(
                'azure.cli.core.extension.operations.resolve_from_index',
                return_value=(newer_extension, computed_extension_sha256)):
            update_extension(self.cmd,
                             MY_EXT_NAME,
                             pip_extra_index_urls=extra_index_urls)
        ext = show_extension(MY_EXT_NAME)
        self.assertEqual(ext[OUT_KEY_VERSION], '0.0.4+dev')
コード例 #2
0
 def test_update_extension(self):
     add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
     newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')
     computed_extension_sha256 = _compute_file_hash(newer_extension)
     with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(newer_extension, computed_extension_sha256)):
         update_extension(self.cmd, MY_EXT_NAME)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_VERSION], '0.0.4+dev')
コード例 #3
0
 def test_update_extension(self):
     add_extension(source=MY_EXT_SOURCE)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
     newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')
     computed_extension_sha256 = _compute_file_hash(newer_extension)
     with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(newer_extension, computed_extension_sha256)):
         update_extension(MY_EXT_NAME)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_VERSION], '0.0.4+dev')
コード例 #4
0
 def test_update_extension_exception_in_update_and_rolled_back(self):
     add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
     newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')
     bad_sha256 = 'thishashisclearlywrong'
     with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(newer_extension, bad_sha256)):
         with self.assertRaises(CLIError) as err:
             update_extension(self.cmd, MY_EXT_NAME)
         self.assertTrue('Failed to update. Rolled {} back to {}.'.format(ext['name'], ext[OUT_KEY_VERSION]) in str(err.exception))
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
コード例 #5
0
 def test_update_extension_exception_in_update_and_rolled_back(self):
     add_extension(source=MY_EXT_SOURCE)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
     newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')
     bad_sha256 = 'thishashisclearlywrong'
     with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(newer_extension, bad_sha256)):
         with self.assertRaises(CLIError) as err:
             update_extension(MY_EXT_NAME)
         self.assertTrue('Failed to update. Rolled {} back to {}.'.format(ext['name'], ext[OUT_KEY_VERSION]) in str(err.exception))
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
コード例 #6
0
    def test_update_extension_extra_index_url(self):
        """
        Tests extension update while specifying --extra-index-url parameter.
        :return:
        """
        extra_index_urls = ['https://testpypi.python.org/simple', 'https://pypi.python.org/simple']

        add_extension(cmd=self.cmd, source=MY_EXT_SOURCE, pip_extra_index_urls=extra_index_urls)
        ext = show_extension(MY_EXT_NAME)
        self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
        newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')
        computed_extension_sha256 = _compute_file_hash(newer_extension)
        with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(newer_extension, computed_extension_sha256)):
            update_extension(self.cmd, MY_EXT_NAME, pip_extra_index_urls=extra_index_urls)
        ext = show_extension(MY_EXT_NAME)
        self.assertEqual(ext[OUT_KEY_VERSION], '0.0.4+dev')
コード例 #7
0
 def test_add_extension_with_name_valid_checksum(self):
     extension_name = MY_EXT_NAME
     computed_extension_sha256 = _compute_file_hash(MY_EXT_SOURCE)
     with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)):
         add_extension(cmd=self.cmd, extension_name=extension_name)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)
コード例 #8
0
 def test_add_extension_with_name_valid_checksum(self):
     extension_name = MY_EXT_NAME
     computed_extension_sha256 = _compute_file_hash(MY_EXT_SOURCE)
     with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)):
         add_extension(extension_name=extension_name)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)
コード例 #9
0
 def test_update_extension_no_updates(self):
     add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
     with mock.patch('azure.cli.core.extension.operations.resolve_from_index', side_effect=NoExtensionCandidatesError()):
         with self.assertRaises(CLIError) as err:
             update_extension(self.cmd, MY_EXT_NAME)
         self.assertTrue("No updates available for '{}'.".format(MY_EXT_NAME) in str(err.exception))
コード例 #10
0
 def test_update_extension_no_updates(self):
     add_extension(source=MY_EXT_SOURCE)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
     with mock.patch('azure.cli.core.extension.operations.resolve_from_index', side_effect=NoExtensionCandidatesError()):
         with self.assertRaises(CLIError) as err:
             update_extension(MY_EXT_NAME)
         self.assertTrue("No updates available for '{}'.".format(MY_EXT_NAME) in str(err.exception))
コード例 #11
0
 def test_add_list_show_remove_extension(self):
     add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)
     actual = list_extensions()
     self.assertEqual(len(actual), 1)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)
     remove_extension(MY_EXT_NAME)
     num_exts = len(list_extensions())
     self.assertEqual(num_exts, 0)
コード例 #12
0
 def test_add_list_show_remove_system_extension(self):
     add_extension(cmd=self.cmd, source=MY_EXT_SOURCE, system=True)
     actual = list_extensions()
     self.assertEqual(len(actual), 1)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)
     remove_extension(MY_EXT_NAME)
     num_exts = len(list_extensions())
     self.assertEqual(num_exts, 0)
コード例 #13
0
 def test_add_list_show_remove_extension(self):
     add_extension(MY_EXT_SOURCE)
     actual = list_extensions()
     self.assertEqual(len(actual), 1)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)
     remove_extension(MY_EXT_NAME)
     num_exts = len(list_extensions())
     self.assertEqual(num_exts, 0)
コード例 #14
0
 def test_add_list_show_remove_extension_with_dashes(self):
     add_extension(cmd=self.cmd, source=MY_SECOND_EXT_SOURCE_DASHES)
     actual = list_extensions()
     self.assertEqual(len(actual), 1)
     ext = show_extension(MY_SECOND_EXT_NAME_DASHES)
     self.assertEqual(ext[OUT_KEY_NAME], MY_SECOND_EXT_NAME_DASHES)
     self.assertIn(OUT_KEY_NAME, ext[OUT_KEY_METADATA], "Unable to get full metadata")
     self.assertEqual(ext[OUT_KEY_METADATA][OUT_KEY_NAME], MY_SECOND_EXT_NAME_DASHES)
     remove_extension(MY_SECOND_EXT_NAME_DASHES)
     num_exts = len(list_extensions())
     self.assertEqual(num_exts, 0)
コード例 #15
0
 def test_add_list_show_remove_extension_with_dashes(self):
     add_extension(MY_SECOND_EXT_SOURCE_DASHES)
     actual = list_extensions()
     self.assertEqual(len(actual), 1)
     ext = show_extension(MY_SECOND_EXT_NAME_DASHES)
     self.assertEqual(ext[OUT_KEY_NAME], MY_SECOND_EXT_NAME_DASHES)
     self.assertIn(OUT_KEY_NAME, ext[OUT_KEY_METADATA], "Unable to get full metadata")
     self.assertEqual(ext[OUT_KEY_METADATA][OUT_KEY_NAME], MY_SECOND_EXT_NAME_DASHES)
     remove_extension(MY_SECOND_EXT_NAME_DASHES)
     num_exts = len(list_extensions())
     self.assertEqual(num_exts, 0)
コード例 #16
0
 def test_add_list_show_remove_user_system_extensions(self):
     add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)
     add_extension(cmd=self.cmd,
                   source=MY_SECOND_EXT_SOURCE_DASHES,
                   system=True)
     actual = list_extensions()
     self.assertEqual(len(actual), 2)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_PATH], build_extension_path(MY_EXT_NAME))
     second_ext = show_extension(MY_SECOND_EXT_NAME_DASHES)
     self.assertEqual(second_ext[OUT_KEY_NAME], MY_SECOND_EXT_NAME_DASHES)
     self.assertEqual(
         second_ext[OUT_KEY_PATH],
         build_extension_path(MY_SECOND_EXT_NAME_DASHES, system=True))
     remove_extension(MY_EXT_NAME)
     num_exts = len(list_extensions())
     self.assertEqual(num_exts, 1)
     remove_extension(MY_SECOND_EXT_NAME_DASHES)
     num_exts = len(list_extensions())
     self.assertEqual(num_exts, 0)
コード例 #17
0
 def test_add_extension_with_name_but_it_already_exists(self):
     # Add extension without name first
     add_extension(source=MY_EXT_SOURCE)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)
     # Now add using name
     computed_extension_sha256 = _compute_file_hash(MY_EXT_SOURCE)
     with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)):
         with mock.patch('azure.cli.core.extension.operations.logger') as mock_logger:
             add_extension(extension_name=MY_EXT_NAME)
             call_args = mock_logger.warning.call_args
             self.assertEqual("The extension '%s' already exists.", call_args[0][0])
             self.assertEqual(MY_EXT_NAME, call_args[0][1])
             self.assertEqual(mock_logger.warning.call_count, 1)
コード例 #18
0
 def test_add_extension_with_name_but_it_already_exists(self):
     # Add extension without name first
     add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)
     ext = show_extension(MY_EXT_NAME)
     self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)
     # Now add using name
     computed_extension_sha256 = _compute_file_hash(MY_EXT_SOURCE)
     with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)):
         with mock.patch('azure.cli.core.extension.operations.logger') as mock_logger:
             add_extension(cmd=self.cmd, extension_name=MY_EXT_NAME)
             call_args = mock_logger.warning.call_args
             self.assertEqual("Extension '%s' is already installed.", call_args[0][0])
             self.assertEqual(MY_EXT_NAME, call_args[0][1])
             self.assertEqual(mock_logger.warning.call_count, 1)
コード例 #19
0
    def test_update_extension_no_updates(self):
        logger_msgs = []

        def mock_log_warning(_, msg):
            logger_msgs.append(msg)

        add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)
        ext = show_extension(MY_EXT_NAME)
        self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
        with mock.patch('azure.cli.core.extension.operations.resolve_from_index', side_effect=NoExtensionCandidatesError()), \
                mock.patch('logging.Logger.warning', mock_log_warning):
            update_extension(self.cmd, MY_EXT_NAME)
        self.assertTrue("No updates available for '{}'.".format(MY_EXT_NAME) in
                        logger_msgs[0])
コード例 #20
0
    def test_add_list_show_remove_extension_extra_index_url(self):
        """
        Tests extension addition while specifying --extra-index-url parameter.
        :return:
        """
        extra_index_urls = ['https://testpypi.python.org/simple', 'https://pypi.python.org/simple']

        add_extension(source=MY_EXT_SOURCE, pip_extra_index_urls=extra_index_urls)
        actual = list_extensions()
        self.assertEqual(len(actual), 1)
        ext = show_extension(MY_EXT_NAME)
        self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)
        remove_extension(MY_EXT_NAME)
        num_exts = len(list_extensions())
        self.assertEqual(num_exts, 0)
コード例 #21
0
    def test_add_list_show_remove_extension_extra_index_url(self):
        """
        Tests extension addition while specifying --extra-index-url parameter.
        :return:
        """
        extra_index_urls = ['https://testpypi.python.org/simple', 'https://pypi.python.org/simple']

        add_extension(cmd=self.cmd, source=MY_EXT_SOURCE, pip_extra_index_urls=extra_index_urls)
        actual = list_extensions()
        self.assertEqual(len(actual), 1)
        ext = show_extension(MY_EXT_NAME)
        self.assertEqual(ext[OUT_KEY_NAME], MY_EXT_NAME)
        remove_extension(MY_EXT_NAME)
        num_exts = len(list_extensions())
        self.assertEqual(num_exts, 0)
コード例 #22
0
    def test_update_extension_verify_no_pip_proxy(self):
        add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)
        ext = show_extension(MY_EXT_NAME)
        self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
        newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')
        computed_extension_sha256 = _compute_file_hash(newer_extension)

        with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)), \
                mock.patch('azure.cli.core.extension.operations.shutil'), \
                mock.patch('azure.cli.core.extension.operations.is_valid_sha256sum', return_value=(True, computed_extension_sha256)), \
                mock.patch('azure.cli.core.extension.operations.extension_exists', return_value=None), \
                mock.patch('azure.cli.core.extension.operations.check_output') as check_output:

            update_extension(self.cmd, MY_EXT_NAME)
            args = check_output.call_args
            pip_cmd = args[0][0]
            if '--proxy' in pip_cmd:
                raise AssertionError("proxy parameter in check_output args although no proxy specified")
コード例 #23
0
    def test_update_extension_verify_no_pip_proxy(self):
        add_extension(source=MY_EXT_SOURCE)
        ext = show_extension(MY_EXT_NAME)
        self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
        newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')
        computed_extension_sha256 = _compute_file_hash(newer_extension)

        with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)), \
                mock.patch('azure.cli.core.extension.operations.shutil'), \
                mock.patch('azure.cli.core.extension.operations.is_valid_sha256sum', return_value=(True, computed_extension_sha256)), \
                mock.patch('azure.cli.core.extension.operations.extension_exists', return_value=None), \
                mock.patch('azure.cli.core.extension.operations.check_output') as check_output:

            update_extension(MY_EXT_NAME)
            args = check_output.call_args
            pip_cmd = args[0][0]
            if '--proxy' in pip_cmd:
                raise AssertionError("proxy parameter in check_output args although no proxy specified")
コード例 #24
0
    def test_update_extension_with_pip_proxy(self):
        add_extension(cmd=self.cmd, source=MY_EXT_SOURCE)
        ext = show_extension(MY_EXT_NAME)
        self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
        newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')
        computed_extension_sha256 = _compute_file_hash(newer_extension)

        proxy_param = '--proxy'
        proxy_endpoint = "https://*****:*****@proxy.microsoft.com"
        with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)), \
                mock.patch('azure.cli.core.extension.operations.shutil'), \
                mock.patch('azure.cli.core.extension.operations.is_valid_sha256sum', return_value=(True, computed_extension_sha256)), \
                mock.patch('azure.cli.core.extension.operations.extension_exists', return_value=None), \
                mock.patch('azure.cli.core.extension.operations.check_output') as check_output:

            update_extension(self.cmd, MY_EXT_NAME, pip_proxy=proxy_endpoint)
            args = check_output.call_args
            pip_cmd = args[0][0]
            proxy_index = pip_cmd.index(proxy_param)
            assert pip_cmd[proxy_index + 1] == proxy_endpoint
コード例 #25
0
    def test_update_extension_with_pip_proxy(self):
        add_extension(source=MY_EXT_SOURCE)
        ext = show_extension(MY_EXT_NAME)
        self.assertEqual(ext[OUT_KEY_VERSION], '0.0.3+dev')
        newer_extension = _get_test_data_file('myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl')
        computed_extension_sha256 = _compute_file_hash(newer_extension)

        proxy_param = '--proxy'
        proxy_endpoint = "https://*****:*****@proxy.microsoft.com"
        with mock.patch('azure.cli.core.extension.operations.resolve_from_index', return_value=(MY_EXT_SOURCE, computed_extension_sha256)), \
                mock.patch('azure.cli.core.extension.operations.shutil'), \
                mock.patch('azure.cli.core.extension.operations.is_valid_sha256sum', return_value=(True, computed_extension_sha256)), \
                mock.patch('azure.cli.core.extension.operations.extension_exists', return_value=None), \
                mock.patch('azure.cli.core.extension.operations.check_output') as check_output:

            update_extension(MY_EXT_NAME, pip_proxy=proxy_endpoint)
            args = check_output.call_args
            pip_cmd = args[0][0]
            proxy_index = pip_cmd.index(proxy_param)
            assert pip_cmd[proxy_index + 1] == proxy_endpoint
コード例 #26
0
    def test_add_extension_with_specific_version(self):
        extension_name = MY_EXT_NAME
        extension1 = 'myfirstcliextension-0.0.3+dev-py2.py3-none-any.whl'
        extension2 = 'myfirstcliextension-0.0.4+dev-py2.py3-none-any.whl'

        mocked_index_data = {
            extension_name: [
                mock_ext(extension1,
                         version='0.0.3+dev',
                         download_url=_get_test_data_file(extension1)),
                mock_ext(extension2,
                         version='0.0.4+dev',
                         download_url=_get_test_data_file(extension2))
            ]
        }

        with IndexPatch(mocked_index_data):
            add_extension(self.cmd,
                          extension_name=extension_name,
                          version='0.0.3+dev')
            ext = show_extension(extension_name)
            self.assertEqual(ext['name'], extension_name)
            self.assertEqual(ext['version'], '0.0.3+dev')
コード例 #27
0
def show_extension_cmd(extension_name):
    return show_extension(extension_name)
コード例 #28
0
ファイル: custom.py プロジェクト: sptramer/azure-cli
def show_extension_cmd(extension_name):
    return show_extension(extension_name)