def test_functionapp_remote_build_doesnt_support_windows(
            self, enable_zip_deploy_mock, parse_resource_id_mock,
            web_client_factory_mock):
        # prepare
        cmd_mock = _get_test_cmd()
        cli_ctx_mock = mock.MagicMock()
        cmd_mock.cli_ctx = cli_ctx_mock

        appservice_mock = mock.Mock()
        appservice_mock.reserved = False  # Marked app service as Windows

        web_client_mock = mock.Mock()
        web_client_mock.web_apps = mock.Mock()
        web_client_mock.web_apps.get = mock.Mock(return_value=appservice_mock)
        web_client_factory_mock.return_value = web_client_mock

        # action
        with self.assertRaises(CLIError):
            enable_zip_deploy_functionapp(cmd_mock,
                                          'rg',
                                          'name',
                                          'src',
                                          build_remote=True,
                                          timeout=None,
                                          slot=None)

        # assert
        web_client_mock.web_apps.get.assert_called_with('rg', 'name')
    def test_functionapp_linux_consumption_non_remote_build(
            self, is_plan_consumption_mock, upload_zip_to_storage_mock,
            parse_resource_id_mock, web_client_factory_mock):
        # prepare
        cmd_mock = _get_test_cmd()
        cli_ctx_mock = mock.MagicMock()
        cmd_mock.cli_ctx = cli_ctx_mock

        appservice_mock = mock.Mock()
        appservice_mock.reserved = True  # Marked app service as Linux

        web_client_mock = mock.Mock()
        web_client_mock.web_apps = mock.Mock()
        web_client_mock.web_apps.get = mock.Mock(return_value=appservice_mock)
        web_client_factory_mock.return_value = web_client_mock

        # action
        # Linux Consumption app should use update-storage to deploy when not using remote build
        enable_zip_deploy_functionapp(cmd_mock,
                                      'rg',
                                      'name',
                                      'src',
                                      build_remote=False,
                                      timeout=None,
                                      slot=None)

        # assert
        web_client_mock.web_apps.get.assert_called_with('rg', 'name')
        upload_zip_to_storage_mock.assert_called_with(cmd_mock, 'rg', 'name',
                                                      'src', None)
    def test_functionapp_remote_build_supports_linux(
            self, enable_zip_deploy_mock, parse_resource_id_mock,
            web_client_factory_mock, add_remote_build_app_settings_mock):
        # prepare
        cmd_mock = _get_test_cmd()
        cli_ctx_mock = mock.MagicMock()
        cmd_mock.cli_ctx = cli_ctx_mock

        appservice_mock = mock.Mock()
        appservice_mock.reserved = True  # Marked app service as Linux

        web_client_mock = mock.Mock()
        web_client_mock.web_apps = mock.Mock()
        web_client_mock.web_apps.get = mock.Mock(return_value=appservice_mock)
        web_client_factory_mock.return_value = web_client_mock

        # action
        enable_zip_deploy_functionapp(cmd_mock,
                                      'rg',
                                      'name',
                                      'src',
                                      build_remote=True,
                                      timeout=None,
                                      slot=None)

        # assert
        web_client_mock.web_apps.get.assert_called_with('rg', 'name')
        enable_zip_deploy_mock.assert_called_with(cmd_mock, 'rg', 'name',
                                                  'src', None, None)
    def test_functionapp_zip_deploy_flow(self, add_remote_build_app_settings_mock,
                                         enable_zip_deploy_mock,
                                         parse_resource_id_mock,
                                         web_client_factory_mock):
        cmd_mock = _get_test_cmd()
        cli_ctx_mock = mock.MagicMock()
        cmd_mock.cli_ctx = cli_ctx_mock

        # action
        enable_zip_deploy_functionapp(cmd_mock, 'rg', 'name', 'src', build_remote=True, timeout=None, slot=None)

        # assert
        parse_resource_id_mock.assert_called_once()
        enable_zip_deploy_mock.assert_called_once()