diff options
author | Bessenyei Balázs Donát <bessbd@apache.org> | 2020-10-07 19:36:49 +0200 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2020-10-09 20:56:38 +0100 |
commit | bf82a3f3d9e9dda1fc15ad49bd3be98c96cd755c (patch) | |
tree | 30d1adf4a56ef752c777a6ef76c0b6412d3c7f31 | |
parent | 956402383a4d0fc9305b2bc158cedd3e7fedeeb2 (diff) | |
download | couchdb-bf82a3f3d9e9dda1fc15ad49bd3be98c96cd755c.tar.gz |
Fix boolean POST to view-like endpoints
-rw-r--r-- | src/couch_mrview/src/couch_mrview_http.erl | 8 | ||||
-rw-r--r-- | test/elixir/test/all_docs_test.exs | 18 | ||||
-rw-r--r-- | test/elixir/test/view_test.exs | 12 |
3 files changed, 34 insertions, 4 deletions
diff --git a/src/couch_mrview/src/couch_mrview_http.erl b/src/couch_mrview/src/couch_mrview_http.erl index 3cf8833d7..ff2b82de5 100644 --- a/src/couch_mrview/src/couch_mrview_http.erl +++ b/src/couch_mrview/src/couch_mrview_http.erl @@ -529,15 +529,15 @@ parse_param(Key, Val, Args, IsDecoded) -> Args#mrargs{stable=true, update=lazy}; "stale" -> throw({query_parse_error, <<"Invalid value for `stale`.">>}); - "stable" when Val == "true" orelse Val == <<"true">> -> + "stable" when Val == "true" orelse Val == <<"true">> orelse Val == true -> Args#mrargs{stable=true}; - "stable" when Val == "false" orelse Val == <<"false">> -> + "stable" when Val == "false" orelse Val == <<"false">> orelse Val == false -> Args#mrargs{stable=false}; "stable" -> throw({query_parse_error, <<"Invalid value for `stable`.">>}); - "update" when Val == "true" orelse Val == <<"true">> -> + "update" when Val == "true" orelse Val == <<"true">> orelse Val == true -> Args#mrargs{update=true}; - "update" when Val == "false" orelse Val == <<"false">> -> + "update" when Val == "false" orelse Val == <<"false">> orelse Val == false -> Args#mrargs{update=false}; "update" when Val == "lazy" orelse Val == <<"lazy">> -> Args#mrargs{update=lazy}; diff --git a/test/elixir/test/all_docs_test.exs b/test/elixir/test/all_docs_test.exs index b9fb6f241..a95c9414b 100644 --- a/test/elixir/test/all_docs_test.exs +++ b/test/elixir/test/all_docs_test.exs @@ -297,4 +297,22 @@ defmodule AllDocsTest do assert resp.status_code == 200 assert length(Map.get(resp, :body)["rows"]) == 1 end + + @tag :with_db + test "POST boolean", context do + db_name = context[:db_name] + + resp = Couch.post("/#{db_name}/_bulk_docs", body: %{docs: create_docs(0..3)}) + assert resp.status_code in [201, 202] + + resp = Couch.post( + "/#{db_name}/_all_docs", + body: %{ + :stable => true, + :update => true + } + ) + + assert resp.status_code == 200 + end end diff --git a/test/elixir/test/view_test.exs b/test/elixir/test/view_test.exs index f768cef16..bfe28b573 100644 --- a/test/elixir/test/view_test.exs +++ b/test/elixir/test/view_test.exs @@ -141,4 +141,16 @@ defmodule ViewTest do assert resp.status_code == 200 assert length(Map.get(resp, :body)["rows"]) == 1 end + + test "POST with boolean parameter", context do + resp = Couch.post( + "/#{context[:db_name]}/_design/map/_view/some", + body: %{ + :stable => true, + :update => true + } + ) + + assert resp.status_code == 200 + end end |