code: def test_read_configuration_from_connection_empty_config(self):
      conn = Connection(
          conn_type="gcpssh",
          extra=json.dumps({}),
      )
      conn_uri = conn.get_uri()
      with mock.patch.dict("os.environ", AIRFLOW_CONN_GCPSSH=conn_uri):
          hook = ComputeEngineSSHHook(gcp_conn_id="gcpssh")
          hook._load_connection_config()
      assert None is hook.instance_name
      assert None is hook.hostname
      assert "root" == hook.user
      assert False is hook.use_internal_ip
      assert isinstance(hook.use_internal_ip, bool)
      assert False is hook.use_iap_tunnel
      assert isinstance(hook.use_iap_tunnel, bool)
      assert False is hook.use_oslogin
      assert isinstance(hook.use_oslogin, bool)
      assert 300 == hook.expire_time
      assert isinstance(hook.expire_time, int)
  
imports: from __future__ import annotations
  import json
  import logging
  from unittest import mock
  import httplib2
  import pytest
  from googleapiclient.errors import HttpError
  from paramiko.ssh_exception import SSHException
  from airflow.exceptions import AirflowException
  from airflow.models import Connection
  from airflow.providers.google.cloud.hooks.compute_ssh import ComputeEngineSSHHook
label_desc: Use image node_id 14 for calling the TestComputeEngineHookWithPassedProjectId obj's underlying member method code with example usage: obj.test_read_configuration_from_connection_empty_config() without return types