docstr: Thumbnails: Simple get dashboard with wrong digest
docstr_tok: ["Thumbnails",":","Simple","get","dashboard","with","wrong","digest"]
code: def test_get_cached_dashboard_wrong_digest(self):
      """
      Thumbnails: Simple get dashboard with wrong digest
      """
      with patch.object(
          DashboardScreenshot,
          "get_from_cache",
          return_value=BytesIO(self.mock_image),
      ):
          self.login(username="admin")
          id_, thumbnail_url = self._get_id_and_thumbnail_url(
              DASHBOARD_URL
          )
          rv = self.client.get(
              f"api/v1/dashboard/{id_}/thumbnail/1234/"
          )
          self.assertEqual(rv.status_code, 302)
          self.assertEqual(rv.headers["Location"], thumbnail_url)
  
imports: import json
  import urllib.request
  from io import BytesIO
  from unittest import skipUnless
  from unittest.mock import ANY, call, MagicMock, patch
  import pytest
  from flask_testing import LiveServerTestCase
  from sqlalchemy.sql import func
  from superset import db, is_feature_enabled, security_manager
  from superset.extensions import machine_auth_provider_factory
  from superset.models.dashboard import Dashboard
  from superset.models.slice import Slice
  from superset.tasks.types import ExecutorType
  from superset.utils.screenshots import ChartScreenshot, DashboardScreenshot
  from superset.utils.urls import get_url_path
  from superset.utils.webdriver import WebDriverSelenium
  from tests.integration_tests.conftest import with_feature_flags
  from tests.integration_tests.fixtures.birth_names_dashboard import load_birth_names_dashboard_with_slices, load_birth_names_data
  from tests.integration_tests.test_app import app
  from .base_tests import SupersetTestCase
label_desc: Use image node_id 14 for calling the TestThumbnails obj's underlying member method code with example usage: obj.test_get_cached_dashboard_wrong_digest() without return types