Add registration to the TwAPI controller.
This commit is contained in:
		
							parent
							
								
									b1edd94baa
								
							
						
					
					
						commit
						5dac3727f1
					
				
					 3 changed files with 50 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue