Exemple #1
0
    def test_http_error(self) -> None:
        """Tests the case when we keep getting HTTP errors."""
        mock_overpass_sleep_called = False

        def mock_overpass_sleep() -> None:
            nonlocal mock_overpass_sleep_called
            mock_overpass_sleep_called = True

        with unittest.mock.patch("cron.overpass_sleep", mock_overpass_sleep):
            with unittest.mock.patch('urllib.request.urlopen',
                                     mock_urlopen_raise_error):
                relations = get_relations()
                for relation_name in relations.get_active_names():
                    if relation_name != "gazdagret":
                        relations.get_relation(
                            relation_name).get_config().set_active(False)
                expected = util.get_content(
                    relations.get_workdir(),
                    "street-housenumbers-gazdagret.csv")
                cron.update_osm_housenumbers(relations, update=True)
                self.assertTrue(mock_overpass_sleep_called)
                # Make sure that in case we keep getting errors we give up at some stage and
                # leave the last state unchanged.
                actual = util.get_content(relations.get_workdir(),
                                          "street-housenumbers-gazdagret.csv")
                self.assertEqual(actual, expected)
Exemple #2
0
 def test_http_error(self) -> None:
     """Tests the case when we keep getting HTTP errors."""
     ctx = test_context.make_test_context()
     routes: List[test_context.URLRoute] = [
         test_context.URLRoute(
             url="https://overpass-api.de/api/status",
             data_path="",
             result_path="tests/network/overpass-status-happy.txt"),
         test_context.URLRoute(
             url="https://overpass-api.de/api/interpreter",
             data_path="",
             result_path=""),
     ]
     network = test_context.TestNetwork(routes)
     ctx.set_network(network)
     relations = areas.Relations(ctx)
     for relation_name in relations.get_active_names():
         if relation_name != "gazdagret":
             relations.get_relation(relation_name).get_config().set_active(
                 False)
     expected = util.get_content(relations.get_workdir(),
                                 "street-housenumbers-gazdagret.csv")
     cron.update_osm_housenumbers(ctx, relations, update=True)
     # Make sure that in case we keep getting errors we give up at some stage and
     # leave the last state unchanged.
     actual = util.get_content(relations.get_workdir(),
                               "street-housenumbers-gazdagret.csv")
     self.assertEqual(actual, expected)
Exemple #3
0
 def test_happy(self) -> None:
     """Tests the happy path."""
     ctx = test_context.make_test_context()
     routes: List[test_context.URLRoute] = [
         test_context.URLRoute(
             url="https://overpass-api.de/api/status",
             data_path="",
             result_path="tests/network/overpass-status-happy.txt"),
         test_context.URLRoute(
             url="https://overpass-api.de/api/interpreter",
             data_path="",
             result_path="tests/network/overpass-housenumbers-gazdagret.csv"
         ),
     ]
     network = test_context.TestNetwork(routes)
     ctx.set_network(network)
     relations = areas.Relations(ctx)
     for relation_name in relations.get_active_names():
         if relation_name != "gazdagret":
             relations.get_relation(relation_name).get_config().set_active(
                 False)
     path = os.path.join(relations.get_workdir(),
                         "street-housenumbers-gazdagret.csv")
     expected = util.get_content(path)
     os.unlink(path)
     cron.update_osm_housenumbers(ctx, relations, update=True)
     mtime = os.path.getmtime(path)
     cron.update_osm_housenumbers(ctx, relations, update=False)
     self.assertEqual(os.path.getmtime(path), mtime)
     actual = util.get_content(path)
     self.assertEqual(actual, expected)
Exemple #4
0
    def test_happy(self) -> None:
        """Tests the happy path."""
        mock_overpass_sleep_called = False

        def mock_overpass_sleep() -> None:
            nonlocal mock_overpass_sleep_called
            mock_overpass_sleep_called = True

        result_from_overpass = "******"
        result_from_overpass += "1\tTörökugrató utca\t1\n"
        result_from_overpass += "1\tTörökugrató utca\t2\n"
        result_from_overpass += "1\tTűzkő utca\t9\n"
        result_from_overpass += "1\tTűzkő utca\t10\n"
        result_from_overpass += "1\tOSM Name 1\t1\n"
        result_from_overpass += "1\tOSM Name 1\t2\n"
        result_from_overpass += "1\tOnly In OSM utca\t1\n"

        def mock_urlopen(_url: str, _data: Optional[bytes] = None) -> BinaryIO:
            buf = io.BytesIO()
            buf.write(result_from_overpass.encode('utf-8'))
            buf.seek(0)
            return buf

        with unittest.mock.patch('util.get_abspath', get_abspath):
            with unittest.mock.patch("cron.overpass_sleep",
                                     mock_overpass_sleep):
                with unittest.mock.patch('urllib.request.urlopen',
                                         mock_urlopen):
                    relations = get_relations()
                    for relation_name in relations.get_active_names():
                        if relation_name != "gazdagret":
                            relations.get_relation(
                                relation_name).get_config().set_active(False)
                    expected = util.get_content(
                        relations.get_workdir(),
                        "street-housenumbers-gazdagret.csv")
                    os.unlink(
                        os.path.join(relations.get_workdir(),
                                     "street-housenumbers-gazdagret.csv"))
                    cron.update_osm_housenumbers(relations)
                    self.assertTrue(mock_overpass_sleep_called)
                    actual = util.get_content(
                        relations.get_workdir(),
                        "street-housenumbers-gazdagret.csv")
                    self.assertEqual(actual, expected)