You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2023/02/10 00:37:09 UTC

[couchdb] 01/05: Convert ExUnit tests back to EUnit

This is an automated email from the ASF dual-hosted git repository.

vatamane pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 0a49ffcdac0374633070ccc28d37cd5ac1a2af10
Author: Gabor Pali <ga...@ibm.com>
AuthorDate: Thu Jan 26 22:19:07 2023 +0100

    Convert ExUnit tests back to EUnit
    
    ExUnit tests were not fully adopted and also became abandoned.
    Improve the situation by translating those few ExUnit tests to
    EUnit ones.
---
 src/couch/test/eunit/couch_compress_tests.erl    | 128 +++++++++++++++++++++++
 src/couch/test/eunit/same_site_cookie_tests.erl  |  88 ++++++++++++++++
 src/couch/test/exunit/couch_compress_tests.exs   | 113 --------------------
 src/couch/test/exunit/same_site_cookie_tests.exs |  44 --------
 src/couch/test/exunit/test_helper.exs            |   2 -
 5 files changed, 216 insertions(+), 159 deletions(-)

diff --git a/src/couch/test/eunit/couch_compress_tests.erl b/src/couch/test/eunit/couch_compress_tests.erl
new file mode 100644
index 000000000..3d11be41a
--- /dev/null
+++ b/src/couch/test/eunit/couch_compress_tests.erl
@@ -0,0 +1,128 @@
+% Licensed under the Apache License, Version 2.0 (the "License"); you may not
+% use this file except in compliance with the License. You may obtain a copy of
+% the License at
+%
+%   http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+% License for the specific language governing permissions and limitations under
+% the License.
+
+-module(couch_compress_tests).
+
+-include_lib("couch/include/couch_eunit.hrl").
+
+-define(TERM, {[{a, 1}, {b, 2}, {c, 3}, {d, 4}, {e, 5}]}).
+
+-define(NONE,
+    <<131, 104, 1, 108, 0, 0, 0, 5, 104, 2, 100, 0, 1, 97, 97, 1, 104, 2, 100, 0, 1, 98, 97, 2, 104,
+        2, 100, 0, 1, 99, 97, 3, 104, 2, 100, 0, 1, 100, 97, 4, 104, 2, 100, 0, 1, 101, 97, 5, 106>>
+).
+-define(DEFLATE,
+    <<131, 80, 0, 0, 0, 48, 120, 218, 203, 96, 204, 97, 96, 96, 96, 205, 96, 74, 97, 96, 76, 76,
+        100, 4, 211, 73, 137, 76, 96, 58, 57, 145, 25, 76, 167, 36, 178, 128, 233, 212, 68, 214, 44,
+        0, 212, 169, 9, 51>>
+).
+-define(SNAPPY,
+    <<1, 49, 64, 131, 104, 1, 108, 0, 0, 0, 5, 104, 2, 100, 0, 1, 97, 97, 1, 104, 1, 8, 8, 98, 97,
+        2, 5, 8, 8, 99, 97, 3, 5, 8, 44, 100, 97, 4, 104, 2, 100, 0, 1, 101, 97, 5, 106>>
+).
+-define(SNAPPY_BIGENDIAN,
+    <<1, 49, 60, 131, 104, 1, 108, 0, 0, 0, 5, 104, 2, 100, 0, 1, 97, 97, 1, 5, 8, 8, 98, 97, 2, 5,
+        8, 8, 99, 97, 3, 5, 8, 44, 100, 97, 4, 104, 2, 100, 0, 1, 101, 97, 5, 106>>
+).
+-define(CORRUPT, <<2, 12, 85, 06>>).
+
+-define(DEFLATE_COMPRESSION, {deflate, 9}).
+-define(DEFLATE_COMPRESSION_ZERO, {deflate, 0}).
+
+couch_compress_test_() ->
+    {
+        "couch compress tests",
+        [
+            fun t_compress/0,
+            fun t_decompress/0,
+            fun t_recompress/0,
+            fun t_is_compressed/0,
+            fun t_uncompressed_size/0
+        ]
+    }.
+
+t_compress() ->
+    ?assertEqual(?NONE, couch_compress:compress(?TERM, none)),
+    ?assertNotEqual(?NONE, couch_compress:compress(?TERM, ?DEFLATE_COMPRESSION)),
+    ?assertNotEqual(?NONE, couch_compress:compress(?TERM, snappy)),
+
+    % assert that compressed output is smaller than uncompressed output
+    ?assert(bit_size(couch_compress:compress(?TERM, ?DEFLATE_COMPRESSION)) < bit_size(?NONE)),
+    ?assert(bit_size(couch_compress:compress(?TERM, snappy)) < bit_size(?NONE)).
+
+t_decompress() ->
+    ?assertEqual(?TERM, couch_compress:decompress(?NONE)),
+    ?assertEqual(?TERM, couch_compress:decompress(?DEFLATE)),
+    ?assertEqual(?TERM, couch_compress:decompress(?SNAPPY)),
+    ?assertEqual(?TERM, couch_compress:decompress(?SNAPPY_BIGENDIAN)),
+    ?assertError(invalid_compression, couch_compress:decompress(?CORRUPT)).
+
+t_recompress() ->
+    Result1 = ?NONE,
+
+    % none -> deflate
+    Result2 = couch_compress:compress(Result1, ?DEFLATE_COMPRESSION),
+    ?assert(couch_compress:is_compressed(Result2, ?DEFLATE_COMPRESSION)),
+
+    % deflate -> snappy
+    Result3 = couch_compress:compress(Result2, snappy),
+    ?assert(couch_compress:is_compressed(Result3, snappy)),
+
+    % snappy -> none
+    Result4 = couch_compress:compress(Result3, none),
+    ?assert(couch_compress:is_compressed(Result4, none)),
+
+    % none -> snappy
+    Result5 = couch_compress:compress(Result4, snappy),
+    ?assert(couch_compress:is_compressed(Result5, snappy)),
+
+    % snappy -> deflate
+    Result6 = couch_compress:compress(Result5, ?DEFLATE_COMPRESSION),
+    ?assert(couch_compress:is_compressed(Result6, ?DEFLATE_COMPRESSION)),
+
+    % deflate -> none
+    Result7 = couch_compress:compress(Result6, none),
+    ?assert(couch_compress:is_compressed(Result7, none)).
+
+t_is_compressed() ->
+    ?assert(couch_compress:is_compressed(?NONE, none)),
+    ?assert(couch_compress:is_compressed(?DEFLATE, ?DEFLATE_COMPRESSION)),
+    ?assert(couch_compress:is_compressed(?SNAPPY, snappy)),
+    ?assert(couch_compress:is_compressed(?SNAPPY_BIGENDIAN, snappy)),
+    ?assertNot(couch_compress:is_compressed(?NONE, ?DEFLATE_COMPRESSION_ZERO)),
+    ?assertNot(couch_compress:is_compressed(?NONE, ?DEFLATE_COMPRESSION)),
+    ?assertNot(couch_compress:is_compressed(?NONE, snappy)),
+    ?assertNot(couch_compress:is_compressed(?DEFLATE, none)),
+    ?assertNot(couch_compress:is_compressed(?DEFLATE, snappy)),
+    ?assertNot(couch_compress:is_compressed(?SNAPPY, none)),
+    ?assertNot(couch_compress:is_compressed(?SNAPPY, ?DEFLATE_COMPRESSION)),
+    ?assertNot(couch_compress:is_compressed(?SNAPPY_BIGENDIAN, none)),
+    ?assertNot(couch_compress:is_compressed(?SNAPPY_BIGENDIAN, ?DEFLATE_COMPRESSION)),
+
+    ?assertError(invalid_compression, couch_compress:is_compressed(?CORRUPT, none)),
+    ?assertError(invalid_compression, couch_compress:is_compressed(?CORRUPT, ?DEFLATE_COMPRESSION)),
+    ?assertError(invalid_compression, couch_compress:is_compressed(?CORRUPT, snappy)).
+
+t_uncompressed_size() ->
+    ?assertEqual(49, couch_compress:uncompressed_size(?NONE)),
+    ?assertEqual(49, couch_compress:uncompressed_size(?DEFLATE)),
+    ?assertEqual(49, couch_compress:uncompressed_size(?SNAPPY)),
+    ?assertEqual(49, couch_compress:uncompressed_size(?SNAPPY_BIGENDIAN)),
+
+    ?assertEqual(
+        5,
+        couch_compress:uncompressed_size(
+            couch_compress:compress(x, ?DEFLATE_COMPRESSION)
+        )
+    ),
+
+    ?assertError(invalid_compression, couch_compress:uncompressed_size(?CORRUPT)).
diff --git a/src/couch/test/eunit/same_site_cookie_tests.erl b/src/couch/test/eunit/same_site_cookie_tests.erl
new file mode 100644
index 000000000..9ae56b27e
--- /dev/null
+++ b/src/couch/test/eunit/same_site_cookie_tests.erl
@@ -0,0 +1,88 @@
+% Licensed under the Apache License, Version 2.0 (the "License"); you may not
+% use this file except in compliance with the License. You may obtain a copy of
+% the License at
+%
+%   http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+% License for the specific language governing permissions and limitations under
+% the License.
+
+-module(same_site_cookie_tests).
+
+-include_lib("couch/include/couch_eunit.hrl").
+-include_lib("couch/include/couch_db.hrl").
+
+-define(USER, "jan").
+-define(PASS, "apple").
+
+-define(PERSIST, false).
+
+setup() ->
+    Hashed = couch_passwords:hash_admin_password(?PASS),
+    ok = config:set("admins", ?USER, ?b2l(Hashed), ?PERSIST),
+    Addr = config:get("httpd", "bind_address", "127.0.0.1"),
+    Port = integer_to_list(mochiweb_socket_server:get(couch_httpd, port)),
+    "http://" ++ Addr ++ ":" ++ Port.
+
+teardown(_BaseUri) ->
+    ok = config:delete("couch_httpd_auth", "same_site", ?PERSIST),
+    ok = config:delete("admins", ?USER, ?PERSIST).
+
+get_cookie(BaseUri, User, Password) ->
+    {ok, _, Headers, _} = test_request:post(
+        BaseUri ++ "/_session",
+        [{"Content-Type", "application/json"}],
+        couch_util:json_encode(#{username => ?l2b(User), password => ?l2b(Password)})
+    ),
+    proplists:get_value("Set-Cookie", Headers).
+
+same_site_cookie_test_() ->
+    {
+        "same-site cookie tests",
+        {
+            setup,
+            fun test_util:start_couch/0,
+            fun test_util:stop_couch/1,
+            {
+                foreach,
+                fun setup/0,
+                fun teardown/1,
+                [
+                    ?TDEF_FE(same_site_none),
+                    ?TDEF_FE(same_site_missing),
+                    ?TDEF_FE(same_site_strict),
+                    ?TDEF_FE(same_site_lax),
+                    ?TDEF_FE(same_site_invalid)
+                ]
+            }
+        }
+    }.
+
+same_site_none(BaseUri) ->
+    ok = config:set("couch_httpd_auth", "same_site", "None", ?PERSIST),
+    Cookie = get_cookie(BaseUri, ?USER, ?PASS),
+    ?assertNotEqual(nomatch, string:find(Cookie, "; SameSite=None")).
+
+same_site_missing(BaseUri) ->
+    ok = config:set("couch_httpd_auth", "same_site", "", ?PERSIST),
+    Cookie = get_cookie(BaseUri, ?USER, ?PASS),
+    ?assertNotEqual(undefined, Cookie),
+    ?assertEqual(nomatch, string:find(Cookie, "; SameSite=")).
+
+same_site_strict(BaseUri) ->
+    ok = config:set("couch_httpd_auth", "same_site", "Strict", ?PERSIST),
+    Cookie = get_cookie(BaseUri, ?USER, ?PASS),
+    ?assertNotEqual(nomatch, string:find(Cookie, "; SameSite=Strict")).
+
+same_site_lax(BaseUri) ->
+    ok = config:set("couch_httpd_auth", "same_site", "Lax", ?PERSIST),
+    Cookie = get_cookie(BaseUri, ?USER, ?PASS),
+    ?assertNotEqual(nomatch, string:find(Cookie, "; SameSite=Lax")).
+
+same_site_invalid(BaseUri) ->
+    ok = config:set("couch_httpd_auth", "same_site", "Invalid", ?PERSIST),
+    Cookie = get_cookie(BaseUri, ?USER, ?PASS),
+    ?assertEqual(nomatch, string:find(Cookie, "; SameSite=")).
diff --git a/src/couch/test/exunit/couch_compress_tests.exs b/src/couch/test/exunit/couch_compress_tests.exs
deleted file mode 100644
index 5550e0661..000000000
--- a/src/couch/test/exunit/couch_compress_tests.exs
+++ /dev/null
@@ -1,113 +0,0 @@
-defmodule Couch.Test.CouchCompress do
-  use Couch.Test.ExUnit.Case
-  alias Couch.Test.Utils
-
-  import Utils
-
-  @term {[{:a, 1}, {:b, 2}, {:c, 3}, {:d, 4}, {:e, 5}]}
-
-  @none <<131, 104, 1, 108, 0, 0, 0, 5, 104, 2, 100, 0, 1, 97, 97, 1, 104, 2, 100, 0, 1,
-          98, 97, 2, 104, 2, 100, 0, 1, 99, 97, 3, 104, 2, 100, 0, 1, 100, 97, 4, 104, 2,
-          100, 0, 1, 101, 97, 5, 106>>
-
-  @deflate <<131, 80, 0, 0, 0, 48, 120, 218, 203, 96, 204, 97, 96, 96, 96, 205, 96, 74,
-             97, 96, 76, 76, 100, 4, 211, 73, 137, 76, 96, 58, 57, 145, 25, 76, 167, 36,
-             178, 128, 233, 212, 68, 214, 44, 0, 212, 169, 9, 51>>
-
-  @snappy <<1, 49, 64, 131, 104, 1, 108, 0, 0, 0, 5, 104, 2, 100, 0, 1, 97, 97, 1, 104, 1,
-            8, 8, 98, 97, 2, 5, 8, 8, 99, 97, 3, 5, 8, 44, 100, 97, 4, 104, 2, 100, 0, 1,
-            101, 97, 5, 106>>
-
-  @snappy_bigendian <<1, 49, 60, 131, 104, 1, 108, 0, 0, 0, 5, 104, 2, 100, 0, 1, 97, 97,
-                      1, 5, 8, 8, 98, 97, 2, 5, 8, 8, 99, 97, 3, 5, 8, 44, 100, 97, 4,
-                      104, 2, 100, 0, 1, 101, 97, 5, 106>>
-
-  @corrupt <<2, 12, 85, 06>>
-
-  describe "couch_compress" do
-    test "compress" do
-      assert @none === :couch_compress.compress(@term, :none)
-      assert @none !== :couch_compress.compress(@term, {:deflate, 9})
-      assert @none !== :couch_compress.compress(@term, :snappy)
-
-      # assert that compressed output is smaller than uncompressed input
-      assert bit_size(:couch_compress.compress(@term, {:deflate, 9})) < bit_size(@none)
-      assert bit_size(:couch_compress.compress(@term, :snappy)) < bit_size(@none)
-    end
-
-    test "decompress" do
-      assert @term === :couch_compress.decompress(@none)
-      assert @term === :couch_compress.decompress(@deflate)
-      assert @term === :couch_compress.decompress(@snappy)
-      assert @term === :couch_compress.decompress(@snappy_bigendian)
-      assert catch_error(:couch_compress.decompress(@corrupt)) == :invalid_compression
-    end
-
-    test "recompress" do
-      res = @none
-
-      # none -> deflate
-      res = :couch_compress.compress(res, {:deflate, 9})
-      assert :couch_compress.is_compressed(res, {:deflate, 9})
-
-      # deflate -> snappy
-      res = :couch_compress.compress(res, :snappy)
-      assert :couch_compress.is_compressed(res, :snappy)
-
-      # snappy -> none
-      res = :couch_compress.compress(res, :none)
-      assert :couch_compress.is_compressed(res, :none)
-
-      # none -> snappy
-      res = :couch_compress.compress(res, :snappy)
-      assert :couch_compress.is_compressed(res, :snappy)
-
-      # snappy -> deflate
-      res = :couch_compress.compress(res, {:deflate, 9})
-      assert :couch_compress.is_compressed(res, {:deflate, 9})
-
-      # deflate -> none
-      res = :couch_compress.compress(res, :none)
-      assert :couch_compress.is_compressed(res, :none)
-    end
-
-    test "is_compressed" do
-      assert :couch_compress.is_compressed(@none, :none)
-      assert :couch_compress.is_compressed(@deflate, {:deflate, 9})
-      assert :couch_compress.is_compressed(@snappy, :snappy)
-      assert :couch_compress.is_compressed(@snappy_bigendian, :snappy)
-      refute :couch_compress.is_compressed(@none, {:deflate, 0})
-      refute :couch_compress.is_compressed(@none, {:deflate, 9})
-      refute :couch_compress.is_compressed(@none, :snappy)
-      refute :couch_compress.is_compressed(@deflate, :none)
-      refute :couch_compress.is_compressed(@deflate, :snappy)
-      refute :couch_compress.is_compressed(@snappy, :none)
-      refute :couch_compress.is_compressed(@snappy, {:deflate, 9})
-      refute :couch_compress.is_compressed(@snappy_bigendian, :none)
-      refute :couch_compress.is_compressed(@snappy_bigendian, {:deflate, 9})
-
-      assert catch_error(:couch_compress.is_compressed(@corrupt, :none)) ==
-               :invalid_compression
-
-      assert catch_error(:couch_compress.is_compressed(@corrupt, {:deflate, 9})) ==
-               :invalid_compression
-
-      assert catch_error(:couch_compress.is_compressed(@corrupt, :snappy)) ==
-               :invalid_compression
-    end
-
-    test "uncompressed_size" do
-      assert :couch_compress.uncompressed_size(@none) === 49
-      assert :couch_compress.uncompressed_size(@deflate) === 49
-      assert :couch_compress.uncompressed_size(@snappy) === 49
-      assert :couch_compress.uncompressed_size(@snappy_bigendian) === 49
-
-      assert :couch_compress.uncompressed_size(
-               :couch_compress.compress(:x, {:deflate, 9})
-             ) === 5
-
-      assert catch_error(:couch_compress.uncompressed_size(@corrupt)) ==
-               :invalid_compression
-    end
-  end
-end
diff --git a/src/couch/test/exunit/same_site_cookie_tests.exs b/src/couch/test/exunit/same_site_cookie_tests.exs
deleted file mode 100644
index bad32ada4..000000000
--- a/src/couch/test/exunit/same_site_cookie_tests.exs
+++ /dev/null
@@ -1,44 +0,0 @@
-defmodule SameSiteCookieTests do
-  use CouchTestCase
-
-  @moduletag :authentication
-
-  def get_cookie(user, pass) do
-    resp = Couch.post("/_session", body: %{:username => user, :password => pass})
-
-    true = resp.body["ok"]
-    resp.headers[:"set-cookie"]
-  end
-
-  @tag config: [{"admins", "jan", "apple"}, {"couch_httpd_auth", "same_site", "None"}]
-  test "Set same_site None" do
-    cookie = get_cookie("jan", "apple")
-    assert cookie =~ "; SameSite=None"
-  end
-
-  @tag config: [{"admins", "jan", "apple"}, {"couch_httpd_auth", "same_site", ""}]
-  test "same_site not set" do
-    cookie = get_cookie("jan", "apple")
-    assert cookie
-    refute cookie =~ "; SameSite="
-  end
-
-  @tag config: [{"admins", "jan", "apple"}, {"couch_httpd_auth", "same_site", "Strict"}]
-  test "Set same_site Strict" do
-    cookie = get_cookie("jan", "apple")
-    assert cookie =~ "; SameSite=Strict"
-  end
-
-  @tag config: [{"admins", "jan", "apple"}, {"couch_httpd_auth", "same_site", "Lax"}]
-  test "Set same_site Lax" do
-    cookie = get_cookie("jan", "apple")
-    assert cookie =~ "; SameSite=Lax"
-  end
-
-  @tag config: [{"admins", "jan", "apple"}, {"couch_httpd_auth", "same_site", "Invalid"}]
-  test "Set same_site invalid" do
-    cookie = get_cookie("jan", "apple")
-    assert cookie
-    refute cookie =~ "; SameSite="
-  end
-end
diff --git a/src/couch/test/exunit/test_helper.exs b/src/couch/test/exunit/test_helper.exs
deleted file mode 100644
index 314050085..000000000
--- a/src/couch/test/exunit/test_helper.exs
+++ /dev/null
@@ -1,2 +0,0 @@
-ExUnit.configure(formatters: [JUnitFormatter, ExUnit.CLIFormatter])
-ExUnit.start()