diff --git a/test/library_server.cpp b/test/library_server.cpp index 98b7f0b75..277d139a2 100644 --- a/test/library_server.cpp +++ b/test/library_server.cpp @@ -18,6 +18,11 @@ protected: const int PORT = 8002; protected: + void resetServer(ZimFileServer::Options options) { + zfs1_.reset(); + zfs1_.reset(new ZimFileServer(PORT, options, "./test/library.xml")); + } + void SetUp() override { zfs1_.reset(new ZimFileServer(PORT, ZimFileServer::DEFAULT_OPTIONS, "./test/library.xml")); } @@ -95,7 +100,7 @@ std::string maskVariableOPDSFeedData(std::string s) " \n" -#define CHARLES_RAY_CATALOG_ENTRY CATALOG_ENTRY( \ +#define _CHARLES_RAY_CATALOG_ENTRY(CONTENT_NAME) CATALOG_ENTRY( \ "charlesray", \ "Charles, Ray", \ "Wikipedia articles about Ray Charles", \ @@ -104,12 +109,14 @@ std::string maskVariableOPDSFeedData(std::string s) "jazz",\ "unittest;wikipedia;_category:jazz;_pictures:no;_videos:no;_details:no;_ftindex:yes",\ "", \ - "zimfile%26other", \ + CONTENT_NAME, \ "zimfile%26other", \ "569344" \ ) -#define RAY_CHARLES_CATALOG_ENTRY CATALOG_ENTRY(\ +#define CHARLES_RAY_CATALOG_ENTRY _CHARLES_RAY_CATALOG_ENTRY("zimfile%26other") + +#define _RAY_CHARLES_CATALOG_ENTRY(CONTENT_NAME) CATALOG_ENTRY(\ "raycharles",\ "Ray Charles",\ "Wikipedia articles about Ray Charles",\ @@ -120,11 +127,13 @@ std::string maskVariableOPDSFeedData(std::string s) "\n ", \ - "zimfile", \ + CONTENT_NAME, \ "zimfile", \ "569344"\ ) +#define RAY_CHARLES_CATALOG_ENTRY _RAY_CHARLES_CATALOG_ENTRY("zimfile") + #define UNCATEGORIZED_RAY_CHARLES_CATALOG_ENTRY CATALOG_ENTRY(\ "raycharles_uncategorized",\ "Ray (uncategorized) Charles",\ @@ -774,51 +783,11 @@ TEST_F(LibraryServerTest, catalog_search_excludes_hidden_tags) #undef EXPECT_ZERO_RESULTS } - -// Same as CHARLES_RAY_CATALOG_ENTRY but with link using the uuid (charlesray). -#define NO_MAPPER_CHARLES_RAY_CATALOG_ENTRY \ - " \n" \ - " urn:uuid:charlesray\n" \ - " Charles, Ray\n" \ - " YYYY-MM-DDThh:mm:ssZ\n" \ - " Wikipedia articles about Ray Charles\n" \ - " fra\n" \ - " wikipedia_fr_ray_charles\n" \ - " \n" \ - " jazz\n" \ - " unittest;wikipedia;_category:jazz;_pictures:no;_videos:no;_details:no;_ftindex:yes\n" \ - " 284\n" \ - " 2\n" \ - " \n" \ - " \n" \ - " Wikipedia\n" \ - " \n" \ - " \n" \ - " Kiwix\n" \ - " \n" \ - " 2020-03-31T00:00:00Z\n" \ - " \n" \ - " \n" - -class NoMapperLibraryServerTest : public ::testing::Test -{ -protected: - std::unique_ptr zfs1_; - - const int PORT = 8002; - -protected: - void SetUp() override { - zfs1_.reset(new ZimFileServer(PORT, ZimFileServer::NO_NAME_MAPPER, "./test/library.xml")); - } - - void TearDown() override { - zfs1_.reset(); - } -}; - -TEST_F(NoMapperLibraryServerTest, returned_catalog_use_uuid_in_link) +#define NO_MAPPER_CHARLES_RAY_CATALOG_ENTRY _CHARLES_RAY_CATALOG_ENTRY("charlesray") +#define NO_MAPPER_RAY_CHARLES_CATALOG_ENTRY _RAY_CHARLES_CATALOG_ENTRY("raycharles") +TEST_F(LibraryServerTest, no_name_mapper_returned_catalog_use_uuid_in_link) { + resetServer(ZimFileServer::NO_NAME_MAPPER); const auto r = zfs1_->GET("/ROOT/catalog/search?tag=_category:jazz"); EXPECT_EQ(r->status, 200); EXPECT_EQ(maskVariableOPDSFeedData(r->body), @@ -836,5 +805,20 @@ TEST_F(NoMapperLibraryServerTest, returned_catalog_use_uuid_in_link) } +TEST_F(LibraryServerTest, no_name_mapper_catalog_v2_individual_entry_access) +{ + resetServer(ZimFileServer::NO_NAME_MAPPER); + const auto r = zfs1_->GET("/ROOT/catalog/v2/entry/raycharles"); + EXPECT_EQ(r->status, 200); + EXPECT_EQ(maskVariableOPDSFeedData(r->body), + "\n" + NO_MAPPER_RAY_CHARLES_CATALOG_ENTRY + ); + + const auto r1 = zfs1_->GET("/ROOT/catalog/v2/entry/non-existent-entry"); + EXPECT_EQ(r1->status, 404); +} + + #undef EXPECT_SEARCH_RESULTS diff --git a/test/server.cpp b/test/server.cpp index 3da31e5b6..d03f9e6bb 100644 --- a/test/server.cpp +++ b/test/server.cpp @@ -134,8 +134,8 @@ TEST_F(ServerTest, 200) TEST_F(ServerTest, 200_IdNameMapper) { resetServer(ZimFileServer::NO_NAME_MAPPER); - EXPECT_EQ(200, zfs1_->GET("/ROOT/content/6f1d19d0-633f-087b-fb55-7ac324ff9baf/A/index")->status) << "url: /ROOT/content/6f1d19d0-633f-087b-fb55-7ac324ff9baf/A/index"; - EXPECT_EQ(404, zfs1_->GET("/ROOT/content/zimfile/A/index")->status) << "url: /ROOT/content/zimfile/A/index"; + EXPECT_EQ(200, zfs1_->GET("/ROOT/content/6f1d19d0-633f-087b-fb55-7ac324ff9baf/A/index")->status); + EXPECT_EQ(404, zfs1_->GET("/ROOT/content/zimfile/A/index")->status); } TEST_F(ServerTest, CompressibleContentIsCompressedIfAcceptable)