summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPierre de Lacroix <pierre@pdelacroix.com>2020-10-19 20:01:38 +0200
committerPierre de Lacroix <pierre@pdelacroix.com>2020-10-19 20:01:38 +0200
commit118649055fae9a6041b6f07ab5485187593da3c7 (patch)
tree584a3f3100dc76bb9f7a58e4330d5a866c784d68 /test
parentMerge 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.exs16
-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.exs28
-rw-r--r--test/matrix_app_service_web/controllers/user_controller_test.exs16
-rw-r--r--test/support/conn_case.ex17
-rw-r--r--test/support/test_endpoint.ex25
-rw-r--r--test/support/test_room_adapter.ex12
-rw-r--r--test/support/test_router.ex10
-rw-r--r--test/support/test_transaction_adapter.ex10
-rw-r--r--test/support/test_user_adapter.ex12
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