Merge branch 'align-mastodon-conversations' into 'develop'
authorlambda <lain@soykaf.club>
Mon, 3 Jun 2019 09:48:37 +0000 (09:48 +0000)
committerlambda <lain@soykaf.club>
Mon, 3 Jun 2019 09:48:37 +0000 (09:48 +0000)
Mastodon Conversations API: Align to Mastodon behavior

See merge request pleroma/pleroma!1215

1  2 
test/web/mastodon_api/mastodon_api_controller_test.exs

index f5f87d8afe85715e7e09cdc52a3a06eb983317a7,24cc911c33b226567305d53933cae26759ce9883..9482f4cb8511654059c7d6b7fbdf04079eb7c5e8
@@@ -317,12 -317,13 +317,13 @@@ defmodule Pleroma.Web.MastodonAPI.Masto
    test "Conversations", %{conn: conn} do
      user_one = insert(:user)
      user_two = insert(:user)
+     user_three = insert(:user)
  
      {:ok, user_two} = User.follow(user_two, user_one)
  
      {:ok, direct} =
        CommonAPI.post(user_one, %{
-         "status" => "Hi @#{user_two.nickname}!",
+         "status" => "Hi @#{user_two.nickname}, @#{user_three.nickname}!",
          "visibility" => "direct"
        })
  
               }
             ] = response
  
+     account_ids = Enum.map(res_accounts, & &1["id"])
      assert length(res_accounts) == 2
+     assert user_two.id in account_ids
+     assert user_three.id in account_ids
      assert is_binary(res_id)
      assert unread == true
      assert res_last_status["id"] == direct.id
                 |> post("/api/v1/statuses/#{activity_two.id}/pin")
                 |> json_response(400)
      end
 +  end
  
 -    test "Status rich-media Card", %{conn: conn, user: user} do
 +  describe "cards" do
 +    setup do
        Pleroma.Config.put([:rich_media, :enabled], true)
 +
 +      on_exit(fn ->
 +        Pleroma.Config.put([:rich_media, :enabled], false)
 +      end)
 +
 +      user = insert(:user)
 +      %{user: user}
 +    end
 +
 +    test "returns rich-media card", %{conn: conn, user: user} do
        {:ok, activity} = CommonAPI.post(user, %{"status" => "http://example.com/ogp"})
  
 +      card_data = %{
 +        "image" => "http://ia.media-imdb.com/images/rock.jpg",
 +        "provider_name" => "www.imdb.com",
 +        "provider_url" => "http://www.imdb.com",
 +        "title" => "The Rock",
 +        "type" => "link",
 +        "url" => "http://www.imdb.com/title/tt0117500/",
 +        "description" =>
 +          "Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer.",
 +        "pleroma" => %{
 +          "opengraph" => %{
 +            "image" => "http://ia.media-imdb.com/images/rock.jpg",
 +            "title" => "The Rock",
 +            "type" => "video.movie",
 +            "url" => "http://www.imdb.com/title/tt0117500/",
 +            "description" =>
 +              "Directed by Michael Bay. With Sean Connery, Nicolas Cage, Ed Harris, John Spencer."
 +          }
 +        }
 +      }
 +
        response =
          conn
          |> get("/api/v1/statuses/#{activity.id}/card")
          |> json_response(200)
  
 -      assert response == %{
 -               "image" => "http://ia.media-imdb.com/images/rock.jpg",
 -               "provider_name" => "www.imdb.com",
 -               "provider_url" => "http://www.imdb.com",
 -               "title" => "The Rock",
 -               "type" => "link",
 -               "url" => "http://www.imdb.com/title/tt0117500/",
 -               "description" => nil,
 -               "pleroma" => %{
 -                 "opengraph" => %{
 -                   "image" => "http://ia.media-imdb.com/images/rock.jpg",
 -                   "title" => "The Rock",
 -                   "type" => "video.movie",
 -                   "url" => "http://www.imdb.com/title/tt0117500/"
 -                 }
 -               }
 -             }
 +      assert response == card_data
  
        # works with private posts
        {:ok, activity} =
          |> get("/api/v1/statuses/#{activity.id}/card")
          |> json_response(200)
  
 -      assert response_two == response
 +      assert response_two == card_data
 +    end
 +
 +    test "replaces missing description with an empty string", %{conn: conn, user: user} do
 +      {:ok, activity} = CommonAPI.post(user, %{"status" => "http://example.com/ogp-missing-data"})
 +
 +      response =
 +        conn
 +        |> get("/api/v1/statuses/#{activity.id}/card")
 +        |> json_response(:ok)
  
 -      Pleroma.Config.put([:rich_media, :enabled], false)
 +      assert response == %{
 +               "type" => "link",
 +               "title" => "Pleroma",
 +               "description" => "",
 +               "image" => nil,
 +               "provider_name" => "pleroma.social",
 +               "provider_url" => "https://pleroma.social",
 +               "url" => "https://pleroma.social/",
 +               "pleroma" => %{
 +                 "opengraph" => %{
 +                   "title" => "Pleroma",
 +                   "type" => "website",
 +                   "url" => "https://pleroma.social/"
 +                 }
 +               }
 +             }
      end
    end
  
      end
    end
  
 -  test "flavours switching (Pleroma Extension)", %{conn: conn} do
 -    user = insert(:user)
 -
 -    get_old_flavour =
 -      conn
 -      |> assign(:user, user)
 -      |> get("/api/v1/pleroma/flavour")
 -
 -    assert "glitch" == json_response(get_old_flavour, 200)
 -
 -    set_flavour =
 -      conn
 -      |> assign(:user, user)
 -      |> post("/api/v1/pleroma/flavour/vanilla")
 -
 -    assert "vanilla" == json_response(set_flavour, 200)
 -
 -    get_new_flavour =
 -      conn
 -      |> assign(:user, user)
 -      |> post("/api/v1/pleroma/flavour/vanilla")
 -
 -    assert json_response(set_flavour, 200) == json_response(get_new_flavour, 200)
 -  end
 -
    describe "reports" do
      setup do
        reporter = insert(:user)