text: """Test config init."""
  import asyncio
  from unittest.mock import patch
  
  from homeassistant.const import EVENT_COMPONENT_LOADED
  from homeassistant.setup import async_setup_component, ATTR_COMPONENT
  from homeassistant.components import config
  
  from tests.common import mock_coro, mock_component
  
  
  @asyncio.coroutine
  def test_config_setup(hass, loop):
      """Test it sets up hassbian."""
      yield from async_setup_component(hass, 'config', {})
      assert 'config' in hass.config.components
  
  
  @asyncio.coroutine
  def test_load_on_demand_already_loaded(hass, aiohttp_client):
      """Test getting suites."""
      mock_component(hass, 'zwave')
  
      with patch.object(config, 'SECTIONS', []), \
              patch.object(config, 'ON_DEMAND', ['zwave']), \
              patch('homeassistant.components.config.zwave.async_setup') as stp:
          stp.return_value = mock_coro(True)
  
          yield from async_setup_component(hass, 'config', {})
  
      yield from hass.async_block_till_done()
      assert 'config.zwave' in hass.config.components
      assert stp.called
  
  
  @asyncio.coroutine
  def test_load_on_demand_on_load(hass, aiohttp_client):
      """Test getting suites."""
      with patch.object(config, 'SECTIONS', []), \
              patch.object(config, 'ON_DEMAND', ['zwave']):
          yield from async_setup_component(hass, 'config', {})
  
      assert 'config.zwave' not in hass.config.components
  
      with patch('homeassistant.components.config.zwave.async_setup') as stp:
          stp.return_value = mock_coro(True)
          hass.bus.async_fire(EVENT_COMPONENT_LOADED, {ATTR_COMPONENT: 'zwave'})
          yield from hass.async_block_till_done()
  
      assert 'config.zwave' in hass.config.components
      assert stp.called
  