class TestFritzhome(object): def setup(self): self.mock = MagicMock() self.fritz = Fritzhome("10.0.0.1", "user", "pass") self.fritz._request = self.mock @raises(LoginError) def test_login_fail(self): self.mock.side_effect = [ Helper.response("login_rsp_without_valid_sid"), Helper.response("login_rsp_without_valid_sid"), ] self.fritz.login() def test_login(self): self.mock.side_effect = [ Helper.response("login_rsp_without_valid_sid"), Helper.response("login_rsp_with_valid_sid"), ] self.fritz.login() def test_logout(self): self.fritz.logout() self.fritz._request.assert_called_with( "http://10.0.0.1/login_sid.lua", { "sid": None, "security:command/logout": "1" }, ) def test_aha_request(self): self.fritz._aha_request(cmd="testcmd") self.fritz._request.assert_called_with( "http://10.0.0.1/webservices/homeautoswitch.lua", { "sid": None, "switchcmd": "testcmd" }, ) self.fritz._aha_request(cmd="testcmd", ain="1") self.fritz._request.assert_called_with( "http://10.0.0.1/webservices/homeautoswitch.lua", { "sid": None, "switchcmd": "testcmd", "ain": "1" }, ) self.fritz._aha_request(cmd="testcmd", ain="1", param={ "a": "1", "b": "2" }) self.fritz._request.assert_called_with( "http://10.0.0.1/webservices/homeautoswitch.lua", { "sid": None, "switchcmd": "testcmd", "ain": "1", "a": "1", "b": "2", }, ) @raises(InvalidError) def test_aha_request_invalid(self): self.mock.side_effect = [ "inval", ] self.fritz._aha_request(cmd="estcmd") def test_get_device_element(self): self.mock.side_effect = [ Helper.response("base/device_list"), Helper.response("base/device_list"), Helper.response("base/device_list"), ] element = self.fritz.get_device_element("08761 0000434") eq_(element.attrib["identifier"], "08761 0000434") eq_(element.attrib["fwversion"], "03.33") element = self.fritz.get_device_element("08761 1048079") eq_(element.attrib["identifier"], "08761 1048079") eq_(element.attrib["fwversion"], "03.44") element = self.fritz.get_device_element("unknown") eq_(element, None) def test_get_device_by_ain(self): self.mock.side_effect = [ Helper.response("base/device_list"), Helper.response("base/device_list"), ] self.fritz.update_devices() device = self.fritz.get_device_by_ain("08761 0000434") eq_(device.ain, "08761 0000434") def test_aha_get_devices(self): self.mock.side_effect = [ Helper.response("base/device_list"), ] self.fritz.update_devices() devices = self.fritz.get_devices() eq_(devices[0].name, "Steckdose") eq_(devices[1].name, "FRITZ!DECT Rep 100 #1") self.fritz._request.assert_called_with( "http://10.0.0.1/webservices/homeautoswitch.lua", { "sid": None, "switchcmd": "getdevicelistinfos" }, ) def test_get_device_name(self): self.mock.side_effect = ["testname"] eq_(self.fritz.get_device_name(ain="1234"), "testname") self.fritz._request.assert_called_with( "http://10.0.0.1/webservices/homeautoswitch.lua", { "sid": None, "ain": "1234", "switchcmd": "getswitchname" }, ) def test_get_template_by_ain(self): self.mock.side_effect = [ Helper.response("templates/template_list"), Helper.response("templates/template_list"), ] self.fritz.update_templates() device = self.fritz.get_template_by_ain("tmp0B32F7-1B0650682") eq_(device.ain, "tmp0B32F7-1B0650682") def test_aha_get_templates(self): self.mock.side_effect = [ Helper.response("templates/template_list"), ] self.fritz.update_templates() templates = self.fritz.get_templates() eq_(templates[0].name, "Base Data") eq_(templates[1].name, "One Device") self.fritz._request.assert_called_with( "http://10.0.0.1/webservices/homeautoswitch.lua", { "sid": None, "switchcmd": "gettemplatelistinfos" }, ) def test_aha_apply_template(self): self.fritz.apply_template("1234") self.fritz._request.assert_called_with( "http://10.0.0.1/webservices/homeautoswitch.lua", { "sid": None, "ain": "1234", "switchcmd": "applytemplate" }, ) def test_set_target_temperature(self): self.fritz.set_target_temperature("1", 25.5) self.fritz._request.assert_called_with( "http://10.0.0.1/webservices/homeautoswitch.lua", { "sid": None, "ain": "1", "switchcmd": "sethkrtsoll", "param": 51 }, ) self.fritz.set_target_temperature("1", 0.0) self.fritz._request.assert_called_with( "http://10.0.0.1/webservices/homeautoswitch.lua", { "sid": None, "ain": "1", "switchcmd": "sethkrtsoll", "param": 253 }, ) self.fritz.set_target_temperature("1", 32.0) self.fritz._request.assert_called_with( "http://10.0.0.1/webservices/homeautoswitch.lua", { "sid": None, "ain": "1", "switchcmd": "sethkrtsoll", "param": 254 }, )
class TestFritzhomeTemplate(object): def setup(self): self.mock = MagicMock() self.fritz = Fritzhome("10.0.0.1", "user", "pass") self.fritz._request = self.mock self.fritz._devices = {} self.mock.side_effect = [Helper.response("templates/template_list")] self.fritz.update_templates() def test_template_init(self): template = self.fritz.get_template_by_ain("tmp0B32F7-1B0650682") eq_(template.ain, "tmp0B32F7-1B0650682") eq_(template._functionsbitmask, 320) assert_false(template.apply_hkr_summer) assert_false(template.apply_hkr_temperature) assert_false(template.apply_hkr_holidays) assert_false(template.apply_hkr_time_table) assert_false(template.apply_relay_manual) assert_false(template.apply_relay_automatic) assert_false(template.apply_level) assert_false(template.apply_color) assert_false(template.apply_dialhelper) def test_template_with_single_device(self): template = self.fritz.get_template_by_ain("tmp0B32F7-1B0650234") eq_(template.devices, ["08735 0525249"]) def test_template_with_multiple_devices(self): template = self.fritz.get_template_by_ain("tmp0B32F7-1C40A2B8A") expected_devices = set(["08735 0525249", "08735 0525249", "08735 0340143", "08735 0526125"]) eq_(len(expected_devices.intersection(template.devices)), len(expected_devices)) def test_template_applies_hkr_summer(self): template = self.fritz.get_template_by_ain("tmp0B32F7-1B064FA20") assert_true(template.apply_hkr_summer) assert_false(template.apply_hkr_temperature) assert_false(template.apply_hkr_holidays) assert_false(template.apply_hkr_time_table) assert_false(template.apply_relay_manual) assert_false(template.apply_relay_automatic) assert_false(template.apply_level) assert_false(template.apply_color) assert_false(template.apply_dialhelper) def test_template_applies_hkr_temperature(self): template = self.fritz.get_template_by_ain("tmp0B32F7-1B064FA21") assert_false(template.apply_hkr_summer) assert_true(template.apply_hkr_temperature) assert_false(template.apply_hkr_holidays) assert_false(template.apply_hkr_time_table) assert_false(template.apply_relay_manual) assert_false(template.apply_relay_automatic) assert_false(template.apply_level) assert_false(template.apply_color) assert_false(template.apply_dialhelper) def test_template_applies_hkr_holidays(self): template = self.fritz.get_template_by_ain("tmp0B32F7-1B064FA22") assert_false(template.apply_hkr_summer) assert_false(template.apply_hkr_temperature) assert_true(template.apply_hkr_holidays) assert_false(template.apply_hkr_time_table) assert_false(template.apply_relay_manual) assert_false(template.apply_relay_automatic) assert_false(template.apply_level) assert_false(template.apply_color) assert_false(template.apply_dialhelper) def test_template_applies_hkr_time_table(self): template = self.fritz.get_template_by_ain("tmp0B32F7-1B064FA23") assert_false(template.apply_hkr_summer) assert_false(template.apply_hkr_temperature) assert_false(template.apply_hkr_holidays) assert_true(template.apply_hkr_time_table) assert_false(template.apply_relay_manual) assert_false(template.apply_relay_automatic) assert_false(template.apply_level) assert_false(template.apply_color) assert_false(template.apply_dialhelper) def test_template_applies_relay_manual(self): template = self.fritz.get_template_by_ain("tmp0B32F7-1B064FA24") assert_false(template.apply_hkr_summer) assert_false(template.apply_hkr_temperature) assert_false(template.apply_hkr_holidays) assert_false(template.apply_hkr_time_table) assert_true(template.apply_relay_manual) assert_false(template.apply_relay_automatic) assert_false(template.apply_level) assert_false(template.apply_color) assert_false(template.apply_dialhelper) def test_template_applies_relay_automatic(self): template = self.fritz.get_template_by_ain("tmp0B32F7-1B064FA25") assert_false(template.apply_hkr_summer) assert_false(template.apply_hkr_temperature) assert_false(template.apply_hkr_holidays) assert_false(template.apply_hkr_time_table) assert_false(template.apply_relay_manual) assert_true(template.apply_relay_automatic) assert_false(template.apply_level) assert_false(template.apply_color) assert_false(template.apply_dialhelper) def test_template_applies_level(self): template = self.fritz.get_template_by_ain("tmp0B32F7-1B064FA26") assert_false(template.apply_hkr_summer) assert_false(template.apply_hkr_temperature) assert_false(template.apply_hkr_holidays) assert_false(template.apply_hkr_time_table) assert_false(template.apply_relay_manual) assert_false(template.apply_relay_automatic) assert_true(template.apply_level) assert_false(template.apply_color) assert_false(template.apply_dialhelper) def test_template_applies_color(self): template = self.fritz.get_template_by_ain("tmp0B32F7-1B064FA27") assert_false(template.apply_hkr_summer) assert_false(template.apply_hkr_temperature) assert_false(template.apply_hkr_holidays) assert_false(template.apply_hkr_time_table) assert_false(template.apply_relay_manual) assert_false(template.apply_relay_automatic) assert_false(template.apply_level) assert_true(template.apply_color) assert_false(template.apply_dialhelper) def test_template_applies_dialhelper(self): template = self.fritz.get_template_by_ain("tmp0B32F7-1B064FA28") assert_false(template.apply_hkr_summer) assert_false(template.apply_hkr_temperature) assert_false(template.apply_hkr_holidays) assert_false(template.apply_hkr_time_table) assert_false(template.apply_relay_manual) assert_false(template.apply_relay_automatic) assert_false(template.apply_level) assert_false(template.apply_color) assert_true(template.apply_dialhelper)