Add registration to the TwAPI controller.

This commit is contained in:
Roger Braun 2017-04-16 11:01:24 +02:00
parent b1edd94baa
commit 5dac3727f1
3 changed files with 50 additions and 0 deletions

View File

@ -26,6 +26,7 @@ def user_fetcher(username) do
get "/statuses/show/:id", TwitterAPI.Controller, :fetch_status
get "/statusnet/conversation/:id", TwitterAPI.Controller, :fetch_conversation
get "/statusnet/config", TwitterAPI.Controller, :config
post "/account/register", TwitterAPI.Controller, :register
end
scope "/api", Pleroma.Web do

View File

@ -131,6 +131,17 @@ def retweet(%{assigns: %{user: user}} = conn, %{"id" => id}) do
|> json_reply(200, response)
end
def register(conn, params) do
with {:ok, user} <- TwitterAPI.register_user(params) do
conn
|> json_reply(200, Poison.encode!(user))
else
{:error, errors} ->
conn
|> json_reply(400, Poison.encode!(errors))
end
end
defp json_reply(conn, status, json) do
conn
|> put_resp_content_type("application/json")

View File

@ -216,6 +216,44 @@ test "with credentials", %{conn: conn, user: current_user} do
end
end
describe "POST /api/account/register" do
test "it creates a new user", %{conn: conn} do
data = %{
"nickname" => "lain",
"email" => "lain@wired.jp",
"fullname" => "lain iwakura",
"bio" => "close the world.",
"password" => "bear",
"confirm" => "bear"
}
conn = conn
|> post("/api/account/register", data)
user = json_response(conn, 200)
fetched_user = Repo.get_by(User, nickname: "lain")
assert user == UserRepresenter.to_map(fetched_user)
end
test "it returns errors on a problem", %{conn: conn} do
data = %{
"email" => "lain@wired.jp",
"fullname" => "lain iwakura",
"bio" => "close the world.",
"password" => "bear",
"confirm" => "bear"
}
conn = conn
|> post("/api/account/register", data)
errors = json_response(conn, 400)
assert is_binary(errors["error"])
end
end
defp valid_user(_context) do
{ :ok, user } = UserBuilder.insert(%{nickname: "lambda", ap_id: "lambda"})
[user: user]