diff options
author | Pierre de Lacroix <pierre@pdelacroix.com> | 2020-10-19 20:01:38 +0200 |
---|---|---|
committer | Pierre de Lacroix <pierre@pdelacroix.com> | 2020-10-19 20:01:38 +0200 |
commit | 118649055fae9a6041b6f07ab5485187593da3c7 (patch) | |
tree | 584a3f3100dc76bb9f7a58e4330d5a866c784d68 /test | |
parent | Merge branch 'test-ci' into 'master' (diff) |
test: add tests for controllers
Diffstat (limited to 'test')
-rw-r--r-- | test/matrix_app_service_web/controllers/room_controller_test.exs | 16 | ||||
-rw-r--r-- | test/matrix_app_service_web/controllers/third_party_controller_test.exs (renamed from test/matrix_app_service_web/controllers/thir_party_controller_test.exs) | 0 | ||||
-rw-r--r-- | test/matrix_app_service_web/controllers/transaction_controller_test.exs | 28 | ||||
-rw-r--r-- | test/matrix_app_service_web/controllers/user_controller_test.exs | 16 | ||||
-rw-r--r-- | test/support/conn_case.ex | 17 | ||||
-rw-r--r-- | test/support/test_endpoint.ex | 25 | ||||
-rw-r--r-- | test/support/test_room_adapter.ex | 12 | ||||
-rw-r--r-- | test/support/test_router.ex | 10 | ||||
-rw-r--r-- | test/support/test_transaction_adapter.ex | 10 | ||||
-rw-r--r-- | test/support/test_user_adapter.ex | 12 |
10 files changed, 142 insertions, 4 deletions
diff --git a/test/matrix_app_service_web/controllers/room_controller_test.exs b/test/matrix_app_service_web/controllers/room_controller_test.exs index a8cfabc..27eb48a 100644 --- a/test/matrix_app_service_web/controllers/room_controller_test.exs +++ b/test/matrix_app_service_web/controllers/room_controller_test.exs @@ -1,3 +1,19 @@ defmodule MatrixAppServiceWeb.RoomControllerTest do use MatrixAppServiceWeb.ConnCase + + describe "query" do + @tag authenticated: true + test "querying an existing room returns 200", %{conn: conn} do + conn = get(conn, Routes.matrix_room_path(conn, :query, "#existing:homeserver"), conn.params) + assert json_response(conn, 200) == "{}" + end + + @tag authenticated: true + test "querying an non-existing room returns 404", %{conn: conn} do + conn = + get(conn, Routes.matrix_room_path(conn, :query, "#non-existing:homeserver"), conn.params) + + assert json_response(conn, 404) == "" + end + end end diff --git a/test/matrix_app_service_web/controllers/thir_party_controller_test.exs b/test/matrix_app_service_web/controllers/third_party_controller_test.exs index 961e751..961e751 100644 --- a/test/matrix_app_service_web/controllers/thir_party_controller_test.exs +++ b/test/matrix_app_service_web/controllers/third_party_controller_test.exs diff --git a/test/matrix_app_service_web/controllers/transaction_controller_test.exs b/test/matrix_app_service_web/controllers/transaction_controller_test.exs index 639ca62..435a4bc 100644 --- a/test/matrix_app_service_web/controllers/transaction_controller_test.exs +++ b/test/matrix_app_service_web/controllers/transaction_controller_test.exs @@ -1,3 +1,31 @@ defmodule MatrixAppServiceWeb.TransactionControllerTest do use MatrixAppServiceWeb.ConnCase + + import ExUnit.CaptureLog + + describe "push" do + @tag authenticated: true + test "transactions are pushed", %{conn: conn} do + event = %{ + "age" => 42, + "content" => 42, + "event_id" => 42, + "origin_server_ts" => 42, + "room_id" => 42, + "sender" => 42, + "type" => 42, + "unsigned" => 42, + "user_id" => 42 + } + + assert capture_log(fn -> + put( + conn, + Routes.matrix_transaction_path(conn, :push, 42), + Map.put(conn.params, "events", [event]) + ) + end) =~ + "got an event" + end + end end diff --git a/test/matrix_app_service_web/controllers/user_controller_test.exs b/test/matrix_app_service_web/controllers/user_controller_test.exs index 6b061c1..cbbd015 100644 --- a/test/matrix_app_service_web/controllers/user_controller_test.exs +++ b/test/matrix_app_service_web/controllers/user_controller_test.exs @@ -1,3 +1,19 @@ defmodule MatrixAppServiceWeb.UserControllerTest do use MatrixAppServiceWeb.ConnCase + + describe "query" do + @tag authenticated: true + test "querying an existing user returns 200", %{conn: conn} do + conn = get(conn, Routes.matrix_user_path(conn, :query, "@existing:homeserver"), conn.params) + assert json_response(conn, 200) == "{}" + end + + @tag authenticated: true + test "querying an non-existing user returns 404", %{conn: conn} do + conn = + get(conn, Routes.matrix_user_path(conn, :query, "@non-existing:homeserver"), conn.params) + + assert json_response(conn, 404) == "" + end + end end diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex index 478e03f..bc28d10 100644 --- a/test/support/conn_case.ex +++ b/test/support/conn_case.ex @@ -24,14 +24,23 @@ defmodule MatrixAppServiceWeb.ConnCase do import Phoenix.ConnTest import MatrixAppServiceWeb.ConnCase - alias MatrixAppServiceWeb.Router.Helpers, as: Routes + alias MatrixAppServiceWeb.TestRouter.Helpers, as: Routes # The default endpoint for testing - @endpoint MatrixAppServiceWeb.Endpoint + @endpoint MatrixAppServiceWeb.TestEndpoint end end - setup _tags do - {:ok, conn: Phoenix.ConnTest.build_conn()} + setup tags do + conn = + if tags[:authenticated] do + Phoenix.ConnTest.build_conn(:get, "/", %{ + "access_token" => Application.fetch_env!(:matrix_app_service, :homeserver_token) + }) + else + Phoenix.ConnTest.build_conn() + end + + {:ok, conn: conn} end end diff --git a/test/support/test_endpoint.ex b/test/support/test_endpoint.ex new file mode 100644 index 0000000..5112df8 --- /dev/null +++ b/test/support/test_endpoint.ex @@ -0,0 +1,25 @@ +defmodule MatrixAppServiceWeb.TestEndpoint do + use Phoenix.Endpoint, otp_app: :matrix_app_service + + # The session will be stored in the cookie and signed, + # this means its contents can be read but not tampered with. + # Set :encryption_salt if you would also like to encrypt it. + @session_options [ + store: :cookie, + key: "_matrix_app_service_key", + signing_salt: "zE7AHynD" + ] + + plug Plug.RequestId + # plug Plug.Telemetry, event_prefix: [:phoenix, :endpoint] + + plug Plug.Parsers, + parsers: [:urlencoded, :multipart, :json], + pass: ["*/*"], + json_decoder: Phoenix.json_library() + + plug Plug.MethodOverride + plug Plug.Head + plug Plug.Session, @session_options + plug MatrixAppServiceWeb.TestRouter +end diff --git a/test/support/test_room_adapter.ex b/test/support/test_room_adapter.ex new file mode 100644 index 0000000..d57d420 --- /dev/null +++ b/test/support/test_room_adapter.ex @@ -0,0 +1,12 @@ +defmodule MatrixAppService.TestRoomAdapter do + @behaviour MatrixAppService.Adapter.Room + + @impl MatrixAppService.Adapter.Room + def query_alias("#existing:homeserver") do + :ok + end + + def query_alias(_) do + nil + end +end diff --git a/test/support/test_router.ex b/test/support/test_router.ex new file mode 100644 index 0000000..3bbad03 --- /dev/null +++ b/test/support/test_router.ex @@ -0,0 +1,10 @@ +defmodule MatrixAppServiceWeb.TestRouter do + require MatrixAppServiceWeb.Router + + use Phoenix.Router + + import Plug.Conn + import Phoenix.Controller + + MatrixAppServiceWeb.Router.routes() +end diff --git a/test/support/test_transaction_adapter.ex b/test/support/test_transaction_adapter.ex new file mode 100644 index 0000000..c39371b --- /dev/null +++ b/test/support/test_transaction_adapter.ex @@ -0,0 +1,10 @@ +defmodule MatrixAppService.TestTransactionAdapter do + require Logger + @behaviour MatrixAppService.Adapter.Transaction + + @impl MatrixAppService.Adapter.Transaction + def new_event(%MatrixAppService.Event{}) do + Logger.error("got an event") + nil + end +end diff --git a/test/support/test_user_adapter.ex b/test/support/test_user_adapter.ex new file mode 100644 index 0000000..c402e0b --- /dev/null +++ b/test/support/test_user_adapter.ex @@ -0,0 +1,12 @@ +defmodule MatrixAppService.TestUserAdapter do + @behaviour MatrixAppService.Adapter.User + + @impl MatrixAppService.Adapter.User + def query_user("@existing:homeserver") do + :ok + end + + def query_user(_) do + nil + end +end |