code: def test_proxy_failure(mocker, empty_environ):
      app = Dash()
  
      # if the tests work we'll never get to server.run, but keep the mock
      # in case something is amiss and we don't get an exception.
      mocker.patch.object(app.server, "run")
  
      with pytest.raises(_exc.ProxyError) as excinfo:
          app.run(
              proxy="https://127.0.0.1:8055::http://plot.ly",
              host="127.0.0.1",
              port=8055,
          )
      assert (
          "protocol: http is incompatible with the proxy"
          in excinfo.exconly()
      )
      assert "you must use protocol: https" in excinfo.exconly()
  
      with pytest.raises(_exc.ProxyError) as excinfo:
          app.run(
              proxy="http://0.0.0.0:8055::http://plot.ly",
              host="127.0.0.1",
              port=8055,
          )
      assert (
          "host: 127.0.0.1 is incompatible with the proxy"
          in excinfo.exconly()
      )
      assert "you must use host: 0.0.0.0" in excinfo.exconly()
  
      with pytest.raises(_exc.ProxyError) as excinfo:
          app.run(
              proxy="http://0.0.0.0:8155::http://plot.ly",
              host="0.0.0.0",
              port=8055,
          )
      assert (
          "port: 8055 is incompatible with the proxy"
          in excinfo.exconly()
      )
      assert "you must use port: 8155" in excinfo.exconly()
  
imports: import os
  import logging
  import pytest
  from flask import Flask
  from dash import Dash, exceptions
  from dash._configs import pathname_configs, DASH_ENV_VARS, get_combined_config, load_dash_env_vars
  from dash._utils import AttributeDict
  from dash._get_paths import app_get_asset_url, app_get_relative_path, app_strip_relative_path, get_asset_url, get_relative_path, strip_relative_path
label_desc: Use image node_id 23 for calling a global function with example usage: test_proxy_failure(mocker, empty_environ) without return types