diff --git a/server/app/app.py b/server/app/app.py index 5f924703..1396d676 100644 --- a/server/app/app.py +++ b/server/app/app.py @@ -420,11 +420,17 @@ class Server: self.app.register_blueprint(dataroot_resources.blueprint) self.app.add_url_rule( - f"/{url_dataroot}//", + f"/{url_dataroot}/", f"dataset_index_{url_dataroot}", lambda dataset, url_dataroot=url_dataroot: dataset_index(url_dataroot, dataset), methods=["GET"], ) + self.app.add_url_rule( + f"/{url_dataroot}//", + f"dataset_index_{url_dataroot}/", + lambda dataset, url_dataroot=url_dataroot: dataset_index(url_dataroot, dataset), + methods=["GET"], + ) self.app.add_url_rule( f"/{url_dataroot}//static/", f"static_assets_{url_dataroot}", diff --git a/server/test/unit/auth/test_auth.py b/server/test/unit/auth/test_auth.py index 2caba6b1..c36b8c62 100644 --- a/server/test/unit/auth/test_auth.py +++ b/server/test/unit/auth/test_auth.py @@ -79,7 +79,7 @@ class AuthTest(unittest.TestCase): r = session.get(f"{server}/{login_uri}") # check that the login redirect worked self.assertEqual(r.history[0].status_code, 302) - self.assertEqual(r.url, f"{server}/auth/pbmc3k.cxg/") + self.assertEqual(r.url, f"{server}/auth/pbmc3k.cxg") config = session.get(f"{server}/auth/pbmc3k.cxg/api/v0.2/config").json() userinfo = session.get(f"{server}/auth/pbmc3k.cxg/api/v0.2/userinfo").json() @@ -91,7 +91,7 @@ class AuthTest(unittest.TestCase): r = session.get(f"{server}/{logout_uri}") # check that the logout redirect worked self.assertEqual(r.history[0].status_code, 302) - self.assertEqual(r.url, f"{server}/auth/pbmc3k.cxg/") + self.assertEqual(r.url, f"{server}/auth/pbmc3k.cxg") config = session.get(f"{server}/auth/pbmc3k.cxg/api/v0.2/config").json() userinfo = session.get(f"{server}/auth/pbmc3k.cxg/api/v0.2/userinfo").json() self.assertFalse(userinfo["userinfo"]["is_authenticated"]) diff --git a/server/test/unit/common/config/test_server_config.py b/server/test/unit/common/config/test_server_config.py index e7598b7f..8ad76b58 100644 --- a/server/test/unit/common/config/test_server_config.py +++ b/server/test/unit/common/config/test_server_config.py @@ -278,6 +278,14 @@ class TestServerConfig(ConfigTests): response = session.get(f"{server}/health") assert response.json()["status"] == "pass" + # access a dataset (no slash) + response = session.get(f"{server}/set2/pbmc3k.cxg") + self.assertEqual(response.status_code, 200) + + # access a dataset (with slash) + response = session.get(f"{server}/set2/pbmc3k.cxg/") + self.assertEqual(response.status_code, 200) + @patch("server.common.config.server_config.diffexp_tiledb.set_config") def test_handle_diffexp(self, mock_tiledb_config): custom_config_file = self.custom_app_config(