def test_wrong_values(self): content = '<?xml version="1.0" encoding="UTF-8"?><passages gare="87393405"><train><date mode="R">18/02/2017 14:37</date><num>165626</num><miss></passages>' values = format_content(nbr_trains, content, depart_name)[0] + format_content( nbr_trains, content, gare_name)[0] value = send_alert_to_domoticz(host, port, idx_alert, values, level) try: json.loads(str(value.decode("utf-8"))) except ValueError as e: self.fail('invalid json: ' + e) self.assertEqual( """{\n "status" : "OK",\n "title" : "Update Device"\n}\n""", value.decode("utf-8"))
def test_values_no_train(self): content = """<?xml version="1.0" encoding="UTF-8"?>\r\n<passages gare="87393405">\r\n</passages>""" values = format_content(nbr_trains, content, depart_name)[0] + format_content( nbr_trains, content, gare_name)[0] value = send_alert_to_domoticz(host, port, idx_alert, values, level) try: json.loads(str(value.decode("utf-8"))) except ValueError as e: self.fail('invalid json: ' + e) self.assertEqual( """{\n "status" : "OK",\n "title" : "Update Device"\n}\n""", value.decode("utf-8"))
def test_first_normal_second_with_state(self): content = """<?xml version="1.0" encoding="UTF-8"?> <passages gare="87393405"> <train><date mode="R">26/01/2017 08:38</date> <num>164674</num> <miss>PEMU</miss> <term>87391003</term> </train> <train><date mode="R">26/01/2017 08:52</date> <num>164576</num> <miss>PEGU</miss> <term>87391003</term> <etat>Supprimé</etat> </train> <train><date mode="R">26/01/2017 09:07</date> <num>164578</num> <miss>POGI</miss> <term>87391003</term> <etat>Supprimé</etat> </train> <train><date mode="R">26/01/2017 09:37</date> <num>164682</num> <miss>POMI</miss> <term>87391003</term> </train> </passages>""" values, state = format_content(nbr_trains, content, depart_name) self.assertEqual(depart_name + "_:_26/01/2017_08:38", values[0]) self.assertEqual(depart_name + "_:_26/01/2017_08:52_Supprimé", values[1]) self.assertTrue(state)
def test_normal(self): content = """<?xml version="1.0" encoding="UTF-8"?>\r\n<passages gare="87393405">\r\n<train><date mode="R">18/02/2017 17:07</date>\r\n<num>165546</num>\r\n<miss>POGI</miss>\r\n<term>87391003</term>\r\n</train>\r\n<train><date mode="R">18/02/2017 17:37</date>\r\n<num>165650</num>\r\n<miss>POMI</miss>\r\n<term>87391003</term>\r\n</train>\r\n<train><date mode="R">18/02/2017 18:07</date>\r\n<num>165554</num>\r\n<miss>POGI</miss>\r\n<term>87391003</term>\r\n</train>\r\n<train><date mode="R">18/02/2017 18:37</date>\r\n<num>165658</num>\r\n<miss>POMI</miss>\r\n<term>87391003</term>\r\n</train>\r\n<train><date mode="R">18/02/2017 19:07</date>\r\n<num>165562</num>\r\n<miss>POGI</miss>\r\n<term>87391003</term>\r\n</train>\r\n<train><date mode="R">18/02/2017 19:37</date>\r\n<num>165666</num>\r\n<miss>POMI</miss>\r\n<term>87391003</term>\r\n</train>\r\n<train><date mode="R">18/02/2017 20:07</date>\r\n<num>165570</num>\r\n<miss>POGI</miss>\r\n<term>87391003</term>\r\n</train>\r\n<train><date mode="R">18/02/2017 20:37</date>\r\n<num>165674</num>\r\n<miss>POMI</miss>\r\n<term>87391003</term>\r\n</train>\r\n<train><date mode="R">18/02/2017 21:07</date>\r\n<num>165578</num>\r\n<miss>POGI</miss>\r\n<term>87391003</term>\r\n</train>\r\n<train><date mode="R">18/02/2017 21:37</date>\r\n<num>165682</num>\r\n<miss>POMI</miss>\r\n<term>87391003</term>\r\n</train>\r\n<train><date mode="R">18/02/2017 22:07</date>\r\n<num>165586</num>\r\n<miss>POGI</miss>\r\n<term>87391003</term>\r\n</train>\r\n</passages>\r\n""" values, state = format_content(nbr_trains, content, depart_name) self.assertEqual(depart_name + "_:_18/02/2017_17:07", values[0]) self.assertEqual(depart_name + "_:_18/02/2017_17:37", values[1]) self.assertFalse(state) self.assertEqual(len(values), 2)
def test_level(self): content = """<?xml version="1.0" encoding="UTF-8"?>\r\n<passages gare="87393405">\r\n<train><date mode="R">26/01/2017 08:38</date>\r\n<num>164674</num>\r\n<miss>PEMU</miss>\r\n<term>87391003</term>\r\n<etat>Retardé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 08:52</date>\r\n<num>164576</num>\r\n<miss>PEGU</miss>\r\n<term>87391003</term>\r\n<etat>Supprimé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 09:07</date>\r\n<num>164578</num>\r\n<miss>POGI</miss>\r\n<term>87391003</term>\r\n<etat>Supprimé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 09:37</date>\r\n<num>164682</num>\r\n<miss>POMI</miss>\r\n<term>87391003</term>\r\n</train>\r\n</passages>""" values, state = format_content(nbr_trains, content, depart_name) value = send_alert_to_domoticz(host, port, idx_alert, values, -5) try: json.loads(str(value.decode("utf-8"))) except ValueError as e: self.fail('invalid json: ' + e) self.assertEqual( """{\n "status" : "OK",\n "title" : "Update Device"\n}\n""", value.decode("utf-8")) value = send_alert_to_domoticz(host, port, idx_alert, values, "rte") try: json.loads(str(value.decode("utf-8"))) except ValueError as e: self.fail('invalid json: ' + e) self.assertEqual( """{\n "status" : "OK",\n "title" : "Update Device"\n}\n""", value.decode("utf-8")) value = send_alert_to_domoticz(host, port, idx_alert, values, 0) try: json.loads(str(value.decode("utf-8"))) except ValueError as e: self.fail('invalid json: ' + e) self.assertEqual( """{\n "status" : "OK",\n "title" : "Update Device"\n}\n""", value.decode("utf-8")) value = send_alert_to_domoticz(host, port, idx_alert, values, 40) try: json.loads(str(value.decode("utf-8"))) except ValueError as e: self.fail('invalid json: ' + e) self.assertEqual( """{\n "status" : "OK",\n "title" : "Update Device"\n}\n""", value.decode("utf-8"))
def test_port(self): content = """<?xml version="1.0" encoding="UTF-8"?>\r\n<passages gare="87393405">\r\n<train><date mode="R">26/01/2017 08:38</date>\r\n<num>164674</num>\r\n<miss>PEMU</miss>\r\n<term>87391003</term>\r\n<etat>Retardé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 08:52</date>\r\n<num>164576</num>\r\n<miss>PEGU</miss>\r\n<term>87391003</term>\r\n<etat>Supprimé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 09:07</date>\r\n<num>164578</num>\r\n<miss>POGI</miss>\r\n<term>87391003</term>\r\n<etat>Supprimé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 09:37</date>\r\n<num>164682</num>\r\n<miss>POMI</miss>\r\n<term>87391003</term>\r\n</train>\r\n</passages>""" values, state = format_content(nbr_trains, content, depart_name) value = send_alert_to_domoticz(host, '12300', idx_alert, values, level) self.assertEqual( 'Failed to reach a serverReason: [Errno 61] Connection refused', value) value = send_alert_to_domoticz(host, 'azerty', idx_alert, values, level) self.assertEqual('Problem with port number', value) value = send_alert_to_domoticz(host, 1234, idx_alert, values, level) self.assertEqual( 'Failed to reach a serverReason: [Errno 61] Connection refused', value)
def test_host(self): content = """<?xml version="1.0" encoding="UTF-8"?>\r\n<passages gare="87393405">\r\n<train><date mode="R">26/01/2017 08:38</date>\r\n<num>164674</num>\r\n<miss>PEMU</miss>\r\n<term>87391003</term>\r\n<etat>Retardé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 08:52</date>\r\n<num>164576</num>\r\n<miss>PEGU</miss>\r\n<term>87391003</term>\r\n<etat>Supprimé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 09:07</date>\r\n<num>164578</num>\r\n<miss>POGI</miss>\r\n<term>87391003</term>\r\n<etat>Supprimé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 09:37</date>\r\n<num>164682</num>\r\n<miss>POMI</miss>\r\n<term>87391003</term>\r\n</train>\r\n</passages>""" values, state = format_content(nbr_trains, content, depart_name) value = send_alert_to_domoticz(1234, port, idx_alert, values, level) self.assertEqual( 'Failed to reach a serverReason: [Errno 65] No route to host', value) value = send_alert_to_domoticz('1234', port, idx_alert, values, level) self.assertEqual( 'Failed to reach a serverReason: [Errno 65] No route to host', value) value = send_alert_to_domoticz('1.1.0.0', port, idx_alert, values, level) self.assertEqual( 'Failed to reach a serverReason: [Errno 60] Operation timed out', value)
def test_no_train(self): content = """<?xml version="1.0" encoding="UTF-8"?>\r\n<passages gare="87393405">\r\n</passages>""" values, state = format_content(nbr_trains, content, depart_name) self.assertEqual('No train', values[0]) self.assertTrue(state)
def test_wrong_content2(self): content = """<?xml version="1.0" encoding="UTF-8"?>\r\n<train><date mode="R">26/01/2017 08:38</date>\r\n<num>164674</num>\r\n<miss>PEMU</miss>\r\n<term>87391003</term>\r\n</train>\r\n<train><date mode="R">26/01/2017 08:52</date>\r\n<num>164576</num>\r\n<miss>PEGU</miss>\r\n<term>87391003</term>\r\n<etat>Supprimé</etat>\r\n<train><date mode="R">26/01/2017 09:07</date>\r\n<num>164578</num>\r\n<miss>POGI</miss>\r\n<term>87391003</term>\r\n<etat>Supprimé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 09:37</date>\r\n<num>164682</num>\r\n<miss>POMI</miss>\r\n<term>87391003</term>\r\n</train>\r\n</passages>""" values, state = format_content(nbr_trains, content, depart_name) self.assertIn("ParseError : junk after document element:", values[0]) self.assertFalse(state)
def test_wrong_content(self): content = '<?xml version="1.0" encoding="UTF-8"?><passages gare="87393405"><train><date mode="R">18/02/2017 14:37</date><num>165626</num><miss></passages>' values, state = format_content(nbr_trains, content, depart_name) self.assertIn("ParseError : mismatched tag:", values[0]) self.assertFalse(state)
def test_no_content(self): content = "" values, state = format_content(nbr_trains, content, depart_name) self.assertIn("ParseError : no element found:", values[0]) self.assertFalse(state)
def test_number_in_content(self): values, state = format_content(nbr_trains, 1234, depart_name) self.assertIn("Problem with content , can't be a int", values[0]) self.assertFalse(state)
class TestSendSms(unittest.TestCase): global values content = """<?xml version="1.0" encoding="UTF-8"?>\r\n<passages gare="87393405">\r\n<train><date mode="R">26/01/2017 08:38</date>\r\n<num>164674</num>\r\n<miss>PEMU</miss>\r\n<term>87391003</term>\r\n<etat>Retardé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 08:52</date>\r\n<num>164576</num>\r\n<miss>PEGU</miss>\r\n<term>87391003</term>\r\n<etat>Supprimé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 09:07</date>\r\n<num>164578</num>\r\n<miss>POGI</miss>\r\n<term>87391003</term>\r\n<etat>Supprimé</etat>\r\n</train>\r\n<train><date mode="R">26/01/2017 09:37</date>\r\n<num>164682</num>\r\n<miss>POMI</miss>\r\n<term>87391003</term>\r\n</train>\r\n</passages>""" values, state = format_content(nbr_trains, content, depart_name) def test_normal_with_one_number(self): self.assertTrue(test_values(values)) value = send_sms(host_sms, port_sms, password_sms, number, values) self.assertEqual( """<html>\n<body>\nMesage SENT!<br/>\n</body>\n</html>""", value[0].decode("utf-8")) self.assertFalse(test_values(values)) def test_normal_with_two_numbers(self): value = send_sms(host_sms, port_sms, password_sms, [number[0], number[0]], values) self.assertEqual( """<html>\n<body>\nMesage SENT!<br/>\n</body>\n</html>""", value[0].decode("utf-8")) self.assertEqual( """<html>\n<body>\nMesage SENT!<br/>\n</body>\n</html>""", value[1].decode("utf-8")) def test_wrong_host(self): value = send_sms("1.1.0.0", port_sms, password_sms, number, values) self.assertEqual( 'Failed to reach a serverReason: [Errno 60] Operation timed out', value) def test_wrong_host_format_content(self): value = send_sms("azerty", port_sms, password_sms, number, values) self.assertEqual( 'Failed to reach a serverReason: [Errno 8] nodename nor servname provided, or not known', value) def test_wrong_host_format_content2(self): value = send_sms(1234, port_sms, password_sms, number, values) self.assertEqual( 'Failed to reach a serverReason: [Errno 65] No route to host', value) def test_wrong_port(self): value = send_sms(host_sms, 1234, password_sms, number, values) self.assertEqual( 'Failed to reach a serverReason: [Errno 61] Connection refused', value) def test_wrong_port2(self): value = send_sms(host_sms, "port_sms", password_sms, number, values) self.assertEqual('Problem with port number', value) def test_wrong_password(self): value = send_sms(host_sms, port_sms, "password_sms", number, values) self.assertEqual('Request Error code: 400', value) def test_wrong_password_format_content(self): value = send_sms(host_sms, port_sms, 1234, number, values) self.assertEqual('Request Error code: 400', value) def test_wrong_values_format_content(self): value = send_sms(host_sms, port_sms, password_sms, number, 1234) self.assertEqual('Problem with values: need to be a list or a tuple', value) def test_wrong_values_format_content2(self): value = send_sms(host_sms, port_sms, password_sms, number, "1234") self.assertEqual('Problem with values: need to be a list or a tuple', value) def test_wrong_values_empty(self): value = send_sms(host_sms, port_sms, password_sms, number, "") self.assertEqual('Problem with values: Empty', value) def test_wrong_values_empty2(self): value = send_sms(host_sms, port_sms, password_sms, number, None) self.assertEqual('Problem with values: Empty', value) def test_wrong_number(self): value = send_sms(host_sms, port_sms, password_sms, ["number"], values) self.assertEqual("Invalid mobile number: number", value) def test_wrong_number2(self): value = send_sms(host_sms, port_sms, password_sms, ["06564534098"], values) self.assertEqual("Invalid mobile number: 06564534098", value) def test_wrong_number3(self): value = send_sms(host_sms, port_sms, password_sms, ["06564534098", number[0]], values) self.assertEqual("Invalid mobile number: 06564534098", value) def test_wrong_number4(self): value = send_sms(host_sms, port_sms, password_sms, [number[0], "06564534098"], values) self.assertEqual("Invalid mobile number: 06564534098", value)