diff options
author | Hubert Chathi <hubert@uhoreg.ca> | 2020-12-26 23:15:50 +0000 |
---|---|---|
committer | Hubert Chathi <hubert@uhoreg.ca> | 2020-12-26 23:15:50 +0000 |
commit | 480180e0efdeebb050502fd7e7b897595a8406ab (patch) | |
tree | c799b80a50d820771313162690a157a5c6e2e621 /test/polyjuice | |
parent | Add methods for creating rooms. (diff) | |
parent | wrote interface for account_data (diff) |
Merge branch 'account_data' into 'master'
Account data
See merge request uhoreg/polyjuice_client!4
Diffstat (limited to 'test/polyjuice')
-rw-r--r-- | test/polyjuice/client/account_test.exs | 51 | ||||
-rw-r--r-- | test/polyjuice/client/endpoint/get_account_data_test.exs | 53 | ||||
-rw-r--r-- | test/polyjuice/client/endpoint/put_account_data_test.exs | 55 |
3 files changed, 159 insertions, 0 deletions
diff --git a/test/polyjuice/client/account_test.exs b/test/polyjuice/client/account_test.exs new file mode 100644 index 0000000..6f11d25 --- /dev/null +++ b/test/polyjuice/client/account_test.exs @@ -0,0 +1,51 @@ +# Copyright 2020 Multi Prise <multiesunhappydev@gmail.com> +# +# 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. + +defmodule Polyjuice.Client.AccountTest do + use ExUnit.Case + doctest Polyjuice.Client.Account + + test "get account data" do + with client = %DummyClient{ + response: { + %Polyjuice.Client.Endpoint.GetAccountData{ + user_id: "toto@kazarma.local", + type: "name" + }, + {:ok, %{name: "toto"}} + } + } do + {:ok, %{name: name}} = + Polyjuice.Client.Account.get_data(client, "toto@kazarma.local", "name") + + assert name == "toto" + end + end + + test "put account data" do + with client = %DummyClient{ + response: { + %Polyjuice.Client.Endpoint.PutAccountData{ + user_id: "toto@kazarma.local", + type: "name", + account_data: %{name: "marc"} + }, + {:ok, %{}} + } + } do + {:ok, %{}} = + Polyjuice.Client.Account.put_data(client, "toto@kazarma.local", "name", %{name: "marc"}) + end + end +end diff --git a/test/polyjuice/client/endpoint/get_account_data_test.exs b/test/polyjuice/client/endpoint/get_account_data_test.exs new file mode 100644 index 0000000..c20ad8d --- /dev/null +++ b/test/polyjuice/client/endpoint/get_account_data_test.exs @@ -0,0 +1,53 @@ +# Copyright 2020 Multi Prise <multiestunhappydev@gmail.com> +# +# 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. + +defmodule Polyjuice.Client.Endpoint.GetAccountDataTest do + use ExUnit.Case + + test "GET /_matrix/client/r0/user/{userId}/account_data/{type}" do + with endpoint = %Polyjuice.Client.Endpoint.GetAccountData{ + type: "name", + user_id: "alice.Aexample.com" + } do + http_spec = Polyjuice.Client.Endpoint.Proto.http_spec(endpoint) + + assert http_spec == %Polyjuice.Client.Endpoint.HttpSpec{ + auth_required: true, + body: "", + headers: [ + {"Accept", "application/json"}, + {"Content-Type", "application/json"} + ], + method: :get, + path: "_matrix/client/r0/user/alice.Aexample.com/account_data/name" + } + + assert Polyjuice.Client.Endpoint.Proto.transform_http_result( + endpoint, + 200, + [{"Content-Type", "application/json"}], + "[{\"name\": \"alice\"}]" + ) == {:ok, [%{"name" => "alice"}]} + + assert Polyjuice.Client.Endpoint.Proto.transform_http_result( + endpoint, + 500, + [], + "Aaah!" + ) == + {:error, 500, + %{"body" => "Aaah!", "errcode" => "CA_UHOREG_POLYJUICE_BAD_RESPONSE"}} + end + end +end diff --git a/test/polyjuice/client/endpoint/put_account_data_test.exs b/test/polyjuice/client/endpoint/put_account_data_test.exs new file mode 100644 index 0000000..f58ed86 --- /dev/null +++ b/test/polyjuice/client/endpoint/put_account_data_test.exs @@ -0,0 +1,55 @@ +# Copyright 2020 Multi Prise <multiestunhappydev@gmail.com> +# +# 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. + +defmodule Polyjuice.Client.Endpoint.PutAccountDataTest do + use ExUnit.Case + + test "PUT /_matrix/client/r0/user/{userId}/account_data/{type}" do + endpoint = %Polyjuice.Client.Endpoint.PutAccountData{ + type: "name", + user_id: "alice:toto.com", + account_data: %{ + custom_account_data_key: "custom_config_value" + } + } + + http_spec = Polyjuice.Client.Endpoint.Proto.http_spec(endpoint) + + assert http_spec == %Polyjuice.Client.Endpoint.HttpSpec{ + auth_required: true, + body: "{\"custom_account_data_key\":\"custom_config_value\"}", + headers: [ + {"Accept", "application/json"}, + {"Content-Type", "application/json"} + ], + method: :put, + path: "_matrix/client/r0/user/alice%3Atoto.com/account_data/name" + } + + assert Polyjuice.Client.Endpoint.Proto.transform_http_result( + endpoint, + 200, + [{"Content-Type", "application/json"}], + "{}" + ) == :ok + + assert Polyjuice.Client.Endpoint.Proto.transform_http_result( + endpoint, + 500, + [], + "Aaah!" + ) == + {:error, 500, %{"body" => "Aaah!", "errcode" => "CA_UHOREG_POLYJUICE_BAD_RESPONSE"}} + end +end |