code: def test_generate_signed(self) -> None:
      session_id = generate_session_id(signed=True, secret_key="abc")
      token = generate_jwt_token(
          session_id, signed=True, secret_key="abc"
      )
      assert "." in token
      decoded = json.loads(_b64_to_utf8(token.split(".")[0]))
      assert "session_id" in decoded
      assert decoded["session_id"] == session_id
      assert check_token_signature(token, secret_key="abc", signed=True)
      assert not check_token_signature(
          token, secret_key="qrs", signed=True
      )
  
imports: from __future__ import annotations
  import pytest
  import calendar
  import codecs
  import datetime
  import json
  import random
  from unittest.mock import MagicMock, Mock, patch
  from bokeh.util.token import _TOKEN_ZLIB_KEY, _base64_decode, _base64_encode, _get_sysrandom, _reseed_if_needed, _signature, check_token_signature, generate_jwt_token, generate_secret_key, generate_session_id, get_session_id, get_token_payload
  from tests.support.util.env import envset
  import bokeh.util.token
label_desc: Use image node_id 8 for calling the TestSessionId obj's underlying member method code with example usage: obj.test_generate_signed() without return types