From 2365cab58cc8f818b60db81f7cda815ae621c817 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Fri, 7 Feb 2020 12:06:39 +0200 Subject: Add OfflineDatabase.PutResourceReadOnlyMode unit test --- test/storage/offline_database.test.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/test/storage/offline_database.test.cpp b/test/storage/offline_database.test.cpp index ef7ad257d7..a0b780a4ea 100644 --- a/test/storage/offline_database.test.cpp +++ b/test/storage/offline_database.test.cpp @@ -1875,3 +1875,30 @@ TEST(OfflineDatabase, ResetDatabase) { EXPECT_EQ(1u, log.count({ EventSeverity::Warning, Event::Database, -1, "Removing existing incompatible offline database" })); EXPECT_EQ(0u, log.uncheckedCount()); } + +TEST(OfflineDatabase, PutResourceReadOnlyMode) { + FixtureLog log; + OfflineDatabase db(":memory:"); + + Resource resource{Resource::Style, "http://example.com/"}; + Response response; + response.data = std::make_shared("success"); + + // In read-only mode put() is a no-op + db.reopenDatabaseReadOnly(true /*readOnly*/); + auto failedPutResult = db.put(resource, response); + EXPECT_FALSE(failedPutResult.first); + EXPECT_EQ(0u, failedPutResult.second); + + // put() works, if read-only mode is disabled + db.reopenDatabaseReadOnly(false /*readOnly*/); + auto succeededPutResult = db.put(resource, response); + EXPECT_TRUE(succeededPutResult.first); + EXPECT_EQ(7u, succeededPutResult.second); + + auto getResult = db.get(resource); + EXPECT_EQ(nullptr, getResult->error); + EXPECT_EQ("success", *getResult->data); + + EXPECT_EQ(0u, log.uncheckedCount()); +} -- cgit v1.2.1