summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZach Lankton <zachlankton@gmail.com>2022-09-16 00:05:46 +0000
committerNick Vatamaniuc <nickva@users.noreply.github.com>2022-09-15 22:45:10 -0400
commitd7ee5049f529382620b900fdf4d49d985c6c4018 (patch)
tree25d7fae56b0beb1bce9ef3d46fe604099d56464f
parentcb176a69ab6f9a6631826db7df3a133ab1fee3b4 (diff)
downloadcouchdb-d7ee5049f529382620b900fdf4d49d985c6c4018.tar.gz
add test coverage to prevent junk in eventsource
eventsource events should only ever contain data, id, event or empty lines adding a test to ensure that new code/changes will not break this rule
-rw-r--r--test/elixir/test/changes_async_test.exs24
-rw-r--r--test/elixir/test/config/suite.elixir1
2 files changed, 25 insertions, 0 deletions
diff --git a/test/elixir/test/changes_async_test.exs b/test/elixir/test/changes_async_test.exs
index 6c833d433..5f174de1d 100644
--- a/test/elixir/test/changes_async_test.exs
+++ b/test/elixir/test/changes_async_test.exs
@@ -104,6 +104,30 @@ defmodule ChangesAsyncTest do
end
@tag :with_db
+ test "eventsource no junk in response", context do
+ db_name = context[:db_name]
+
+ check_empty_db(db_name)
+ create_doc(db_name, sample_doc_foo())
+ create_doc_bar(db_name, "bar")
+
+ resp = Rawresp.get("/#{db_name}/_changes?feed=eventsource&timeout=500")
+
+ lines = String.split(resp.body, "\n")
+
+ all_lines = lines
+ |> Enum.map(fn p -> Enum.at(String.split(p, ":"), 0) end)
+
+ allowed = ["", "data", "id", "event"]
+
+ allowed_lines = all_lines
+ |> Enum.filter(fn p -> Enum.member?(allowed, p) end)
+
+ assert length(all_lines) == length(allowed_lines)
+
+ end
+
+ @tag :with_db
test "eventsource heartbeat", context do
db_name = context[:db_name]
diff --git a/test/elixir/test/config/suite.elixir b/test/elixir/test/config/suite.elixir
index 265e600db..91763989b 100644
--- a/test/elixir/test/config/suite.elixir
+++ b/test/elixir/test/config/suite.elixir
@@ -101,6 +101,7 @@
"continuous filtered changes",
"continuous filtered changes with doc ids",
"eventsource changes",
+ "eventsource no junk in response",
"eventsource heartbeat",
"live changes",
"longpoll changes",