aboutsummaryrefslogtreecommitdiff
path: root/zenserver-test/zenserver-test.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2021-06-17 13:54:53 +0200
committerStefan Boberg <[email protected]>2021-06-17 13:54:53 +0200
commitb539d1cef81cec155a5b5e8e0c14b57d13e687fe (patch)
tree64cbf024ef650a16aeb0b6b49ae08c94b65d0b29 /zenserver-test/zenserver-test.cpp
parentAdded debugging hints (diff)
downloadzen-b539d1cef81cec155a5b5e8e0c14b57d13e687fe.tar.xz
zen-b539d1cef81cec155a5b5e8e0c14b57d13e687fe.zip
Validate that structured cache bucket identifiers are alphanumeric
Diffstat (limited to 'zenserver-test/zenserver-test.cpp')
-rw-r--r--zenserver-test/zenserver-test.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/zenserver-test/zenserver-test.cpp b/zenserver-test/zenserver-test.cpp
index 6600af6de..114c3e86b 100644
--- a/zenserver-test/zenserver-test.cpp
+++ b/zenserver-test/zenserver-test.cpp
@@ -1097,6 +1097,8 @@ TEST_CASE("z$.basic")
const int kIterationCount = 100;
const auto BaseUri = "http://localhost:{}/z$"_format(PortNumber);
+ auto HashKey = [](int i) -> zen::IoHash { return zen::IoHash::HashMemory(&i, sizeof i); };
+
{
ZenServerInstance Instance1(TestEnv);
Instance1.SetTestDir(TestDir);
@@ -1114,7 +1116,7 @@ TEST_CASE("z$.basic")
zen::BinaryWriter Writer{MemOut};
Cbo.Save(Writer);
- zen::IoHash Key = zen::IoHash::HashMemory(&i, sizeof i);
+ zen::IoHash Key = HashKey(i);
cpr::Response Result = cpr::Put(cpr::Url{"{}/{}/{}"_format(BaseUri, "test", Key)},
cpr::Body{(const char*)MemOut.Data(), MemOut.Size()},
@@ -1133,6 +1135,25 @@ TEST_CASE("z$.basic")
CHECK(Result.status_code == 200);
}
+
+ // Ensure bad bucket identifiers are rejected
+
+ {
+ zen::CbObjectWriter Cbo;
+ Cbo << "index" << 42;
+
+ zen::MemoryOutStream MemOut;
+ zen::BinaryWriter Writer{MemOut};
+ Cbo.Save(Writer);
+
+ zen::IoHash Key = HashKey(442);
+
+ cpr::Response Result = cpr::Put(cpr::Url{"{}/{}/{}"_format(BaseUri, "te!st", Key)},
+ cpr::Body{(const char*)MemOut.Data(), MemOut.Size()},
+ cpr::Header{{"Content-Type", "application/x-ue-cb"}});
+
+ CHECK(Result.status_code == 400);
+ }
}
// Verify that the data persists between process runs (the previous server has exited at this point)
@@ -1147,7 +1168,7 @@ TEST_CASE("z$.basic")
for (int i = 0; i < kIterationCount; ++i)
{
- zen::IoHash Key = zen::IoHash::HashMemory(&i, sizeof i);
+ zen::IoHash Key = HashKey(i);
cpr::Response Result = cpr::Get(cpr::Url{"{}/{}/{}"_format(BaseUri, "test", Key)});