diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8cf3d432a2b739d0dd56dfe493efed6ea9142a73..95a69278871506d47fcacaa393c89233aa70bc15 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -69,3 +69,7 @@ indexation:
   script:
     - pytest -o log_cli=true --log-cli-level=INFO --junitxml=report_indexation_test.xml test/indexation_test.py
 
+dates:
+  extends: .test_base
+  script:
+    - pytest -o log_cli=true --log-cli-level=INFO --junitxml=report_dates_test.xml test/dates_test.py
diff --git a/test/download_test.py b/apps/s2_download.py
similarity index 100%
rename from test/download_test.py
rename to apps/s2_download.py
diff --git a/scenes/dates.py b/scenes/dates.py
index 107ba7efeb26399765a93b06e8d1886ebf433198..4622b82858b6f223859c62de20102afd065c7405 100644
--- a/scenes/dates.py
+++ b/scenes/dates.py
@@ -5,6 +5,19 @@ This module aims to deal with dates
 import datetime
 
 
+def get_timestamp(dt):
+    """Converts datetime.datetime into a timestamp (in seconds)
+
+    Args:
+        dt: datetime.datetime instance
+
+    Returns:
+        timestamp (in seconds)
+
+    """
+    return dt.replace(tzinfo=datetime.timezone.utc).timestamp()
+
+
 def str2datetime(datestr):
     """
     Converts an input date as string into a datetime instance.
diff --git a/scenes/indexation.py b/scenes/indexation.py
index 63578ec306114e274ee8fdc181732c4a765d92f7..0c97285fdb70fc6f0b9c77b0716912a3363cf1e7 100644
--- a/scenes/indexation.py
+++ b/scenes/indexation.py
@@ -3,52 +3,23 @@ This module contains stuff for the spatio-temporal indexation of scenes.
 """
 import datetime
 import rtree
+from scenes.dates import get_timestamp, any2datetime
 
 
-def get_timestamp(dt):
-    """Converts datetime.datetime into a timestamp (in seconds)
-
-    Args:
-        dt: datetime.datetime instance
-
-    Returns:
-        timestamp (in seconds)
-
-    """
-    return dt.replace(tzinfo=datetime.timezone.utc).timestamp()
-
-
-def new_bbox(bbox_wgs84, dt):
-    """Return a bounding box in the domain (lat, lon, time)
-
-    Args:
-        bbox_wgs84: Bounding box (in WGS84)
-        dt: date datetime.datetime
-
-    Returns:
-        item for rtree
-
-    """
-    dt_min = dt - datetime.timedelta(days=1)
-    dt_max = dt + datetime.timedelta(days=1)
-
-    return bbox(bbox_wgs84=bbox_wgs84, dt_min=dt_min, dt_max=dt_max)
-
-
-def bbox(bbox_wgs84, dt_min, dt_max):
+def _bbox(bbox_wgs84, date_min, date_max):
     """Return a bounding box in the domain (lat, lon, time)
 
     Args:
         bbox_wgs84: The bounding box in WGS84 (BoundingBox instance)
-        dt_min: date min (datetime.datetime)
-        dt_max: date max (datetime.datetime)
+        date_min: date min (datetime.datetime or str)
+        date_max: date max (datetime.datetime or str)
 
     Returns:
         item for rtree
 
     """
-    return (bbox_wgs84.xmin, bbox_wgs84.ymin, get_timestamp(dt_min),
-            bbox_wgs84.xmax, bbox_wgs84.ymax, get_timestamp(dt_max))
+    return (bbox_wgs84.xmin, bbox_wgs84.ymin, get_timestamp(any2datetime(date_min)),
+            bbox_wgs84.xmax, bbox_wgs84.ymax, get_timestamp(any2datetime(date_max)))
 
 
 class Index:
@@ -66,38 +37,42 @@ class Index:
         properties.dimension = 3
         self.index = rtree.index.Index(properties=properties)
         for scene_idx, scene in enumerate(scenes_list):
