diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/fixtures/httpoison_mock/kaniini@gerzilla.de.json | 1 | ||||
| -rw-r--r-- | test/fixtures/httpoison_mock/kaniini@hubzilla.example.org.json | 1 | ||||
| -rw-r--r-- | test/fixtures/hubzilla-follow-activity.json | 31 | ||||
| -rw-r--r-- | test/fixtures/mastodon-undo-like.json | 34 | ||||
| -rw-r--r-- | test/formatter_test.exs | 7 | ||||
| -rw-r--r-- | test/support/httpoison_mock.ex | 24 | ||||
| -rw-r--r-- | test/web/activity_pub/activity_pub_test.exs | 2 | ||||
| -rw-r--r-- | test/web/activity_pub/transmogrifier_test.exs | 66 | ||||
| -rw-r--r-- | test/web/common_api/common_api_utils_test.exs | 15 | ||||
| -rw-r--r-- | test/web/mastodon_api/mastodon_api_controller_test.exs | 43 | ||||
| -rw-r--r-- | test/web/twitter_api/representers/activity_representer_test.exs | 3 | ||||
| -rw-r--r-- | test/web/twitter_api/twitter_api_controller_test.exs | 27 | ||||
| -rw-r--r-- | test/web/twitter_api/views/activity_view_test.exs | 5 | ||||
| -rw-r--r-- | test/web/web_finger/web_finger_test.exs | 8 | 
14 files changed, 256 insertions, 11 deletions
| diff --git a/test/fixtures/httpoison_mock/kaniini@gerzilla.de.json b/test/fixtures/httpoison_mock/kaniini@gerzilla.de.json new file mode 100644 index 000000000..be2f69b18 --- /dev/null +++ b/test/fixtures/httpoison_mock/kaniini@gerzilla.de.json @@ -0,0 +1 @@ +{"subject":"acct:kaniini","aliases":["https:\/\/gerzilla.de\/channel\/kaniini","https:\/\/gerzilla.de\/~kaniini","acct:kaniini@gerzilla.de"],"properties":{"http:\/\/webfinger.net\/ns\/name":"kaniini","http:\/\/xmlns.com\/foaf\/0.1\/name":"kaniini","https:\/\/w3id.org\/security\/v1#publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvXCDkQPw+1N8B2CUd5s2\nbYvjHt+t7soMNfUiRy0qGbgW46S45k5lCq1KpbFIX3sgGZ4OWjnXVbvjCJi4kl5M\nfm5DBXzpuu05AmjVl8hqk4GejajiE\/1Nq0uWHPiOSFWispUjCzzCu65V+IsiE5JU\nvcL6WEf\/pYNRq7gYqyT693F7+cO5\/rVv9OScx5UOxbIuU1VXYhdHCqAMDJWadC89\nhePrcD3HOQKl06W2tDxHcWk6QjrdsUQGbNOgK\/QIN9gSxA+rCFEvH5O0HAhI0aXq\ncOB+vysJUFLeQOAqmAKvKS5V6RqE1GqqT0pDWHack4EmQi0gkgVzo+45xoP6wfDl\nWwG88w21LNxGvGHuN4I8mg6cEoApqKQBSOj086UtfDfSlPC1B+PRD2phE5etucHd\nF\/RIWN3SxVzU9BKIiaDm2gwOpvI8QuorQb6HDtZFO5NsSN3PnMnSywPe7kXl\/469\nuQRYXrseqyOVIi6WjhvXkyWVKVE5CBz+S8wXHfKph+9YOyUcJeAVMijp9wrjBlMc\noSzOGu79oM7tpMSq\/Xo6ePJ\/glNOwZR+OKrg92Qp9BGTKDNwGrxuxP\/9KwWtGLNf\nOMTtIkxtC3ubhxL3lBxOd7l+Bmum0UJV2f8ogkCgvTpIz05jMoyU8qWl6kkWNQlY\nDropXWaOfy7Lac+G4qlfSgsCAwEAAQ==\n-----END PUBLIC KEY-----\n","http:\/\/purl.org\/zot\/federation":"zot,activitypub"},"links":[{"rel":"http:\/\/webfinger.net\/rel\/avatar","type":"image\/png","href":"https:\/\/gerzilla.de\/photo\/profile\/l\/281"},{"rel":"http:\/\/microformats.org\/profile\/hcard","type":"text\/html","href":"https:\/\/gerzilla.de\/hcard\/kaniini"},{"rel":"http:\/\/webfinger.net\/rel\/profile-page","href":"https:\/\/gerzilla.de\/profile\/kaniini"},{"rel":"http:\/\/schemas.google.com\/g\/2010#updates-from","type":"application\/atom+xml","href":"https:\/\/gerzilla.de\/ofeed\/kaniini"},{"rel":"http:\/\/webfinger.net\/rel\/blog","href":"https:\/\/gerzilla.de\/channel\/kaniini"},{"rel":"http:\/\/ostatus.org\/schema\/1.0\/subscribe","template":"https:\/\/gerzilla.de\/follow?f=&url={uri}"},{"rel":"http:\/\/purl.org\/zot\/protocol","href":"https:\/\/gerzilla.de\/.well-known\/zot-info?address=kaniini@gerzilla.de"},{"rel":"http:\/\/purl.org\/openwebauth\/v1","type":"application\/x-zot+json","href":"https:\/\/gerzilla.de\/owa"},{"rel":"magic-public-key","href":"data:application\/magic-public-key,RSA.AL1wg5ED8PtTfAdglHebNm2L4x7fre7KDDX1IkctKhm4FuOkuOZOZQqtSqWxSF97IBmeDlo511W74wiYuJJeTH5uQwV86brtOQJo1ZfIapOBno2o4hP9TatLlhz4jkhVorKVIws8wruuVfiLIhOSVL3C-lhH_6WDUau4GKsk-vdxe_nDuf61b_TknMeVDsWyLlNVV2IXRwqgDAyVmnQvPYXj63A9xzkCpdOltrQ8R3FpOkI63bFEBmzToCv0CDfYEsQPqwhRLx-TtBwISNGl6nDgfr8rCVBS3kDgKpgCrykuVekahNRqqk9KQ1h2nJOBJkItIJIFc6PuOcaD-sHw5VsBvPMNtSzcRrxh7jeCPJoOnBKAKaikAUjo9POlLXw30pTwtQfj0Q9qYROXrbnB3Rf0SFjd0sVc1PQSiImg5toMDqbyPELqK0G-hw7WRTuTbEjdz5zJ0ssD3u5F5f-OvbkEWF67HqsjlSIulo4b15MllSlROQgc_kvMFx3yqYfvWDslHCXgFTIo6fcK4wZTHKEszhru_aDO7aTEqv16Onjyf4JTTsGUfjiq4PdkKfQRkygzcBq8bsT__SsFrRizXzjE7SJMbQt7m4cS95QcTne5fgZrptFCVdn_KIJAoL06SM9OYzKMlPKlpepJFjUJWA66KV1mjn8uy2nPhuKpX0oL.AQAB"},{"rel":"self","type":"application\/ld+json; profile=\"https:\/\/www.w3.org\/ns\/activitystreams\"","href":"https:\/\/gerzilla.de\/channel\/kaniini"}]} diff --git a/test/fixtures/httpoison_mock/kaniini@hubzilla.example.org.json b/test/fixtures/httpoison_mock/kaniini@hubzilla.example.org.json new file mode 100644 index 000000000..11c79e11e --- /dev/null +++ b/test/fixtures/httpoison_mock/kaniini@hubzilla.example.org.json @@ -0,0 +1 @@ +{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1","https://hubzilla.example.org/apschema/v1.2"],"type":"Person","id":"https://hubzilla.example.org/channel/kaniini","preferredUsername":"kaniini","name":"kaniini","icon":{"type":"Image","mediaType":"image/jpeg","url":"https://hubzilla.example.org/photo/profile/l/281","height":300,"width":300},"url":{"type":"Link","mediaType":"text/html","href":"https://hubzilla.example.org/channel/kaniini"},"inbox":"https://hubzilla.example.org/inbox/kaniini","outbox":"https://hubzilla.example.org/outbox/kaniini","followers":"https://hubzilla.example.org/followers/kaniini","following":"https://hubzilla.example.org/following/kaniini","endpoints":{"sharedInbox":"https://hubzilla.example.org/inbox"},"publicKey":{"id":"https://hubzilla.example.org/channel/kaniini/public_key_pem","owner":"https://hubzilla.example.org/channel/kaniini","publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvXCDkQPw+1N8B2CUd5s2\nbYvjHt+t7soMNfUiRy0qGbgW46S45k5lCq1KpbFIX3sgGZ4OWjnXVbvjCJi4kl5M\nfm5DBXzpuu05AmjVl8hqk4GejajiE/1Nq0uWHPiOSFWispUjCzzCu65V+IsiE5JU\nvcL6WEf/pYNRq7gYqyT693F7+cO5/rVv9OScx5UOxbIuU1VXYhdHCqAMDJWadC89\nhePrcD3HOQKl06W2tDxHcWk6QjrdsUQGbNOgK/QIN9gSxA+rCFEvH5O0HAhI0aXq\ncOB+vysJUFLeQOAqmAKvKS5V6RqE1GqqT0pDWHack4EmQi0gkgVzo+45xoP6wfDl\nWwG88w21LNxGvGHuN4I8mg6cEoApqKQBSOj086UtfDfSlPC1B+PRD2phE5etucHd\nF/RIWN3SxVzU9BKIiaDm2gwOpvI8QuorQb6HDtZFO5NsSN3PnMnSywPe7kXl/469\nuQRYXrseqyOVIi6WjhvXkyWVKVE5CBz+S8wXHfKph+9YOyUcJeAVMijp9wrjBlMc\noSzOGu79oM7tpMSq/Xo6ePJ/glNOwZR+OKrg92Qp9BGTKDNwGrxuxP/9KwWtGLNf\nOMTtIkxtC3ubhxL3lBxOd7l+Bmum0UJV2f8ogkCgvTpIz05jMoyU8qWl6kkWNQlY\nDropXWaOfy7Lac+G4qlfSgsCAwEAAQ==\n-----END PUBLIC KEY-----\n"},"nomadicLocations":[{"id":"https://hubzilla.example.org/locs/kaniini","type":"nomadicLocation","locationAddress":"acct:kaniini@hubzilla.example.org","locationPrimary":true,"locationDeleted":false}],"signature":{"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1"],"type":"RsaSignature2017","nonce":"6b981a2f3bdcffc20252e3b131d4a4569fd2dea9fac543e5196136302f492694","creator":"https://hubzilla.example.org/channel/kaniini/public_key_pem","created":"2018-05-19T08:19:13Z","signatureValue":"ezpT4iCIUzJSeJa/Jsf4EkgbX9enWZG/0eliLXZcvkeCX9mZabaX9LMQRViP2GSlAJBHJu+UqK5LWaoWw9pYkQQHUL+43w2DeBxQicEcPqpT46j6pHuWptfwB8YHTC2/Pb56Y/jseU37j+FW8xVmcGZk4cPqJRLQNojwJlQiFOpBEd4Cel6081W12Pep578+6xBL+h92RJsWznA1gE/NV9dkCqoAoNdiORJg68sVTm0yYxPit2D/DLwXUFeBhC47EZtY3DtAOf7rADGwbquXKug/wtEI47R4p9dJvMWERSVW9O2FmDk8deUjRR3qO1iYGce8O+uMnnBHmuTcToRUHH7mxfMdqjfbcZ9DGBjKtLPSOyVPT9rENeyX8fsksmX0XhfHsNSWkmeDaU5/Au3IY75gDewiGzmzLOpRc6GUnHHro7lMpyMuo3lLZKjNVsFZbx+sXCYwORz5GAMuwIt/iCUdrsQsF5aycqfUAZrFBPguH6DVjbMUqyLvS78sDKiWqgWVhq9VDKse+WuQaJLGBDJNF9APoA6NDMjjIBZfmkGf2mV7ubIYihoOncUjahFqxU5306cNxAcdj2uNcwkgX4BCnBe/L2YsvMHhZrupzDewWWy4fxhktyoZ7VhLSl1I7fMPytjOpb9EIvng4DHGX2t+hKfon2rCGfECPavwiTM="}} diff --git a/test/fixtures/hubzilla-follow-activity.json b/test/fixtures/hubzilla-follow-activity.json new file mode 100644 index 000000000..2fcc70029 --- /dev/null +++ b/test/fixtures/hubzilla-follow-activity.json @@ -0,0 +1,31 @@ +{ +  "type": "Follow", +  "signature": { +    "type": "RsaSignature2017", +    "signatureValue": "Kn1/UkAQGJVaXBfWLAHcnwHg8YMAUqlEaBuYLazAG+pz5hqivsyrBmPV186Xzr+B4ZLExA9+SnOoNx/GOz4hBm0kAmukNSILAsUd84tcJ2yT9zc1RKtembK4WiwOw7li0+maeDN0HaB6t+6eTqsCWmtiZpprhXD8V1GGT8yG7X24fQ9oFGn+ng7lasbcCC0988Y1eGqNe7KryxcPuQz57YkDapvtONzk8gyLTkZMV4De93MyRHq6GVjQVIgtiYabQAxrX6Q8C+4P/jQoqdWJHEe+MY5JKyNaT/hMPt2Md1ok9fZQBGHlErk22/zy8bSN19GdG09HmIysBUHRYpBLig==", +    "creator": "https://hubzilla.example.org/channel/kaniini#main-key", +    "created": "2018-02-17T13:29:31Z" +  }, +  "object": "https://localtesting.pleroma.lol/users/lain", +  "nickname": "lain", +  "id": "https://hubzilla.example.org/channel/kaniini#follows/2", +  "actor": { +    "id": "https://hubzilla.example.org/channel/kaniini" +  }, +  "@context": [ +    "https://www.w3.org/ns/activitystreams", +    "https://w3id.org/security/v1", +    { +      "toot": "http://joinmastodon.org/ns#", +      "sensitive": "as:sensitive", +      "ostatus": "http://ostatus.org#", +      "movedTo": "as:movedTo", +      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", +      "inReplyToAtomUri": "ostatus:inReplyToAtomUri", +      "conversation": "ostatus:conversation", +      "atomUri": "ostatus:atomUri", +      "Hashtag": "as:Hashtag", +      "Emoji": "toot:Emoji" +    } +  ] +} diff --git a/test/fixtures/mastodon-undo-like.json b/test/fixtures/mastodon-undo-like.json new file mode 100644 index 000000000..0cbed30ff --- /dev/null +++ b/test/fixtures/mastodon-undo-like.json @@ -0,0 +1,34 @@ +{ +  "type": "Undo", +  "signature": { +    "type": "RsaSignature2017", +    "signatureValue": "fdxMfQSMwbC6wP6sh6neS/vM5879K67yQkHTbiT5Npr5wAac0y6+o3Ij+41tN3rL6wfuGTosSBTHOtta6R4GCOOhCaCSLMZKypnp1VltCzLDoyrZELnYQIC8gpUXVmIycZbREk22qWUe/w7DAFaKK4UscBlHDzeDVcA0K3Se5Sluqi9/Zh+ldAnEzj/rSEPDjrtvf5wGNf3fHxbKSRKFt90JvKK6hS+vxKUhlRFDf6/SMETw+EhwJSNW4d10yMUakqUWsFv4Acq5LW7l+HpYMvlYY1FZhNde1+uonnCyuQDyvzkff8zwtEJmAXC4RivO/VVLa17SmqheJZfI8oluVg==", +    "creator": "http://mastodon.example.org/users/admin#main-key", +    "created": "2018-05-19T16:36:58Z" +  }, +  "object": { +    "type": "Like", +    "object": "http://localtesting.pleroma.lol/objects/eb92579d-3417-42a8-8652-2492c2d4f454", +    "id": "http://mastodon.example.org/users/admin#likes/2", +    "actor": "http://mastodon.example.org/users/admin" +  }, +  "nickname": "lain", +  "id": "http://mastodon.example.org/users/admin#likes/2/undo", +  "actor": "http://mastodon.example.org/users/admin", +  "@context": [ +    "https://www.w3.org/ns/activitystreams", +    "https://w3id.org/security/v1", +    { +      "toot": "http://joinmastodon.org/ns#", +      "sensitive": "as:sensitive", +      "ostatus": "http://ostatus.org#", +      "movedTo": "as:movedTo", +      "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", +      "inReplyToAtomUri": "ostatus:inReplyToAtomUri", +      "conversation": "ostatus:conversation", +      "atomUri": "ostatus:atomUri", +      "Hashtag": "as:Hashtag", +      "Emoji": "toot:Emoji" +    } +  ] +}
\ No newline at end of file diff --git a/test/formatter_test.exs b/test/formatter_test.exs index 2cf1f3f8e..e89b36663 100644 --- a/test/formatter_test.exs +++ b/test/formatter_test.exs @@ -78,6 +78,13 @@ defmodule Pleroma.FormatterTest do          "<a href=\"https://en.wikipedia.org/wiki/Duff's_device\">https://en.wikipedia.org/wiki/Duff's_device</a>"        assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected + +      text = "https://pleroma.com https://pleroma.com/sucks" + +      expected = +        "<a href=\"https://pleroma.com\">https://pleroma.com</a> <a href=\"https://pleroma.com/sucks\">https://pleroma.com/sucks</a>" + +      assert Formatter.add_links({[], text}) |> Formatter.finalize() == expected      end    end diff --git a/test/support/httpoison_mock.ex b/test/support/httpoison_mock.ex index 4a5a9ea85..f28557975 100644 --- a/test/support/httpoison_mock.ex +++ b/test/support/httpoison_mock.ex @@ -4,6 +4,18 @@ defmodule HTTPoisonMock do    def get(url, body \\ [], headers \\ [])    def get( +        "http://gerzilla.de/.well-known/webfinger?resource=acct:kaniini@gerzilla.de", +        [Accept: "application/xrd+xml,application/jrd+json"], +        follow_redirect: true +      ) do +    {:ok, +     %Response{ +       status_code: 200, +       body: File.read!("test/fixtures/httpoison_mock/kaniini@gerzilla.de.json") +     }} +  end + +  def get(          "http://framatube.org/.well-known/webfinger?resource=acct:framasoft@framatube.org",          [Accept: "application/xrd+xml,application/jrd+json"],          follow_redirect: true @@ -628,6 +640,18 @@ defmodule HTTPoisonMock do       }}    end +  def get( +        "https://hubzilla.example.org/channel/kaniini", +        [Accept: "application/activity+json"], +        _ +      ) do +    {:ok, +     %Response{ +       status_code: 200, +       body: File.read!("test/fixtures/httpoison_mock/kaniini@hubzilla.example.org.json") +     }} +  end +    def get("https://masto.quad.moe/users/_HellPie", [Accept: "application/activity+json"], _) do      {:ok,       %Response{ diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index c1ba626b7..9adce84b5 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -277,7 +277,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPubTest do        {:ok, like_activity, object} = ActivityPub.like(user, object)        assert object.data["like_count"] == 1 -      {:ok, object} = ActivityPub.unlike(user, object) +      {:ok, _, _, object} = ActivityPub.unlike(user, object)        assert object.data["like_count"] == 0        assert Repo.get(Activity, like_activity.id) == nil diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 1d38661eb..87fadece2 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -1,6 +1,7 @@  defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do    use Pleroma.DataCase    alias Pleroma.Web.ActivityPub.Transmogrifier +  alias Pleroma.Web.ActivityPub.Utils    alias Pleroma.Web.OStatus    alias Pleroma.Activity    alias Pleroma.User @@ -118,6 +119,23 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert User.following?(User.get_by_ap_id(data["actor"]), user)      end +    test "it works for incoming follow requests from hubzilla" do +      user = insert(:user) + +      data = +        File.read!("test/fixtures/hubzilla-follow-activity.json") +        |> Poison.decode!() +        |> Map.put("object", user.ap_id) +        |> Utils.normalize_params() + +      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + +      assert data["actor"] == "https://hubzilla.example.org/channel/kaniini" +      assert data["type"] == "Follow" +      assert data["id"] == "https://hubzilla.example.org/channel/kaniini#follows/2" +      assert User.following?(User.get_by_ap_id(data["actor"]), user) +    end +      test "it works for incoming likes" do        user = insert(:user)        {:ok, activity} = CommonAPI.post(user, %{"status" => "hello"}) @@ -135,6 +153,43 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert data["object"] == activity.data["object"]["id"]      end +    test "it returns an error for incoming unlikes wihout a like activity" do +      user = insert(:user) +      {:ok, activity} = CommonAPI.post(user, %{"status" => "leave a like pls"}) + +      data = +        File.read!("test/fixtures/mastodon-undo-like.json") +        |> Poison.decode!() +        |> Map.put("object", activity.data["object"]["id"]) + +      assert Transmogrifier.handle_incoming(data) == :error +    end + +    test "it works for incoming unlikes with an existing like activity" do +      user = insert(:user) +      {:ok, activity} = CommonAPI.post(user, %{"status" => "leave a like pls"}) + +      like_data = +        File.read!("test/fixtures/mastodon-like.json") +        |> Poison.decode!() +        |> Map.put("object", activity.data["object"]["id"]) + +      {:ok, %Activity{data: like_data, local: false}} = Transmogrifier.handle_incoming(like_data) + +      data = +        File.read!("test/fixtures/mastodon-undo-like.json") +        |> Poison.decode!() +        |> Map.put("object", like_data) +        |> Map.put("actor", like_data["actor"]) + +      {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + +      assert data["actor"] == "http://mastodon.example.org/users/admin" +      assert data["type"] == "Undo" +      assert data["id"] == "http://mastodon.example.org/users/admin#likes/2/undo" +      assert data["object"]["id"] == "http://mastodon.example.org/users/admin#likes/2" +    end +      test "it works for incoming announces" do        data = File.read!("test/fixtures/mastodon-announce.json") |> Poison.decode!() @@ -490,4 +545,15 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do        assert Repo.get(WebsubClientSubscription, ws2.id)      end    end + +  describe "actor rewriting" do +    test "it fixes the actor URL property to be a proper URI" do +      data = %{ +        "url" => %{"href" => "http://example.com"} +      } + +      rewritten = Transmogrifier.maybe_fix_user_object(data) +      assert rewritten["url"] == "http://example.com" +    end +  end  end diff --git a/test/web/common_api/common_api_utils_test.exs b/test/web/common_api/common_api_utils_test.exs index 689bdd61e..23cce471f 100644 --- a/test/web/common_api/common_api_utils_test.exs +++ b/test/web/common_api/common_api_utils_test.exs @@ -1,5 +1,6 @@  defmodule Pleroma.Web.CommonAPI.UtilsTest do    alias Pleroma.Web.CommonAPI.Utils +  alias Pleroma.Builders.{UserBuilder}    use Pleroma.DataCase    test "it adds attachment links to a given text and attachment set" do @@ -15,4 +16,18 @@ defmodule Pleroma.Web.CommonAPI.UtilsTest do      assert res ==               "<br><a href=\"#{name}\" class='attachment'>Sakura Mana – Turned on by a Se…</a>"    end + +  describe "it confirms the password given is the current users password" do +    test "incorrect password given" do +      {:ok, user} = UserBuilder.insert() + +      assert Utils.confirm_current_password(user, %{"password" => ""}) == +               {:error, "Invalid password."} +    end + +    test "correct password given" do +      {:ok, user} = UserBuilder.insert() +      assert Utils.confirm_current_password(user, %{"password" => "test"}) == {:ok, user} +    end +  end  end diff --git a/test/web/mastodon_api/mastodon_api_controller_test.exs b/test/web/mastodon_api/mastodon_api_controller_test.exs index 8d79c96b1..435462769 100644 --- a/test/web/mastodon_api/mastodon_api_controller_test.exs +++ b/test/web/mastodon_api/mastodon_api_controller_test.exs @@ -354,18 +354,47 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do    describe "user timelines" do      test "gets a users statuses", %{conn: conn} do -      _note = insert(:note_activity) -      note_two = insert(:note_activity) +      user_one = insert(:user) +      user_two = insert(:user) +      user_three = insert(:user) -      user = User.get_by_ap_id(note_two.data["actor"]) +      {:ok, user_three} = User.follow(user_three, user_one) -      conn = +      {:ok, activity} = CommonAPI.post(user_one, %{"status" => "HI!!!"}) + +      {:ok, direct_activity} = +        CommonAPI.post(user_one, %{ +          "status" => "Hi, @#{user_two.nickname}.", +          "visibility" => "direct" +        }) + +      {:ok, private_activity} = +        CommonAPI.post(user_one, %{"status" => "private", "visibility" => "private"}) + +      resp =          conn -        |> get("/api/v1/accounts/#{user.id}/statuses") +        |> get("/api/v1/accounts/#{user_one.id}/statuses") -      assert [%{"id" => id}] = json_response(conn, 200) +      assert [%{"id" => id}] = json_response(resp, 200) +      assert id == to_string(activity.id) + +      resp = +        conn +        |> assign(:user, user_two) +        |> get("/api/v1/accounts/#{user_one.id}/statuses") + +      assert [%{"id" => id_one}, %{"id" => id_two}] = json_response(resp, 200) +      assert id_one == to_string(direct_activity.id) +      assert id_two == to_string(activity.id) + +      resp = +        conn +        |> assign(:user, user_three) +        |> get("/api/v1/accounts/#{user_one.id}/statuses") -      assert id == to_string(note_two.id) +      assert [%{"id" => id_one}, %{"id" => id_two}] = json_response(resp, 200) +      assert id_one == to_string(private_activity.id) +      assert id_two == to_string(activity.id)      end      test "unimplemented pinned statuses feature", %{conn: conn} do diff --git a/test/web/twitter_api/representers/activity_representer_test.exs b/test/web/twitter_api/representers/activity_representer_test.exs index bb47d4409..16c6e7b0d 100644 --- a/test/web/twitter_api/representers/activity_representer_test.exs +++ b/test/web/twitter_api/representers/activity_representer_test.exs @@ -154,7 +154,8 @@ defmodule Pleroma.Web.TwitterAPI.Representers.ActivityRepresenterTest do        "tags" => ["nsfw", "content", "mentioning"],        "activity_type" => "post",        "possibly_sensitive" => true, -      "uri" => activity.data["object"]["id"] +      "uri" => activity.data["object"]["id"], +      "visibility" => "direct"      }      assert ActivityRepresenter.to_map(activity, %{ diff --git a/test/web/twitter_api/twitter_api_controller_test.exs b/test/web/twitter_api/twitter_api_controller_test.exs index 896fe246d..02aba0bc8 100644 --- a/test/web/twitter_api/twitter_api_controller_test.exs +++ b/test/web/twitter_api/twitter_api_controller_test.exs @@ -800,4 +800,31 @@ defmodule Pleroma.Web.TwitterAPI.ControllerTest do      user = Repo.get!(User, user.id)      assert user.bio == "Hello,<br>World! I<br> am a test."    end + +  describe "POST /api/pleroma/delete_account" do +    setup [:valid_user] + +    test "without credentials", %{conn: conn} do +      conn = post(conn, "/api/pleroma/delete_account") +      assert json_response(conn, 403) == %{"error" => "Invalid credentials."} +    end + +    test "with credentials and invalid password", %{conn: conn, user: current_user} do +      conn = +        conn +        |> with_credentials(current_user.nickname, "test") +        |> post("/api/pleroma/delete_account", %{"password" => "hi"}) + +      assert json_response(conn, 200) == %{"error" => "Invalid password."} +    end + +    test "with credentials and valid password", %{conn: conn, user: current_user} do +      conn = +        conn +        |> with_credentials(current_user.nickname, "test") +        |> post("/api/pleroma/delete_account", %{"password" => "test"}) + +      assert json_response(conn, 200) == %{"status" => "success"} +    end +  end  end diff --git a/test/web/twitter_api/views/activity_view_test.exs b/test/web/twitter_api/views/activity_view_test.exs index 7f2017d3c..5b2a7466b 100644 --- a/test/web/twitter_api/views/activity_view_test.exs +++ b/test/web/twitter_api/views/activity_view_test.exs @@ -18,7 +18,7 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do      user = insert(:user)      other_user = insert(:user, %{nickname: "shp"}) -    {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey @shp!"}) +    {:ok, activity} = CommonAPI.post(user, %{"status" => "Hey @shp!", "visibility" => "direct"})      result = ActivityView.render("activity.json", activity: activity) @@ -47,7 +47,8 @@ defmodule Pleroma.Web.TwitterAPI.ActivityViewTest do        "tags" => [],        "text" => "Hey @shp!",        "uri" => activity.data["object"]["id"], -      "user" => UserView.render("show.json", %{user: user}) +      "user" => UserView.render("show.json", %{user: user}), +      "visibility" => "direct"      }      assert result == expected diff --git a/test/web/web_finger/web_finger_test.exs b/test/web/web_finger/web_finger_test.exs index 69216f393..2d6ff2656 100644 --- a/test/web/web_finger/web_finger_test.exs +++ b/test/web/web_finger/web_finger_test.exs @@ -49,6 +49,14 @@ defmodule Pleroma.Web.WebFingerTest do        {:ok, _data} = WebFinger.finger(user)      end +    test "returns the ActivityPub actor URI for an ActivityPub user with the ld+json mimetype" do +      user = "kaniini@gerzilla.de" + +      {:ok, data} = WebFinger.finger(user) + +      assert data["ap_id"] == "https://gerzilla.de/channel/kaniini" +    end +      test "returns the correctly for json ostatus users" do        user = "winterdienst@gnusocial.de" | 
