def test_integration_simple() -> None: """Test authentification then get basic pool measures.""" # Init client client = FliprAPIRestClient(USERNAME, PASSWORD) list_fliprs = client.search_flipr_ids() print("Identifiants flipper trouvés : " + str(list_fliprs)) assert FLIPR_ID in list_fliprs data = client.get_pool_measure_latest(FLIPR_ID) print( "Valeurs de la piscine : le {:s} temperature = {:.2f}, redox = {:.2f}, chlorine = {:.5f}, ph = {:.2f}".format( data["date_time"].strftime("%Y-%m-%d %H:%M:%S"), data["temperature"], data["red_ox"], data["chlorine"], data["ph"], ) ) assert data["temperature"] > 0 assert data["red_ox"] > 0 assert data["chlorine"] > 0 assert data["ph"] > 0 assert data["date_time"] is not None
async def _authenticate_and_search_flipr(self) -> list[str]: """Validate the username and password provided and searches for a flipr id.""" # Instantiates the flipr API that does not require async since it is has no network access. client = FliprAPIRestClient(self._username, self._password) flipr_ids = await self.hass.async_add_executor_job(client.search_flipr_ids) return flipr_ids
def test_integration_hub() -> None: """Test authentification then get hub operation.""" # Init client client = FliprAPIRestClient(USERNAME, PASSWORD) list_hubs = client.search_hub_ids() print("Identifiants hub trouvés : " + str(list_hubs)) assert HUB_ID in list_hubs data = client.get_hub_state(HUB_ID) print("Hub state: {:b}, mode: {:s}".format(data["state"], data["mode"])) assert data["state"] in [True, False] assert data["mode"] in ["auto", "manual", "planning"] print("set hub mode to auto") data = client.set_hub_mode(HUB_ID, "auto") print("Hub state: {:b}, mode: {:s}".format(data["state"], data["mode"])) assert data["state"] in [True, False] assert data["mode"] == "auto" print("set hub state to On") data = client.set_hub_state(HUB_ID, True) print("Hub state: {:b}, mode: {:s}".format(data["state"], data["mode"])) assert data["state"] is True assert data["mode"] == "manual"
def __init__(self, hass, entry): """Initialize.""" username = entry.data[CONF_EMAIL] password = entry.data[CONF_PASSWORD] self.flipr_id = entry.data[CONF_FLIPR_ID] # Establishes the connection. self.client = FliprAPIRestClient(username, password) self.entry = entry super().__init__( hass, _LOGGER, name=f"Flipr data measure for {self.flipr_id}", update_interval=SCAN_INTERVAL, )
def test_integration_simple(requests_mock) -> None: # type: ignore """Test authentification then get basic pool measures.""" # mock behaviour : requests_mock.post( FLIPR_AUTH_URL, json={ "access_token": "abcd-dummy_token_value", "token_type": "bearer", "expires_in": 23327999, "refresh_token": "dummy_refresh_token", }, ) requests_mock.get( f"{FLIPR_API_URL}/modules", json=[ { "ActivationKey": "12345", "IsSuspended": False, "Status": { "Comment": None, "DateTime": "2020-04-13T14:26:53.563", "Status": "Activated", }, "BatteryPlugDate": "2019-07-01T00:00:00", "Comments": None, "NoAlertUnil": "2000-01-01T00:00:00", "Serial": "AB256C", "PAC": "123456B", "ResetsCounter": 4, "SigfoxStatus": "Activated", "OffsetOrp": 0.0, "OffsetTemperature": 0.0, "OffsetPh": 0.0, "OffsetConductivite": 0, "IsForSpa": False, "Version": 3, "LastMeasureDateTime": "2021-02-01T07:40:23.663", "CommercialType": { "Id": 2, "Value": "Pro" }, "SubscribtionValidUntil": 1565947747, "ModuleType_Id": 1, "Eco_Mode": 0, "IsSubscriptionValid": True, }, { "ActivationKey": "12345", "IsSuspended": False, "Status": { "Comment": None, "DateTime": "2020-04-13T14:26:53.563", "Status": "Activated", }, "BatteryPlugDate": "2019-07-01T00:00:00", "Comments": None, "NoAlertUnil": "2000-01-01T00:00:00", "Serial": "CD256C", "PAC": "123456B", "ResetsCounter": 0, "SigfoxStatus": "Inactive", "OffsetOrp": 0.0, "OffsetTemperature": 0.0, "OffsetPh": 0.0, "OffsetConductivite": 0, "IsForSpa": False, "Version": 3, "LastMeasureDateTime": "2021-02-01T07:40:23.663", "CommercialType": { "Id": 1, "Value": "Start" }, "SubscribtionValidUntil": 1565947747, "ModuleType_Id": 2, "Eco_Mode": 0, "IsSubscriptionValid": True, }, ], ) requests_mock.get( f"{FLIPR_API_URL}/modules/AB256C/survey/last", json={ "MeasureId": 405698, "DateTime": "2021-02-01T07:40:21Z", "Temperature": 10.0, "PH": { "Label": "PH", "Message": "Parfait", "Deviation": -0.47, "Value": 7.01, "DeviationSector": "Medium", }, "OxydoReductionPotentiel": { "Label": "Potentiel Redox.", "Value": 474.0 }, "Conductivity": { "Label": "Conductivité", "Level": "Low" }, "UvIndex": 0.0, "Battery": { "Label": "Batterie", "Deviation": 0.75 }, "Desinfectant": { "Label": "Chlore", "Message": "Trop faible", "Deviation": -1.01, "Value": 0.31986785186370315, "DeviationSector": "TooLow", }, }, ) requests_mock.get( f"{FLIPR_API_URL}/hub/CD256C/state", json={ "stateEquipment": 1, "behavior": "manual", "planning": "", "internalKeepAlive": None, "messageModeAutoFiltration": None, "ErrorCode": None, "ErrorMessage": None, }, ) requests_mock.put( f"{FLIPR_API_URL}/hub/CD256C/mode/manual", json={ "stateEquipment": 1, "behavior": "manual", "planning": "", "internalKeepAlive": None, "messageModeAutoFiltration": None, "ErrorCode": None, "ErrorMessage": None, }, ) requests_mock.put( f"{FLIPR_API_URL}/hub/CD256C/mode/auto", json={ "stateEquipment": 1, "behavior": "auto", "planning": "", "internalKeepAlive": None, "messageModeAutoFiltration": None, "ErrorCode": None, "ErrorMessage": None, }, ) requests_mock.put( f"{FLIPR_API_URL}/hub/CD256C/mode/planning", json={ "stateEquipment": 1, "behavior": "planning", "planning": "", "internalKeepAlive": None, "messageModeAutoFiltration": None, "ErrorCode": None, "ErrorMessage": None, }, ) requests_mock.post(f"{FLIPR_API_URL}/hub/CD256C/Manual/True", ) # Init client client = FliprAPIRestClient("USERNAME", "PASSWORD") # Test all id search list_all = client.search_all_ids() print("Identifiants trouvés : " + str(list_all)) assert "AB256C" in list_all["flipr"] assert "CD256C" in list_all["hub"] # Test flipr id search list_fliprs = client.search_flipr_ids() print("Identifiants flipper trouvés : " + str(list_fliprs)) assert "AB256C" in list_fliprs # Test pool measure retrieval data = client.get_pool_measure_latest("AB256C") date_time = data["date_time"] temperature = data["temperature"] red_ox = data["red_ox"] chlorine = data["chlorine"] ph = data["ph"] print( "Valeurs de la piscine : le {:s} temperature = {:.2f}, redox = {:.2f}, chlorine = {:.5f}, ph = {:.2f}" .format( date_time.strftime("%Y-%m-%d %H:%M:%S"), temperature, red_ox, chlorine, ph, )) assert temperature == 10.0 assert red_ox == 474.0 assert chlorine == 0.31986785186370315 assert ph == 7.01 assert date_time.strftime("%Y-%m-%d %H:%M:%S") == "2021-02-01 07:40:21" # Test hub id search list_hub = client.search_hub_ids() print("Identifiants hub trouvés : " + str(list_hub)) assert "CD256C" in list_hub # Test hub get_hub_state data = client.get_hub_state("CD256C") state = data["state"] mode = data["mode"] assert state is True assert mode == "manual" # Test hub set_hub_mode for target_mode in ["manual", "auto", "planning"]: data = client.set_hub_mode("CD256C", target_mode) assert data["mode"] == target_mode # Test hub set_hub_mode with wrong value with pytest.raises(ValueError): data = client.set_hub_mode("CD256C", "Manual") # Test hub set_hub_state data = client.set_hub_state("CD256C", True) state = data["state"] mode = data["mode"] assert state is True assert mode == "manual" # Test hub set_hub_state with wrong value with pytest.raises(ValueError): data = client.set_hub_state("CD256C", "On") # Test flipr id not found requests_mock.get(f"{FLIPR_API_URL}/modules", json=[]) list_fliprs = client.search_flipr_ids() assert len(list_fliprs) == 0