diff options
author | Zach Lankton <zachlankton@gmail.com> | 2022-09-16 00:05:46 +0000 |
---|---|---|
committer | Nick Vatamaniuc <nickva@users.noreply.github.com> | 2022-09-15 22:45:10 -0400 |
commit | d7ee5049f529382620b900fdf4d49d985c6c4018 (patch) | |
tree | 25d7fae56b0beb1bce9ef3d46fe604099d56464f | |
parent | cb176a69ab6f9a6631826db7df3a133ab1fee3b4 (diff) | |
download | couchdb-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.exs | 24 | ||||
-rw-r--r-- | test/elixir/test/config/suite.elixir | 1 |
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", |