diff options
| author | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-06-27 13:43:25 +0300 | 
|---|---|---|
| committer | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-09-24 09:12:37 +0300 | 
| commit | 9b6d89ff8c798079f4db18eb2b5c66a7426ecbc5 (patch) | |
| tree | 77c5c4c4aeb5e024104b5288ddf98afcfc0666af /test/web/pleroma_api/controllers | |
| parent | e02101e15c425416975f756aca7f3b058006668d (diff) | |
| download | pleroma-9b6d89ff8c798079f4db18eb2b5c66a7426ecbc5.tar.gz pleroma-9b6d89ff8c798079f4db18eb2b5c66a7426ecbc5.zip  | |
support for special chars in pack name
Diffstat (limited to 'test/web/pleroma_api/controllers')
| -rw-r--r-- | test/web/pleroma_api/controllers/emoji_pack_controller_test.exs | 104 | 
1 files changed, 67 insertions, 37 deletions
diff --git a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs index a34df2c18..068755936 100644 --- a/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs +++ b/test/web/pleroma_api/controllers/emoji_pack_controller_test.exs @@ -37,11 +37,11 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do    test "GET /api/pleroma/emoji/packs", %{conn: conn} do      resp = conn |> get("/api/pleroma/emoji/packs") |> json_response_and_validate_schema(200) -    assert resp["count"] == 3 +    assert resp["count"] == 4      assert resp["packs"]             |> Map.keys() -           |> length() == 3 +           |> length() == 4      shared = resp["packs"]["test_pack"]      assert shared["files"] == %{"blank" => "blank.png", "blank2" => "blank2.png"} @@ -58,7 +58,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do        |> get("/api/pleroma/emoji/packs?page_size=1")        |> json_response_and_validate_schema(200) -    assert resp["count"] == 3 +    assert resp["count"] == 4      packs = Map.keys(resp["packs"]) @@ -71,7 +71,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do        |> get("/api/pleroma/emoji/packs?page_size=1&page=2")        |> json_response_and_validate_schema(200) -    assert resp["count"] == 3 +    assert resp["count"] == 4      packs = Map.keys(resp["packs"])      assert length(packs) == 1      [pack2] = packs @@ -81,11 +81,21 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do        |> get("/api/pleroma/emoji/packs?page_size=1&page=3")        |> json_response_and_validate_schema(200) -    assert resp["count"] == 3 +    assert resp["count"] == 4      packs = Map.keys(resp["packs"])      assert length(packs) == 1      [pack3] = packs -    assert [pack1, pack2, pack3] |> Enum.uniq() |> length() == 3 + +    resp = +      conn +      |> get("/api/pleroma/emoji/packs?page_size=1&page=4") +      |> json_response_and_validate_schema(200) + +    assert resp["count"] == 4 +    packs = Map.keys(resp["packs"]) +    assert length(packs) == 1 +    [pack4] = packs +    assert [pack1, pack2, pack3, pack4] |> Enum.uniq() |> length() == 4    end    describe "GET /api/pleroma/emoji/packs/remote" do @@ -128,11 +138,11 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do      end    end -  describe "GET /api/pleroma/emoji/packs/:name/archive" do +  describe "GET /api/pleroma/emoji/packs/archive?name=:name" do      test "download shared pack", %{conn: conn} do        resp =          conn -        |> get("/api/pleroma/emoji/packs/test_pack/archive") +        |> get("/api/pleroma/emoji/packs/archive?name=test_pack")          |> response(200)        {:ok, arch} = :zip.unzip(resp, [:memory]) @@ -143,7 +153,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do      test "non existing pack", %{conn: conn} do        assert conn -             |> get("/api/pleroma/emoji/packs/test_pack_for_import/archive") +             |> get("/api/pleroma/emoji/packs/archive?name=test_pack_for_import")               |> json_response_and_validate_schema(:not_found) == %{                 "error" => "Pack test_pack_for_import does not exist"               } @@ -151,7 +161,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do      test "non downloadable pack", %{conn: conn} do        assert conn -             |> get("/api/pleroma/emoji/packs/test_pack_nonshared/archive") +             |> get("/api/pleroma/emoji/packs/archive?name=test_pack_nonshared")               |> json_response_and_validate_schema(:forbidden) == %{                 "error" =>                   "Pack test_pack_nonshared cannot be downloaded from this instance, either pack sharing was disabled for this pack or some files are missing" @@ -173,28 +183,28 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do          %{            method: :get, -          url: "https://example.com/api/pleroma/emoji/packs/test_pack" +          url: "https://example.com/api/pleroma/emoji/packs/show?name=test_pack"          } ->            conn -          |> get("/api/pleroma/emoji/packs/test_pack") +          |> get("/api/pleroma/emoji/packs/show?name=test_pack")            |> json_response_and_validate_schema(200)            |> json()          %{            method: :get, -          url: "https://example.com/api/pleroma/emoji/packs/test_pack/archive" +          url: "https://example.com/api/pleroma/emoji/packs/archive?name=test_pack"          } ->            conn -          |> get("/api/pleroma/emoji/packs/test_pack/archive") +          |> get("/api/pleroma/emoji/packs/archive?name=test_pack")            |> response(200)            |> text()          %{            method: :get, -          url: "https://example.com/api/pleroma/emoji/packs/test_pack_nonshared" +          url: "https://example.com/api/pleroma/emoji/packs/show?name=test_pack_nonshared"          } ->            conn -          |> get("/api/pleroma/emoji/packs/test_pack_nonshared") +          |> get("/api/pleroma/emoji/packs/show?name=test_pack_nonshared")            |> json_response_and_validate_schema(200)            |> json() @@ -218,7 +228,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do        assert File.exists?("#{@emoji_path}/test_pack2/blank.png")        assert admin_conn -             |> delete("/api/pleroma/emoji/packs/test_pack2") +             |> delete("/api/pleroma/emoji/packs/delete?name=test_pack2")               |> json_response_and_validate_schema(200) == "ok"        refute File.exists?("#{@emoji_path}/test_pack2") @@ -239,7 +249,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do        assert File.exists?("#{@emoji_path}/test_pack_nonshared2/blank.png")        assert admin_conn -             |> delete("/api/pleroma/emoji/packs/test_pack_nonshared2") +             |> delete("/api/pleroma/emoji/packs/delete?name=test_pack_nonshared2")               |> json_response_and_validate_schema(200) == "ok"        refute File.exists?("#{@emoji_path}/test_pack_nonshared2") @@ -279,14 +289,14 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do          %{            method: :get, -          url: "https://example.com/api/pleroma/emoji/packs/pack_bad_sha" +          url: "https://example.com/api/pleroma/emoji/packs/show?name=pack_bad_sha"          } ->            {:ok, pack} = Pleroma.Emoji.Pack.load_pack("pack_bad_sha")            %Tesla.Env{status: 200, body: Jason.encode!(pack)}          %{            method: :get, -          url: "https://example.com/api/pleroma/emoji/packs/pack_bad_sha/archive" +          url: "https://example.com/api/pleroma/emoji/packs/archive?name=pack_bad_sha"          } ->            %Tesla.Env{              status: 200, @@ -316,7 +326,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do          %{            method: :get, -          url: "https://example.com/api/pleroma/emoji/packs/test_pack" +          url: "https://example.com/api/pleroma/emoji/packs/show?name=test_pack"          } ->            {:ok, pack} = Pleroma.Emoji.Pack.load_pack("test_pack")            %Tesla.Env{status: 200, body: Jason.encode!(pack)} @@ -336,7 +346,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do      end    end -  describe "PATCH /api/pleroma/emoji/packs/:name" do +  describe "PATCH /api/pleroma/emoji/packs/update?name=:name" do      setup do        pack_file = "#{@emoji_path}/test_pack/pack.json"        original_content = File.read!(pack_file) @@ -358,7 +368,9 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do      test "for a pack without a fallback source", ctx do        assert ctx[:admin_conn]               |> put_req_header("content-type", "multipart/form-data") -             |> patch("/api/pleroma/emoji/packs/test_pack", %{"metadata" => ctx[:new_data]}) +             |> patch("/api/pleroma/emoji/packs/update?name=test_pack", %{ +               "metadata" => ctx[:new_data] +             })               |> json_response_and_validate_schema(200) == ctx[:new_data]        assert Jason.decode!(File.read!(ctx[:pack_file]))["pack"] == ctx[:new_data] @@ -384,7 +396,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do        assert ctx[:admin_conn]               |> put_req_header("content-type", "multipart/form-data") -             |> patch("/api/pleroma/emoji/packs/test_pack", %{metadata: new_data}) +             |> patch("/api/pleroma/emoji/packs/update?name=test_pack", %{metadata: new_data})               |> json_response_and_validate_schema(200) == new_data_with_sha        assert Jason.decode!(File.read!(ctx[:pack_file]))["pack"] == new_data_with_sha @@ -404,17 +416,17 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do        assert ctx[:admin_conn]               |> put_req_header("content-type", "multipart/form-data") -             |> patch("/api/pleroma/emoji/packs/test_pack", %{metadata: new_data}) +             |> patch("/api/pleroma/emoji/packs/update?name=test_pack", %{metadata: new_data})               |> json_response_and_validate_schema(:bad_request) == %{                 "error" => "The fallback archive does not have all files specified in pack.json"               }      end    end -  describe "POST/DELETE /api/pleroma/emoji/packs/:name" do +  describe "POST/DELETE /api/pleroma/emoji/packs/?name=:name" do      test "creating and deleting a pack", %{admin_conn: admin_conn} do        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_created") +             |> post("/api/pleroma/emoji/packs/create?name=test_created")               |> json_response_and_validate_schema(200) == "ok"        assert File.exists?("#{@emoji_path}/test_created/pack.json") @@ -426,7 +438,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do               }        assert admin_conn -             |> delete("/api/pleroma/emoji/packs/test_created") +             |> delete("/api/pleroma/emoji/packs/delete?name=test_created")               |> json_response_and_validate_schema(200) == "ok"        refute File.exists?("#{@emoji_path}/test_created/pack.json") @@ -439,7 +451,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do        File.write!(Path.join(path, "pack.json"), pack_file)        assert admin_conn -             |> post("/api/pleroma/emoji/packs/test_created") +             |> post("/api/pleroma/emoji/packs/create?name=test_created")               |> json_response_and_validate_schema(:conflict) == %{                 "error" => "A pack named \"test_created\" already exists"               } @@ -449,7 +461,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do      test "with empty name", %{admin_conn: admin_conn} do        assert admin_conn -             |> post("/api/pleroma/emoji/packs/ ") +             |> post("/api/pleroma/emoji/packs/create?name= ")               |> json_response_and_validate_schema(:bad_request) == %{                 "error" => "pack name cannot be empty"               } @@ -458,7 +470,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do    test "deleting nonexisting pack", %{admin_conn: admin_conn} do      assert admin_conn -           |> delete("/api/pleroma/emoji/packs/non_existing") +           |> delete("/api/pleroma/emoji/packs/delete?name=non_existing")             |> json_response_and_validate_schema(:not_found) == %{               "error" => "Pack non_existing does not exist"             } @@ -466,7 +478,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do    test "deleting with empty name", %{admin_conn: admin_conn} do      assert admin_conn -           |> delete("/api/pleroma/emoji/packs/ ") +           |> delete("/api/pleroma/emoji/packs/delete?name= ")             |> json_response_and_validate_schema(:bad_request) == %{               "error" => "pack name cannot be empty"             } @@ -529,7 +541,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do                 }               } =                 conn -               |> get("/api/pleroma/emoji/packs/test_pack") +               |> get("/api/pleroma/emoji/packs/show?name=test_pack")                 |> json_response_and_validate_schema(200)        assert files == %{"blank" => "blank.png", "blank2" => "blank2.png"} @@ -539,7 +551,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do                 "files_count" => 2               } =                 conn -               |> get("/api/pleroma/emoji/packs/test_pack?page_size=1") +               |> get("/api/pleroma/emoji/packs/show?name=test_pack&page_size=1")                 |> json_response_and_validate_schema(200)        assert files |> Map.keys() |> length() == 1 @@ -549,15 +561,33 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do                 "files_count" => 2               } =                 conn -               |> get("/api/pleroma/emoji/packs/test_pack?page_size=1&page=2") +               |> get("/api/pleroma/emoji/packs/show?name=test_pack&page_size=1&page=2")                 |> json_response_and_validate_schema(200)        assert files |> Map.keys() |> length() == 1      end +    test "for pack name with special chars", %{conn: conn} do +      assert %{ +               "files" => files, +               "files_count" => 1, +               "pack" => %{ +                 "can-download" => true, +                 "description" => "Test description", +                 "download-sha256" => _, +                 "homepage" => "https://pleroma.social", +                 "license" => "Test license", +                 "share-files" => true +               } +             } = +               conn +               |> get("/api/pleroma/emoji/packs/show?name=blobs.gg") +               |> json_response_and_validate_schema(200) +    end +      test "non existing pack", %{conn: conn} do        assert conn -             |> get("/api/pleroma/emoji/packs/non_existing") +             |> get("/api/pleroma/emoji/packs/show?name=non_existing")               |> json_response_and_validate_schema(:not_found) == %{                 "error" => "Pack non_existing does not exist"               } @@ -565,7 +595,7 @@ defmodule Pleroma.Web.PleromaAPI.EmojiPackControllerTest do      test "error name", %{conn: conn} do        assert conn -             |> get("/api/pleroma/emoji/packs/ ") +             |> get("/api/pleroma/emoji/packs/show?name= ")               |> json_response_and_validate_schema(:bad_request) == %{                 "error" => "pack name cannot be empty"               }  | 
