diff options
Diffstat (limited to 'test/storage/offline_database.test.cpp')
-rw-r--r-- | test/storage/offline_database.test.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
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<std::string>("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()); +} |