summaryrefslogtreecommitdiff
path: root/test/elixir/test/jsonp_test.exs
diff options
context:
space:
mode:
Diffstat (limited to 'test/elixir/test/jsonp_test.exs')
-rw-r--r--test/elixir/test/jsonp_test.exs117
1 files changed, 0 insertions, 117 deletions
diff --git a/test/elixir/test/jsonp_test.exs b/test/elixir/test/jsonp_test.exs
deleted file mode 100644
index 2e1934a22..000000000
--- a/test/elixir/test/jsonp_test.exs
+++ /dev/null
@@ -1,117 +0,0 @@
-defmodule JsonpTest do
- use CouchTestCase
-
- @moduletag :jsonp
- @moduletag kind: :single_node
-
- @tag :with_db
- test "jsonp not configured callbacks", context do
- db_name = context[:db_name]
- {:ok, _} = create_doc(db_name, %{_id: "0", a: 0, b: 0})
-
- resp = Couch.get("/#{db_name}/0?callback=jsonp_no_chunk")
- assert resp.status_code == 200
- assert resp.headers.hdrs["content-type"] == "application/json"
- end
-
- @tag :with_db
- test "jsonp unchunked callbacks", context do
- db_name = context[:db_name]
-
- server_config = [
- %{
- :section => "httpd",
- :key => "allow_jsonp",
- :value => "true"
- }
- ]
-
- {:ok, create_resp} = create_doc(db_name, %{_id: "0", a: 0, b: 0})
-
- run_on_modified_server(server_config, fn ->
- resp = Couch.get("/#{db_name}/0?callback=jsonp_no_chunk")
-
- assert resp.status_code == 200
- assert resp.headers.hdrs["content-type"] == "application/javascript"
-
- {callback_fun, callback_param} = parse_callback(resp.body)
-
- assert callback_fun == "jsonp_no_chunk"
- assert create_resp.body["id"] == callback_param["_id"]
- assert create_resp.body["rev"] == callback_param["_rev"]
-
- resp = Couch.get("/#{db_name}/0?callback=jsonp_no_chunk\"")
- assert resp.status_code == 400
- end)
- end
-
- @tag :with_db
- test "jsonp chunked callbacks", context do
- db_name = context[:db_name]
-
- server_config = [
- %{
- :section => "httpd",
- :key => "allow_jsonp",
- :value => "true"
- }
- ]
-
- design_doc = %{
- _id: "_design/test",
- language: "javascript",
- views: %{
- all_docs: %{map: "function(doc) {if(doc.a) emit(null, doc.a);}"}
- }
- }
-
- {:ok, _} = create_doc(db_name, design_doc)
- {:ok, _} = create_doc(db_name, %{_id: "0", a: 0, b: 0})
- {:ok, _} = create_doc(db_name, %{_id: "1", a: 1, b: 1})
-
- run_on_modified_server(server_config, fn ->
- resp = Couch.get("/#{db_name}/_design/test/_view/all_docs?callback=jsonp_chunk")
- assert resp.status_code == 200
- assert resp.headers.hdrs["content-type"] == "application/javascript"
-
- {callback_fun, callback_param} = parse_callback(resp.body)
-
- assert callback_fun == "jsonp_chunk"
- assert callback_param["total_rows"] == 1
-
- resp = Couch.get("/#{db_name}/_design/test/_view/all_docs?callback=jsonp_chunk'")
- assert resp.status_code == 400
-
- resp = Couch.get("/#{db_name}/_changes?callback=jsonp_chunk")
- assert resp.status_code == 200
- assert resp.headers.hdrs["content-type"] == "application/javascript"
-
- {callback_fun, callback_param} = parse_callback(resp.body)
- assert callback_fun == "jsonp_chunk"
- assert length(callback_param["results"]) == 3
-
- end)
- end
-
- defp parse_callback(msg) do
- captures = Regex.scan(~r/\/\* CouchDB \*\/(\w+)\((.*)\)/s, msg)
-
- callback_fun =
- captures
- |> Enum.map(fn p -> Enum.at(p, 1) end)
- |> Enum.at(0)
-
- param =
- captures
- |> Enum.map(fn p -> Enum.at(p, 2) end)
- |> Enum.filter(fn p -> String.trim(p) != "" end)
- |> Enum.map(fn p ->
- p
- |> IO.iodata_to_binary()
- |> :jiffy.decode([:return_maps])
- end)
- |> Enum.at(0)
-
- {callback_fun, param}
- end
-end