コード例 #1
0
 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"))
コード例 #2
0
 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"))
コード例 #3
0
 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)
コード例 #4
0
 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)
コード例 #5
0
 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"))
コード例 #6
0
 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)
コード例 #7
0
 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)
コード例 #8
0
 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)
コード例 #9
0
 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)
コード例 #10
0
 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)
コード例 #11
0
 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)
コード例 #12
0
 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)
コード例 #13
0
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)