core/tests/components
Andrew Hayworth fed6625324
Refactor / update Awair integration (#34394)
* Refactor / update Awair integration

This commit does a few things, all in service of making the Awair
integration more modern and reliable. Specifically we do the following:

- Update to python_awair 0.1.1
- Begin using config entries / flow for setting up the integration.
  - YAML support is completely removed.
  - The integration now allows adding multiple Awair accounts, should a
    user wish to do so (I found it _very_ useful in development).
- Group various Awair sensors into devices, using the device registry.
- Renames various sensors and treats the "dust" sensor as a particulate sensor.
- Device update rate-limits are no longer dynamically calculated; the
  Awair API now separates rate-limits on a per-device basis.
- Supports sound pressure and illuminance sensors found on some Awair devices.
- We report the "awair index" for certain sensors as part of device_state_attributes.
  The "index" is a subjective measure of whether or not a sensor reading
  is "good" or "bad" (and to what extent). It's a component of the Awair
  score, and it is useful on its own as an input for those who wish to
  do things like "display this color if the value is 'bad'".

This is a breaking change, and requires updates to documentation and a
warning in the README. The breaking changes in detail, are:

- Support for all YAML configuration is removed, and users will need to
  re-add the integration via the UI.
- We no longer support overriding device discovery via manual
  configuration of device UUIDs. This was previously supported because
  the Awair API had severe limits on the device list endpoints; however
  those have since been removed.
- Gen 1 devices no longer show a "dust" sensor; rather we create a PM2.5
  sensor and a PM10 sensor and just keep the values in sync. This better
  reflects the sensor capabilities: it can detect particles in a range
  from 2.5 -> 10, but cannot differentiate between sizes.
- Sensors are renamed as follows:
  - "sensor.devicename_co2"   -> "sensor.devicename_carbon_dioxide"
  - "sensor.devicename_voc"   -> "sensor.devicename_volatile_organic_compounds"
  - "sensor.devicename_score" -> "sensor.devicename_air_quality_index"
  - I've chosen to call the "Awair Score" an "air quality index" sensor,
    because fundamentally the "Awair Score" and other air quality indices
    (such as CAQI) do the same thing: they calculate a value based on a
    variety of other inputs.

Under the hood, the integration has seen some improvements:

- We use the DataUpdateCoordinator class to handle updates, rather than
  rolling our own update class.
- The code no longer tracks availability based on a timestamp returned
  from the Awair service; we assert that if we have received a response
  and the response has data for our device, then we are available (and
  otherwise, not available). We don't need to test the actual Awair API
  so heavily.
- Test coverage has been expanded to handle a variety of products that
  Awair produces, not just the one I happen to own.
- Test coverage no longer concerns itself with testing behavior that is
  now handled by the DataUpdateCoordinator; nor is it concerned with
  ensuring that the overall component sets up and registers properly.
  These are assumed to be well-tested functionaity of the core and not
  things we need to re-test ourselves.

Finally - between library updates and integration updates, this
integration is well-positioned to support future updates. I have a
proof-of-concept patch for device automations, and the underlying
library now supports subclassing authentication (which clears the way
for us to use OAuth authentication for Awair).

* Wrap test fixture in mock_coro

Truthfully I'm not sure why this was passing on my local dev
environment, but I was developing with python 3.8 before. After
installing python 3.7, I was able to reproduce the CI failures and fix
them.

* Fix broken tests after #34901 and/or #34989

* Do not rename sensors so broadly

We're going to keep the sensors named as they were before, pending the
outcome of any decisions around the air_quality component and what names
should be standardized for air-quality-like devices.

If standardized names are selected (which does seem likely), then we
will update this integration to match them - at which point, it would be
a breaking change.

But for now, we'll keep names mostly identical to what users had before.

Notable in this commit is that we generate the entity_id ourselves,
rather than just allowing it to be auto-generated from the name
attribute. This allows us to provide more human friendly names, while
keeping the old format for entity ids. For example, given an Awair
device called "Living Room", we'll generate an entity id of
"sensor.living_room_voc" but show set the name of the device to "Living
Room Volatile organic compounds".

* Support import from config.yaml

We'll create a config entry from config.yaml the first time we're
loaded, and then defer to it from then on.

We ignore all keys other than the access_token, since we no longer need
to deal with per-account rate-limits (rather, everything is per-device
now).

* Add myself to CODEOWNERS

Since I wrote the initial integration, and now this re-write, it feels
appropriate for me to take care of the integration along with `danielsjf`.

* Remove name mangling

* Update homeassistant/components/awair/manifest.json

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/awair/config_flow.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/awair/sensor.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/awair/sensor.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Address some review feedback

* Set up reauth flow in a job, rather than awaiting

* Remove unnecessary title string

* Remove unnecessary config schema checking

As pointed out in review, because this comes in via import from
`configuration.yaml`, we can rely on the `PLATFORM_SCHEMA` validation instead.

* Fix tests

* Set unique_id appropriately for legacy devices

For users who have had this integration already installed (and who have
updated their home assistant installation sometime in recent history),
we want to ensure that unique_id's are set to the same thing as before,
to facilitate the upgrade process.

To do that, we add an additional property to the `SENSOR_TYPES` dict
(`ATTR_UNIQUE_ID`) which allows us to map modern sensor names from
python_awair to what older versions called them - ie: `humidity` ->
`HUMID`. We then use that value when constructing the unique ID. This
should allow users to upgrade and not lose configuration even if entity
IDs would otherwise change (because we have changed the name format that
generates entity IDs).

One note is that for the gen1 `DUST` sensor, we have to treat it
differently. This integration used to call that a "PM2.5" sensor, but
the unique_id generated would be something like `awair_12345_DUST`. So
we special-case that sensor, and do the same thing. We do not need to
special-case the PM10 sensor for gen1 devices, because we didn't create
a PM10 sensor in the past (we do now, because the "DUST" sensor is
really a hybrid PM2.5/PM10 sensor).

* Patch async_setup_entry for two tests

* Update awair config_flow to require / use an email address for unique_id

Also, only start one re-auth flow.

* Add a few more tests, try to get coverage up.

* Add another test

* Move attribution to device_state_attributes

* Don't require email

* Switch from Union[dict, None] to Optional[dict]

* Use a mock where requested

* Fix missing constant rename

* Use async_create_task

* Bump test coverage a bit for config_flow

* s/CONF_UNIQUE_ID/UNIQUE_ID/g

* Add warning about deprecated platform config

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2020-06-21 21:46:07 +02:00
..
abode Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
acmeda Add Acmeda integration (#33384) 2020-05-17 12:15:06 +02:00
adguard Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
agent_dvr Add agent_dvr integration (#32711) 2020-05-08 09:49:47 -05:00
air_quality Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
airly Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
airvisual Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
alarm_control_panel
alert Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
alexa Prefilter more logbook events in sql (#36958) 2020-06-21 10:50:58 -07:00
almond ConfigFlow default discovery without unique ID (#36754) 2020-06-15 13:38:38 +02:00
ambiclimate Fix cloudhooks coming in for non existing webhooks (#36836) 2020-06-15 16:30:40 -07:00
ambient_station
androidtv Fix usage of states 'idle' and 'standby' for Android TV (#36509) 2020-06-07 10:10:20 -05:00
api Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
api_streams
apns Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
apprise Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
aprs Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
arcam_fmj Arcam config flow (#34384) 2020-06-06 13:43:28 -07:00
arlo Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
asuswrt Use a future for mock coro (#34989) 2020-04-30 16:31:00 -07:00
atag Add tests to Atag integration (#35944) 2020-05-26 08:38:02 +02:00
august Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
aurora Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
auth Fix client ID lookup for official apps (#36131) 2020-05-25 15:39:24 -04:00
automation Prefilter more logbook events in sql (#36958) 2020-06-21 10:50:58 -07:00
avri Add Avri config flow (#34288) 2020-06-06 09:37:31 -05:00
awair Refactor / update Awair integration (#34394) 2020-06-21 21:46:07 +02:00
aws Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
axis Light control support to Axis devices (#36611) 2020-06-18 23:27:08 +02:00
bayesian Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
binary_sensor Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
blackbird Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
blebox Clean up blebox climate (#36143) 2020-05-26 13:29:19 +02:00
blink Add blink tests (#36672) 2020-06-16 11:05:33 +02:00
bluetooth_le_tracker Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
bom Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
braviatv Catch NoIPControl exception (#36088) 2020-05-25 16:05:52 -04:00
broadlink Fix connection problems in the Broadlink integration (#34670) 2020-05-13 10:36:32 +02:00
brother Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
bsblan Add BSBLan Climate integration (#32375) 2020-05-09 22:16:21 -04:00
buienradar Fix flapping buienradar tests (#36394) 2020-06-02 18:54:58 -05:00
caldav Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
calendar Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
camera Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
canary Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
cast Bump pychromecast to 6.0.0 (#36414) 2020-06-04 20:32:00 +02:00
cert_expiry Fix cert_expiry time-based tests v2 (#36934) 2020-06-19 16:19:43 +02:00
climate Add climate services required features (#35804) 2020-05-20 23:47:30 +02:00
cloud Fix cloudhooks coming in for non existing webhooks (#36836) 2020-06-15 16:30:40 -07:00
coinmarketcap Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
command_line Fix command line sensors removing quotes with template (#35559) 2020-06-10 18:31:59 +02:00
config Add get_url helper, deprecate base_url (#35224) 2020-05-08 02:29:47 +02:00
configurator Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
conversation
coolmaster Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
coronavirus Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
counter Add transition support to scenes, cleanup blocking parameter (#34434) 2020-04-20 18:07:50 -07:00
cover Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
daikin Fix unique_id in Zeroconf flow (#36948) 2020-06-20 22:59:25 +02:00
darksky Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
datadog Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
deconz Change deCONZ sensor device classes (#36352) 2020-06-02 16:17:21 +02:00
default_config Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
demo Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
denonavr DenonAVR Config Flow (#35255) 2020-06-16 14:46:39 +02:00
derivative Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
device_automation Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
device_sun_light_trigger Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
device_tracker Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
devolo_home_control Use show_advanced_options in devolo home control (#35360) 2020-06-02 17:52:36 -07:00
dialogflow Detect use of deprecated base_url (#35353) 2020-05-08 17:52:32 +02:00
directv Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
discovery Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
doorbird Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
dsmr Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
dte_energy_bridge Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
duckdns
dunehd Add config flow to Dune HD (#36345) 2020-06-03 07:01:56 -05:00
dynalite Strict creation of the config for dynalite (#34663) 2020-05-04 20:30:24 -07:00
dyson Add support for Dyson Pure HP04 purifying heater + fan (#34537) 2020-06-16 05:31:11 +01:00
ecobee
ee_brightbox Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
efergy Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
elgato
elkm1 Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
emulated_hue Fix emulated_hue compatibility with older devices (#36090) 2020-05-25 14:55:23 -05:00
emulated_roku Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
esphome Add unique id to esphome config flow (#34753) 2020-04-30 16:24:47 -07:00
everlights
facebook
facebox Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
fail2ban Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
fan Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
feedreader Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
ffmpeg Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
fido Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
file Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
filesize Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
filter Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
flick_electric Add Flick Electric NZ integration (#30696) 2020-05-09 22:13:06 -04:00
flume Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const (#36233) 2020-05-30 17:27:20 +02:00
flunearyou Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
flux Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
folder Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
folder_watcher Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
foobot Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
forked_daapd Swap title and album name for streams in forked_daapd (#36381) 2020-06-03 09:51:15 -06:00
freebox Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
freedns Migrate freedns tests from coroutine to async/await (#30390) 2020-01-02 14:22:30 -06:00
fritzbox Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
frontend Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
garmin_connect Fix garmin_connect test (#35724) 2020-05-17 14:48:56 +02:00
gdacs Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
generic Fix various flapping tests that are missing block_till_done (#36346) 2020-06-01 10:11:09 -05:00
generic_thermostat Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
geo_json_events Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
geo_location
geo_rss_events Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
geofency Detect use of deprecated base_url (#35353) 2020-05-08 17:52:32 +02:00
geonetnz_quakes Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
geonetnz_volcano Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
gios Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
glances
gogogate2 Use builtin mock (#36473) 2020-06-05 10:59:55 +02:00
google Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const (#36233) 2020-05-30 17:27:20 +02:00
google_assistant Implement Google Assistant media traits (#35803) 2020-06-02 16:20:59 -07:00
google_domains
google_pubsub Removal of old style class definitions in tests (#33671) 2020-04-05 02:21:07 +02:00
google_translate Add get_url helper, deprecate base_url (#35224) 2020-05-08 02:29:47 +02:00
google_wifi Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
gpslogger Detect use of deprecated base_url (#35353) 2020-05-08 17:52:32 +02:00
graphite Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
griddy Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
group Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
guardian Allow Guardian config flow to be ignored (#36207) 2020-05-27 16:45:28 -06:00
hangouts Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
harmony Allow harmony activity change on start of switching activity (#36699) 2020-06-19 21:50:42 -05:00
hassio Fire config changed event during start (#36812) 2020-06-15 15:22:53 -07:00
hddtemp Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
heos Add TTS support to Heos (#35386) 2020-06-20 09:54:44 +02:00
here_travel_time Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
hisense_aehw4a1 Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
history Fix history graphs with mysql/mariadb (#36769) 2020-06-13 21:22:16 -07:00
history_stats Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
home_connect Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const (#36233) 2020-05-30 17:27:20 +02:00
homeassistant Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
homekit Prefilter more logbook events in sql (#36958) 2020-06-21 10:50:58 -07:00
homekit_controller Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
homematic Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
homematicip_cloud Bump dependency & add devices for HomematicIP Cloud (#36595) 2020-06-10 11:34:14 +02:00
honeywell Remove unnecessary string literal concatenations (#30360) 2020-01-02 21:17:10 +02:00
html5 Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
http Make the frontend available sooner (Part 1 of 2) (#36263) 2020-06-02 13:54:11 -05:00
huawei_lte
hue Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
hunterdouglas_powerview Fix exception in hunterdouglas_powerview with ignored config entry (#35482) 2020-05-10 22:06:31 -07:00
hvv_departures Add HVV integration (Hamburg public transportation) (#31564) 2020-06-15 00:15:20 +02:00
iaqualink
icloud Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
ifttt Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
ign_sismologia Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
image_processing Fix base_url extract stack (#36331) 2020-06-01 11:44:45 -07:00
imap_email_content Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
influxdb Add influx 2.0 and InfluxCloud support to InfluxDB integration (#35392) 2020-06-12 21:29:46 +02:00
input_boolean Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
input_datetime Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
input_number Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
input_select Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
input_text Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
integration Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
intent
intent_script
ios
ipma Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
ipp ConfigFlow default discovery without unique ID (#36754) 2020-06-15 13:38:38 +02:00
iqvia Use a future for mock coro (#34989) 2020-04-30 16:31:00 -07:00
islamic_prayer_times Fix Islamic prayer sensor timestamp format (#35243) 2020-05-06 15:17:40 +02:00
isy994 Add ssdp discovery for isy994 (#35568) 2020-05-13 11:15:17 -05:00
izone Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
jewish_calendar Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
juicenet Rewrite JuiceNet for async and config flow (#34365) 2020-05-08 00:52:20 -05:00
kira Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
konnected Use chip id in Konnected pro boards (#36940) 2020-06-20 08:39:04 +02:00
lastfm Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
light Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
linky Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
litejet Improve string formatting v6 (#33698) 2020-04-07 23:14:28 +02:00
local_file Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
local_ip
locative Detect use of deprecated base_url (#35353) 2020-05-08 17:52:32 +02:00
lock Rename LockDevice to LockEntity (#34594) 2020-04-25 18:02:41 +02:00
logbook Fix logbook filtering by entity id (#36973) 2020-06-21 14:34:47 -05:00
logentries Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
logger Ensure configured logger severity is respected (#35749) 2020-05-23 18:12:55 +02:00
logi_circle Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
london_air Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
lovelace Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
luftdaten Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
lutron_caseta Fix lutron_caseta setup options (#35974) 2020-05-22 23:01:48 +02:00
mailbox Use HTTP_NOT_FOUND constant (#33835) 2020-04-09 00:57:47 +02:00
mailgun Detect use of deprecated base_url (#35353) 2020-05-08 17:52:32 +02:00
manual Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
manual_mqtt Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
marytts Use builtin mock (#36473) 2020-06-05 10:59:55 +02:00
media_player Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
melcloud Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
melissa Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
meraki
met Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
meteo_france Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
metoffice Convert MetOffice to use UI for configuration (#34900) 2020-06-15 12:02:25 +02:00
mfi Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
mhz19 Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
microsoft_face Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
microsoft_face_detect Fix base_url extract stack (#36331) 2020-06-01 11:44:45 -07:00
microsoft_face_identify Fix base_url extract stack (#36331) 2020-06-01 11:44:45 -07:00
mikrotik Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
mill Add Mill config flow (#35136) 2020-05-10 08:44:05 -05:00
min_max Report entity IDs for min/max sensor platform (#33806) 2020-05-25 16:08:49 -04:00
minecraft_server Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
minio Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
mobile_app mobile_app: Camera Stream Webhook (#36839) 2020-06-15 19:09:53 -07:00
mochad Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
modbus Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
mold_indicator Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
monoprice Try to automatically detect zones on first run of Monoprice integration (#35127) 2020-05-12 22:30:59 +02:00
moon Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
mqtt Update MQTT tests to not create duplicated config entries (#36833) 2020-06-15 15:38:56 -07:00
mqtt_eventstream Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
mqtt_json Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
mqtt_room Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
mqtt_statestream Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
myq Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
mythicbeastsdns Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
namecheapdns
neato Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
ness_alarm Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
nest Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
netatmo Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const (#36233) 2020-05-30 17:27:20 +02:00
nexia Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
nextbus Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
no_ip
notify
notion Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
nsw_fuel_station Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
nsw_rural_fire_service_feed Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
nuheat Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
numato
nut Add discovery to NUT integration (#36827) 2020-06-19 17:33:01 +02:00
nws Cache data and update faster after failed updates in NWS (#35722) 2020-05-25 18:39:46 -05:00
nx584 Add NX584 alarm binary_sensor zone_number attribute (#36552) 2020-06-09 14:19:46 +02:00
onboarding Onboarding to validate redirect uri (#36863) 2020-06-17 12:13:28 -07:00
onvif Fix ONVIF config entry unique ID (#36008) 2020-05-24 21:50:50 +02:00
openalpr_cloud Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
openalpr_local Fix base_url extract stack (#36331) 2020-06-01 11:44:45 -07:00
openerz Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
openhardwaremonitor Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
opentherm_gw Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
openuv Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
opnsense
owntracks Detect use of deprecated base_url (#35353) 2020-05-08 17:52:32 +02:00
ozw Add fan platform to ozw component (#35249) 2020-05-26 19:48:39 -04:00
panasonic_viera Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
panel_custom Make panel_custom backwards compatible (#36926) 2020-06-19 16:03:39 +02:00
panel_iframe Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
persistent_notification Sort imports according to PEP8 for components starting with "P" (#29775) 2019-12-09 14:29:39 +01:00
person Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
pi_hole Add config flow to pi_hole integration (#35442) 2020-05-13 09:25:06 -04:00
pilight Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
plant Attempt to fix CI (#34800) 2020-04-28 10:31:22 -07:00
plex Handle Plex Live TV sessions (#36919) 2020-06-19 17:12:47 +02:00
plugwise Update plugwise to async and config_flow (#33691) 2020-05-28 10:52:25 -05:00
point Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const (#36233) 2020-05-30 17:27:20 +02:00
powerwall Remove powerwall attributes no longer present in latest firmware (#36667) 2020-06-11 10:15:02 -07:00
prometheus Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
proximity Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
ps4 Fix json overwriting if you have >1 PS4 connected (#35778) 2020-06-02 17:55:55 -07:00
ptvsd Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
push Add get_url helper, deprecate base_url (#35224) 2020-05-08 02:29:47 +02:00
pushbullet Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
pvpc_hourly_pricing Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
python_script Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
qld_bushfire Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
qwikswitch Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
rachio Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
radarr Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
rainmachine Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
random Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
recorder Fix recorder stopping after unserializable state (#36937) 2020-06-19 12:03:06 -05:00
reddit Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
remember_the_milk Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
remote Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
rest Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
rest_command
rflink Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
rfxtrx Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
ring Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
rmvtransport Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
roku Update rokuecp to 0.5.0 (#36975) 2020-06-21 14:29:39 -05:00
roomba Remove `certificate` configuration variable from roomba (#35162) 2020-05-04 08:28:32 -04:00
rss_feed_template
safe_mode Add Safe Mode (#30723) 2020-01-14 13:03:02 -08:00
samsungtv Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
scene Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
script Prefilter more logbook events in sql (#36958) 2020-06-21 10:50:58 -07:00
search Automation device/entity extraction to include triggers + conditions (#31474) 2020-02-05 16:52:21 +01:00
season Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
sense Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
sensor Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
sentry Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
seventeentrack Use builtin mock (#36473) 2020-06-05 10:59:55 +02:00
shell_command Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
shopping_list Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
sigfox Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
sighthound Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
signal_messenger Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
simplisafe Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
simulated
sleepiq Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
sma Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
smappee Renew Smappee (sensors and switches) (#36445) 2020-06-17 13:28:28 +02:00
smartthings Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const (#36233) 2020-05-30 17:27:20 +02:00
smhi Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
smtp Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
snips
solaredge Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
solarlog Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
soma Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
somfy Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const (#36233) 2020-05-30 17:27:20 +02:00
sonarr Fix lint on sonarr 2020-05-29 17:32:14 -07:00
songpal Widen songpal volume step change compatibility (#36152) 2020-05-28 00:09:15 +02:00
sonos Add sw_version and connections to sonos devices (#35743) 2020-05-17 16:16:50 -05:00
soundtouch Implement soundtouch select source (#31669) 2020-05-12 22:56:12 +02:00
spaceapi Use TEMP_CELSIUS constant (#33963) 2020-04-10 19:17:46 +02:00
spc
speedtestdotnet Add Speedtestdotnet config_flow (#36254) 2020-06-10 18:33:48 +02:00
splunk Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
spotify Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const (#36233) 2020-05-30 17:27:20 +02:00
sql Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
ssdp
starline
startca Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
statistics Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
statsd Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
stream Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
stt
sun Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
switch Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
switcher_kis Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
synology_dsm Bump python-synology to 0.8.1 (#35640) 2020-05-14 22:20:53 -05:00
system_health
system_log Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
tado Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
tcp Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
teksavvy Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
tellduslive ConfigFlow default discovery without unique ID (#36754) 2020-06-15 13:38:38 +02:00
template Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
tesla Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
threshold Sort imports according to PEP8 for components starting with "T" (#29778) 2019-12-09 14:41:48 +01:00
tibber Tibber config flow (#34469) 2020-05-03 14:40:19 +02:00
tile Clean up Tile refactor (#36450) 2020-06-05 21:12:48 +02:00
time_date Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
timer Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
tod Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
tomato Enable some more bandit checks (#30857) 2020-01-20 18:44:55 +02:00
toon Use CONF_CLIENT_ID & CONF_CLIENT_SECRET from homeassistant.const (#36233) 2020-05-30 17:27:20 +02:00
totalconnect Notify user if arming or disarming totalconnect alarm fails (#36085) 2020-06-03 18:38:31 +02:00
tplink Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
traccar Detect use of deprecated base_url (#35353) 2020-05-08 17:52:32 +02:00
tradfri Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
transmission Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
transport_nsw Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
trend Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
tts Fix TTS key by hashing options values too (#36813) 2020-06-15 13:33:26 +02:00
tuya Add config flow for Tuya (#35422) 2020-05-10 22:01:00 -05:00
twentemilieu
twilio Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
twitch Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
uk_transport Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
unifi UniFi - Increase time to mark UniFi devices as away (#36366) 2020-06-02 10:35:27 +02:00
unifi_direct Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
universal Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
upb Add Universal Powerline Bus (#34692) 2020-05-08 15:00:47 -05:00
updater Add more system information from Supervisor (#35560) 2020-05-12 15:27:34 -07:00
upnp Properly handle incomplete upnp ssdp discovery (#35553) 2020-05-14 22:58:41 +02:00
uptime Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
usgs_earthquakes_feed Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
utility_meter Fix utility_meter calibration with float values (#35186) 2020-05-05 02:44:00 +02:00
uvc Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
vacuum
velbus Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
vera Poll all status data in Vera (#35703) 2020-06-13 16:36:50 +02:00
verisure Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
version Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
vesync Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
vilfo Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
vizio Clean up vizio translation strings (#35725) 2020-05-25 16:36:49 -04:00
voicerss Add get_url helper, deprecate base_url (#35224) 2020-05-08 02:29:47 +02:00
vultr Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
wake_on_lan Allow specifying port for wake_on_lan (#36510) 2020-06-11 00:05:24 +02:00
water_heater Rename WaterHeaterDevice to WaterHeaterEntity (#34675) 2020-05-01 16:29:14 +02:00
weather Add precipitation probability to weather forcast (#36019) 2020-06-17 07:39:33 +02:00
webhook Detect use of deprecated base_url (#35353) 2020-05-08 17:52:32 +02:00
webostv Add webostv payload option to command service (#36164) 2020-05-27 15:51:39 +02:00
websocket_api Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
wiffi Add config option to set timeout for wiffi devices (#35694) 2020-05-17 10:31:28 +02:00
withings Add Withings webhooks (#34447) 2020-06-16 20:16:18 +02:00
wled Fix WLED power and brightness with WLED 0.10+ (#36529) 2020-06-07 23:37:58 +02:00
workday Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
worldclock Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
wsdot Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
wunderground Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
xiaomi Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
xiaomi_miio Add timers to xiaomi_miio vacuum (#35417) 2020-06-12 06:39:19 +02:00
yamaha Add service select scene to Yamaha Hifi media player (#36564) 2020-06-08 19:31:58 +02:00
yandex_transport Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
yandextts Add get_url helper, deprecate base_url (#35224) 2020-05-08 02:29:47 +02:00
yessssms Use asynctest-mock in most places (#35109) 2020-05-03 11:27:19 -07:00
yr Do async_setup_platform in background (#36244) 2020-05-31 22:18:30 -07:00
zeroconf Upgrade zeroconf to 0.27.1 (#36277) 2020-06-05 14:33:26 -07:00
zerproc Add Zerproc integration (#35477) 2020-05-13 00:26:44 +02:00
zha Drop ZHA sensor for Analog/Multistate input clusters (#36696) 2020-06-12 06:08:11 -04:00
zone Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00
zwave Use TestCase.addCleanup (#36560) 2020-06-08 12:26:40 -07:00
__init__.py
conftest.py Use built-in test helpers on 3.8 (#34901) 2020-04-30 13:29:50 -07:00