-            self.index.insert(scene_idx, new_bbox(bbox_wgs84=scene.bbox_wgs84, dt=scene.acquisition_date))
+            dt = scene.acquisition_date
+            dt_min = dt - datetime.timedelta(days=1)
+            dt_max = dt + datetime.timedelta(days=1)
+            new_bbox = _bbox(bbox_wgs84=scene.bbox_wgs84, date_min=dt_min, date_max=dt_max)
+            self.index.insert(scene_idx, new_bbox)
 
-    def find_indices(self, bbox_wgs84, dt_min=None, dt_max=None):
+    def find_indices(self, bbox_wgs84, date_min=None, date_max=None):
         """Search the intersecting elements, and return their indices
 
         Args:
             bbox_wgs84: The bounding box in WGS84 (BoundingBox instance)
-            dt_min: date min (datetime.datetime) (Default value = None)
-            dt_max: date max (datetime.datetime) (Default value = None)
+            date_min: date min (datetime.datetime or str) (Default value = None)
+            date_max: date max (datetime.datetime or str) (Default value = None)
 
         Returns:
             list of indices
 
         """
-        if not dt_min:
-            dt_min = datetime.datetime.strptime("2000-01-01", "%Y-%m-%d")
-        if not dt_max:
-            dt_max = datetime.datetime.strptime("3000-01-01", "%Y-%m-%d")
-        bbox_search = bbox(bbox_wgs84=bbox_wgs84, dt_min=dt_min, dt_max=dt_max)
+        if not date_min:
+            date_min = datetime.datetime.strptime("2000-01-01", "%Y-%m-%d")
+        if not date_max:
+            date_max = datetime.datetime.strptime("3000-01-01", "%Y-%m-%d")
+        bbox_search = _bbox(bbox_wgs84=bbox_wgs84, date_min=date_min, date_max=date_max)
         return self.index.intersection(bbox_search)
 
-    def find(self, bbox_wgs84, dt_min=None, dt_max=None):
+    def find(self, bbox_wgs84, date_min=None, date_max=None):
         """Search the intersecting elements, and return them
 
         Args:
             bbox_wgs84: The bounding box in WGS84 (BoundingBox instance)
-            dt_min: date min (datetime.datetime) (Default value = None)
-            dt_max: date max (datetime.datetime) (Default value = None)
+            date_min: date min (datetime.datetime or str) (Default value = None)
+            date_max: date max (datetime.datetime or str) (Default value = None)
 
         Returns:
             list of indices
 
         """
-        indices = self.find_indices(bbox_wgs84=bbox_wgs84, dt_min=dt_min, dt_max=dt_max)
+        indices = self.find_indices(bbox_wgs84=bbox_wgs84, date_min=date_min, date_max=date_max)
         return [self.scenes_list[i] for i in indices]
diff --git a/test/dates_test.py b/test/dates_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..f3b1a86d830936dd542315d9017b08c76be80e1b
--- /dev/null
+++ b/test/dates_test.py
@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+from scenes_test_base import ScenesTestBase
+import datetime
+from scenes import Index, BoundingBox, dates
+
+class DatesTest(ScenesTestBase):
+
+
+    def test_input_dates_formats(self):
+        datestr1 = "04/10/1986"
+        datestr2 = "04-10-1986"
+        datestr3 = "1986-10-04"
+        dt = datetime.datetime(year=1986, month=10, day=4)
+
+        assert dates.any2datetime(datestr1) == dt
+        assert dates.any2datetime(datestr2) == dt
+        assert dates.any2datetime(datestr3) == dt
+
+        # Index test
+        idx = Index([])
+        dummy_bbox = BoundingBox(0, 0, 0, 0)
+        _ = idx.find(dummy_bbox, date_min=datestr1)
+        _ = idx.find(dummy_bbox, date_min=datestr2)
+        _ = idx.find(dummy_bbox, date_min=datestr3)
+
+
+if __name__ == '__main__':
+    unittest.main()