diff --git a/test/server.cpp b/test/server.cpp index a16c7113e..ff6606f6e 100644 --- a/test/server.cpp +++ b/test/server.cpp @@ -104,7 +104,7 @@ TEST(indexTemplateStringTest, emptyIndexTemplate) { "./test/corner_cases.zim" }; - ZimFileServer zfs(PORT, /*withTaskbar=*/true, ZIMFILES, ""); + ZimFileServer zfs(PORT, ZimFileServer::DEFAULT_OPTIONS, ZIMFILES, ""); EXPECT_EQ(200, zfs.GET("/ROOT/")->status); } @@ -115,7 +115,7 @@ TEST(indexTemplateStringTest, indexTemplateCheck) { "./test/corner_cases.zim" }; - ZimFileServer zfs(PORT, /*withTaskbar=*/true, ZIMFILES, "" + ZimFileServer zfs(PORT, ZimFileServer::DEFAULT_OPTIONS, ZIMFILES, "" "Welcome to kiwix library" "" ""); @@ -1090,7 +1090,7 @@ TEST_F(ServerTest, ETagIsTheSameAcrossHeadAndGet) TEST_F(ServerTest, DifferentServerInstancesProduceDifferentETags) { - ZimFileServer zfs2(SERVER_PORT + 1, /*withTaskbar=*/true, ZIMFILES); + ZimFileServer zfs2(SERVER_PORT + 1, ZimFileServer::DEFAULT_OPTIONS, ZIMFILES); for ( const Resource& res : all200Resources() ) { if ( !res.etag_expected ) continue; const auto h1 = zfs1_->HEAD(res.url); @@ -1481,3 +1481,54 @@ TEST_F(ServerTest, suggestions_in_range) ASSERT_EQ(currCount, 0); } } + +TEST_F(ServerTest, viewerSettings) +{ + const auto JS_CONTENT_TYPE = "application/javascript; charset=utf-8"; + { + resetServer(ZimFileServer::NO_TASKBAR_NO_LINK_BLOCKING); + const auto r = zfs1_->GET("/ROOT/viewer_settings.js"); + ASSERT_EQ(r->status, 200); + ASSERT_EQ(getHeaderValue(r->headers, "Content-Type"), JS_CONTENT_TYPE); + ASSERT_EQ(r->body, +R"(const viewerSettings = { + toolbarEnabled: false, + linkBlockingEnabled: false, + libraryButtonEnabled: false +} +)"); + } + + { + resetServer(ZimFileServer::BLOCK_EXTERNAL_LINKS); + ASSERT_EQ(zfs1_->GET("/ROOT/viewer_settings.js")->body, +R"(const viewerSettings = { + toolbarEnabled: false, + linkBlockingEnabled: true, + libraryButtonEnabled: false +} +)"); + } + + { + resetServer(ZimFileServer::WITH_TASKBAR); + ASSERT_EQ(zfs1_->GET("/ROOT/viewer_settings.js")->body, +R"(const viewerSettings = { + toolbarEnabled: true, + linkBlockingEnabled: false, + libraryButtonEnabled: false +} +)"); + } + + { + resetServer(ZimFileServer::WITH_TASKBAR_AND_LIBRARY_BUTTON); + ASSERT_EQ(zfs1_->GET("/ROOT/viewer_settings.js")->body, +R"(const viewerSettings = { + toolbarEnabled: true, + linkBlockingEnabled: false, + libraryButtonEnabled: true +} +)"); + } +} diff --git a/test/server_testing_tools.h b/test/server_testing_tools.h index c1eae3b30..ab0b4a511 100644 --- a/test/server_testing_tools.h +++ b/test/server_testing_tools.h @@ -54,10 +54,23 @@ public: // types typedef std::shared_ptr Response; typedef std::vector FilePathCollection; + enum Options + { + NO_TASKBAR_NO_LINK_BLOCKING = 0, + + WITH_TASKBAR = 1 << 1, + WITH_LIBRARY_BUTTON = 1 << 2, + BLOCK_EXTERNAL_LINKS = 1 << 3, + + WITH_TASKBAR_AND_LIBRARY_BUTTON = WITH_TASKBAR | WITH_LIBRARY_BUTTON, + + DEFAULT_OPTIONS = WITH_TASKBAR | WITH_LIBRARY_BUTTON + }; + public: // functions ZimFileServer(int serverPort, std::string libraryFilePath); ZimFileServer(int serverPort, - bool withTaskbar, + Options options, const FilePathCollection& zimpaths, std::string indexTemplateString = ""); ~ZimFileServer(); @@ -81,7 +94,7 @@ private: // data std::unique_ptr nameMapper; std::unique_ptr server; std::unique_ptr client; - const bool withTaskbar = true; + const Options options = DEFAULT_OPTIONS; }; ZimFileServer::ZimFileServer(int serverPort, std::string libraryFilePath) @@ -94,11 +107,11 @@ ZimFileServer::ZimFileServer(int serverPort, std::string libraryFilePath) } ZimFileServer::ZimFileServer(int serverPort, - bool _withTaskbar, + Options _options, const FilePathCollection& zimpaths, std::string indexTemplateString) : manager(&this->library) -, withTaskbar(_withTaskbar) +, options(_options) { for ( const auto& zimpath : zimpaths ) { if (!manager.addBookFromPath(zimpath, zimpath, "", false)) @@ -117,7 +130,8 @@ void ZimFileServer::run(int serverPort, std::string indexTemplateString) server->setPort(serverPort); server->setNbThreads(2); server->setVerbose(false); - server->setTaskbar(withTaskbar, withTaskbar); + server->setTaskbar(options & WITH_TASKBAR, options & WITH_LIBRARY_BUTTON); + server->setBlockExternalLinks(options & BLOCK_EXTERNAL_LINKS); server->setMultiZimSearchLimit(3); if (!indexTemplateString.empty()) { server->setIndexTemplateString(indexTemplateString); @@ -148,7 +162,12 @@ protected: protected: void SetUp() override { - zfs1_.reset(new ZimFileServer(SERVER_PORT, /*withTaskbar=*/true, ZIMFILES)); + resetServer(ZimFileServer::DEFAULT_OPTIONS); + } + + void resetServer(ZimFileServer::Options options) { + zfs1_.reset(); + zfs1_.reset(new ZimFileServer(SERVER_PORT, options, ZIMFILES)); } void TearDown() override {