diff options
Diffstat (limited to 'test')
4 files changed, 114 insertions, 0 deletions
| diff --git a/test/pleroma/web/mastodon_api/controllers/app_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/app_controller_test.exs index 76d81b942..bfbb7f32d 100644 --- a/test/pleroma/web/mastodon_api/controllers/app_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/app_controller_test.exs @@ -35,6 +35,33 @@ defmodule Pleroma.Web.MastodonAPI.AppControllerTest do    end    test "creates an oauth app", %{conn: conn} do +    app_attrs = build(:oauth_app) + +    conn = +      conn +      |> put_req_header("content-type", "application/json") +      |> post("/api/v1/apps", %{ +        client_name: app_attrs.client_name, +        redirect_uris: app_attrs.redirect_uris +      }) + +    [app] = Repo.all(App) + +    expected = %{ +      "name" => app.client_name, +      "website" => app.website, +      "client_id" => app.client_id, +      "client_secret" => app.client_secret, +      "id" => app.id |> to_string(), +      "redirect_uri" => app.redirect_uris, +      "vapid_key" => Push.vapid_config() |> Keyword.get(:public_key) +    } + +    assert expected == json_response_and_validate_schema(conn, 200) +    assert app.user_id == nil +  end + +  test "creates an oauth app with a user", %{conn: conn} do      user = insert(:user)      app_attrs = build(:oauth_app) @@ -60,5 +87,6 @@ defmodule Pleroma.Web.MastodonAPI.AppControllerTest do      }      assert expected == json_response_and_validate_schema(conn, 200) +    assert app.user_id == user.id    end  end diff --git a/test/pleroma/web/o_auth/app_test.exs b/test/pleroma/web/o_auth/app_test.exs index fc2f0d940..a5223b0a5 100644 --- a/test/pleroma/web/o_auth/app_test.exs +++ b/test/pleroma/web/o_auth/app_test.exs @@ -41,4 +41,16 @@ defmodule Pleroma.Web.OAuth.AppTest do        assert error.type == :unique      end    end + +  test "get_user_apps/1" do +    user = insert(:user) + +    apps = [ +      insert(:oauth_app, user_id: user.id), +      insert(:oauth_app, user_id: user.id), +      insert(:oauth_app, user_id: user.id) +    ] + +    assert App.get_user_apps(user) == apps +  end  end diff --git a/test/pleroma/web/pleroma_api/controllers/app_controller_test.exs b/test/pleroma/web/pleroma_api/controllers/app_controller_test.exs new file mode 100644 index 000000000..5e24e18a8 --- /dev/null +++ b/test/pleroma/web/pleroma_api/controllers/app_controller_test.exs @@ -0,0 +1,53 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.AppControllerTest do +  use Pleroma.Web.ConnCase, async: true + +  alias Pleroma.Web.OAuth.App +  alias Pleroma.Web.Push + +  import Pleroma.Factory + +  test "apps", %{conn: conn} do +    user = insert(:user) +    app_attrs = build(:oauth_app) + +    creation = +      conn +      |> put_req_header("content-type", "application/json") +      |> assign(:user, user) +      |> post("/api/v1/apps", %{ +        client_name: app_attrs.client_name, +        redirect_uris: app_attrs.redirect_uris +      }) + +    [app] = App.get_user_apps(user) + +    expected = %{ +      "name" => app.client_name, +      "website" => app.website, +      "client_id" => app.client_id, +      "client_secret" => app.client_secret, +      "id" => app.id |> to_string(), +      "redirect_uri" => app.redirect_uris, +      "vapid_key" => Push.vapid_config() |> Keyword.get(:public_key) +    } + +    assert expected == json_response_and_validate_schema(creation, 200) + +    response = +      conn +      |> put_req_header("content-type", "application/json") +      |> assign(:user, user) +      |> assign(:token, insert(:oauth_token, user: user, scopes: ["read", "follow"])) +      |> get("/api/v1/pleroma/apps") +      |> json_response_and_validate_schema(200) + +    [apps] = response + +    assert length(response) == 1 +    assert apps["client_id"] == app.client_id +  end +end diff --git a/test/pleroma/web/pleroma_api/views/app_view_test.exs b/test/pleroma/web/pleroma_api/views/app_view_test.exs new file mode 100644 index 000000000..f0aee6987 --- /dev/null +++ b/test/pleroma/web/pleroma_api/views/app_view_test.exs @@ -0,0 +1,21 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.PleromaAPI.AppViewTest do +  use Pleroma.DataCase, async: true +  alias Pleroma.Web.PleromaAPI.AppView +  import Pleroma.Factory + +  test "index.json" do +    apps = [ +      insert(:oauth_app), +      insert(:oauth_app), +      insert(:oauth_app) +    ] + +    results = AppView.render("index.json", %{apps: apps}) + +    assert [%{client_id: _, client_secret: _}, _, _] = results +  end +end | 
