async def create_app(hass: HomeAssistant, api): """Create a SmartApp for this instance of hass.""" # Create app from template attributes template = _get_app_template(hass) app = App() for key, value in template.items(): setattr(app, key, value) app, client = await api.create_app(app) _LOGGER.debug("Created SmartApp '%s' (%s)", app.app_name, app.app_id) # Set unique hass id in settings settings = AppSettings(app.app_id) settings.settings[SETTINGS_APP_ID] = app.app_id settings.settings[SETTINGS_INSTANCE_ID] = hass.data[DOMAIN][ CONF_INSTANCE_ID] await api.update_app_settings(settings) _LOGGER.debug("Updated App Settings for SmartApp '%s' (%s)", app.app_name, app.app_id) # Set oauth scopes oauth = AppOAuth(app.app_id) oauth.client_name = APP_OAUTH_CLIENT_NAME oauth.scope.extend(APP_OAUTH_SCOPES) await api.update_app_oauth(oauth) _LOGGER.debug("Updated App OAuth for SmartApp '%s' (%s)", app.app_name, app.app_id) return app, client
async def create_app(hass: HomeAssistantType, api): """Create a SmartApp for this instance of hass.""" from pysmartthings import App, AppOAuth, AppSettings from pysmartapp.const import SETTINGS_APP_ID # Create app from template attributes template = _get_app_template(hass) app = App() for key, value in template.items(): setattr(app, key, value) app = (await api.create_app(app))[0] _LOGGER.debug("Created SmartApp '%s' (%s)", app.app_name, app.app_id) # Set unique hass id in settings settings = AppSettings(app.app_id) settings.settings[SETTINGS_APP_ID] = app.app_id settings.settings[SETTINGS_INSTANCE_ID] = \ hass.data[DOMAIN][CONF_INSTANCE_ID] await api.update_app_settings(settings) _LOGGER.debug("Updated App Settings for SmartApp '%s' (%s)", app.app_name, app.app_id) # Set oauth scopes oauth = AppOAuth(app.app_id) oauth.client_name = 'Home Assistant' oauth.scope.extend(APP_OAUTH_SCOPES) await api.update_app_oauth(oauth) _LOGGER.debug("Updated App OAuth for SmartApp '%s' (%s)", app.app_name, app.app_id) return app
def app_fixture(hass, config_file): """Fixture for a single app.""" app = AppEntity(Mock()) app.apply_data({ 'appName': APP_NAME_PREFIX + str(uuid4()), 'appId': str(uuid4()), 'appType': 'WEBHOOK_SMART_APP', 'classifications': [CLASSIFICATION_AUTOMATION], 'displayName': 'Home Assistant', 'description': "Home Assistant at " + hass.config.api.base_url, 'singleInstance': True, 'webhookSmartApp': { 'targetUrl': webhook.async_generate_url( hass, hass.data[DOMAIN][CONF_WEBHOOK_ID]), 'publicKey': ''} }) app.refresh = Mock() app.refresh.return_value = mock_coro() app.save = Mock() app.save.return_value = mock_coro() settings = AppSettings(app.app_id) settings.settings[SETTINGS_INSTANCE_ID] = config_file[CONF_INSTANCE_ID] app.settings = Mock() app.settings.return_value = mock_coro(return_value=settings) return app
def app_fixture(hass, config_file): """Fixture for a single app.""" app = AppEntity(Mock()) app.apply_data({ 'appName': APP_NAME_PREFIX + str(uuid4()), 'appId': str(uuid4()), 'appType': 'WEBHOOK_SMART_APP', 'classifications': [CLASSIFICATION_AUTOMATION], 'displayName': 'Home Assistant', 'description': "Home Assistant at " + hass.config.api.base_url, 'singleInstance': True, 'webhookSmartApp': { 'targetUrl': webhook.async_generate_url(hass, hass.data[DOMAIN][CONF_WEBHOOK_ID]), 'publicKey': '' } }) app.refresh = Mock() app.refresh.return_value = mock_coro() app.save = Mock() app.save.return_value = mock_coro() settings = AppSettings(app.app_id) settings.settings[SETTINGS_INSTANCE_ID] = config_file[CONF_INSTANCE_ID] app.settings = Mock() app.settings.return_value = mock_coro(return_value=settings) return app
def app_settings_fixture(app, config_file): """Fixture for an app settings.""" settings = AppSettings(app.app_id) settings.settings[SETTINGS_INSTANCE_ID] = config_file[CONF_INSTANCE_ID] return settings