Use ex_vcr for tests
Which are now offline-only ! Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
parent
1e86797e07
commit
9c65ad0170
@ -23,3 +23,6 @@ config :mobilizon, Mobilizon.Repo,
|
|||||||
types: Mobilizon.PostgresTypes
|
types: Mobilizon.PostgresTypes
|
||||||
|
|
||||||
config :mobilizon, Mobilizon.Mailer, adapter: Bamboo.TestAdapter
|
config :mobilizon, Mobilizon.Mailer, adapter: Bamboo.TestAdapter
|
||||||
|
|
||||||
|
config :exvcr,
|
||||||
|
vcr_cassette_library_dir: "test/fixtures/vcr_cassettes"
|
||||||
|
9
mix.exs
9
mix.exs
@ -16,7 +16,11 @@ defmodule Mobilizon.Mixfile do
|
|||||||
coveralls: :test,
|
coveralls: :test,
|
||||||
"coveralls.detail": :test,
|
"coveralls.detail": :test,
|
||||||
"coveralls.post": :test,
|
"coveralls.post": :test,
|
||||||
"coveralls.html": :test
|
"coveralls.html": :test,
|
||||||
|
vcr: :test,
|
||||||
|
"vcr.delete": :test,
|
||||||
|
"vcr.check": :test,
|
||||||
|
"vcr.show": :test
|
||||||
],
|
],
|
||||||
name: "Mobilizon",
|
name: "Mobilizon",
|
||||||
source_url: "https://framagit.org/tcit/mobilizon",
|
source_url: "https://framagit.org/tcit/mobilizon",
|
||||||
@ -92,7 +96,8 @@ defmodule Mobilizon.Mixfile do
|
|||||||
{:ex_doc, "~> 0.16", only: :dev, runtime: false},
|
{:ex_doc, "~> 0.16", only: :dev, runtime: false},
|
||||||
{:mix_test_watch, "~> 0.5", only: :dev, runtime: false},
|
{:mix_test_watch, "~> 0.5", only: :dev, runtime: false},
|
||||||
{:ex_unit_notifier, "~> 0.1", only: :test},
|
{:ex_unit_notifier, "~> 0.1", only: :test},
|
||||||
{:dialyxir, "~> 1.0.0-rc.4", only: [:dev], runtime: false}
|
{:dialyxir, "~> 1.0.0-rc.4", only: [:dev], runtime: false},
|
||||||
|
{:exvcr, "~> 0.10", only: :test}
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
3
mix.lock
3
mix.lock
@ -34,9 +34,11 @@
|
|||||||
"ex_ical": {:hex, :ex_ical, "0.2.0", "4b928b554614704016cc0c9ee226eb854da9327a1cc460457621ceacb1ac29a6", [:mix], [{:timex, "~> 3.1", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm"},
|
"ex_ical": {:hex, :ex_ical, "0.2.0", "4b928b554614704016cc0c9ee226eb854da9327a1cc460457621ceacb1ac29a6", [:mix], [{:timex, "~> 3.1", [hex: :timex, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
"ex_machina": {:hex, :ex_machina, "2.2.2", "d84217a6fb7840ff771d2561b8aa6d74a0d8968e4b10ecc0d7e9890dc8fb1c6a", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm"},
|
"ex_machina": {:hex, :ex_machina, "2.2.2", "d84217a6fb7840ff771d2561b8aa6d74a0d8968e4b10ecc0d7e9890dc8fb1c6a", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm"},
|
||||||
"ex_unit_notifier": {:hex, :ex_unit_notifier, "0.1.4", "36a2dcab829f506e01bf17816590680dd1474407926d43e64c1263e627c364b8", [:mix], [], "hexpm"},
|
"ex_unit_notifier": {:hex, :ex_unit_notifier, "0.1.4", "36a2dcab829f506e01bf17816590680dd1474407926d43e64c1263e627c364b8", [:mix], [], "hexpm"},
|
||||||
|
"exactor": {:hex, :exactor, "2.2.4", "5efb4ddeb2c48d9a1d7c9b465a6fffdd82300eb9618ece5d34c3334d5d7245b1", [:mix], [], "hexpm"},
|
||||||
"excoveralls": {:hex, :excoveralls, "0.9.2", "299ea4903be7cb2959af0f919d258af116736ca8d507f86c12ef2184698e21a0", [:mix], [{:hackney, ">= 0.12.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"},
|
"excoveralls": {:hex, :excoveralls, "0.9.2", "299ea4903be7cb2959af0f919d258af116736ca8d507f86c12ef2184698e21a0", [:mix], [{:hackney, ">= 0.12.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
"exgravatar": {:hex, :exgravatar, "2.0.1", "66d595c7d63dd6bbac442c5542a724375ae29144059c6fe093e61553850aace4", [:mix], [], "hexpm"},
|
"exgravatar": {:hex, :exgravatar, "2.0.1", "66d595c7d63dd6bbac442c5542a724375ae29144059c6fe093e61553850aace4", [:mix], [], "hexpm"},
|
||||||
"exjsx": {:hex, :exjsx, "4.0.0", "60548841e0212df401e38e63c0078ec57b33e7ea49b032c796ccad8cde794b5c", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, repo: "hexpm", optional: false]}], "hexpm"},
|
"exjsx": {:hex, :exjsx, "4.0.0", "60548841e0212df401e38e63c0078ec57b33e7ea49b032c796ccad8cde794b5c", [:mix], [{:jsx, "~> 2.8.0", [hex: :jsx, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
|
"exvcr": {:hex, :exvcr, "0.10.3", "1ae3b97560430acfa88ebc737c85b2b7a9dbacd8a2b26789a19718b51ae3522c", [:mix], [{:exactor, "~> 2.2", [hex: :exactor, repo: "hexpm", optional: false]}, {:exjsx, "~> 4.0", [hex: :exjsx, repo: "hexpm", optional: false]}, {:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: true]}, {:httpotion, "~> 3.1", [hex: :httpotion, repo: "hexpm", optional: true]}, {:ibrowse, "~> 4.4", [hex: :ibrowse, repo: "hexpm", optional: true]}, {:meck, "~> 0.8", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
"file_system": {:hex, :file_system, "0.2.6", "fd4dc3af89b9ab1dc8ccbcc214a0e60c41f34be251d9307920748a14bf41f1d3", [:mix], [], "hexpm"},
|
"file_system": {:hex, :file_system, "0.2.6", "fd4dc3af89b9ab1dc8ccbcc214a0e60c41f34be251d9307920748a14bf41f1d3", [:mix], [], "hexpm"},
|
||||||
"gen_smtp": {:hex, :gen_smtp, "0.12.0", "97d44903f5ca18ca85cb39aee7d9c77e98d79804bbdef56078adcf905cb2ef00", [:rebar3], [], "hexpm"},
|
"gen_smtp": {:hex, :gen_smtp, "0.12.0", "97d44903f5ca18ca85cb39aee7d9c77e98d79804bbdef56078adcf905cb2ef00", [:rebar3], [], "hexpm"},
|
||||||
"geo": {:hex, :geo, "3.0.0", "bb1e9baac6031c5bbddcde4937af1c1ab1cbfbbe2f7870038fdfc93a9cad4359", [:mix], [], "hexpm"},
|
"geo": {:hex, :geo, "3.0.0", "bb1e9baac6031c5bbddcde4937af1c1ab1cbfbbe2f7870038fdfc93a9cad4359", [:mix], [], "hexpm"},
|
||||||
@ -58,6 +60,7 @@
|
|||||||
"littlefinger": {:hex, :littlefinger, "0.1.0", "5d3720bebd65d6a2051c31ca45f28b2d452d25aeeb8adb0a8f87013868bb0e7e", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:poison, "~> 3.1", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm"},
|
"littlefinger": {:hex, :littlefinger, "0.1.0", "5d3720bebd65d6a2051c31ca45f28b2d452d25aeeb8adb0a8f87013868bb0e7e", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:poison, "~> 3.1", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
"makeup": {:hex, :makeup, "0.5.5", "9e08dfc45280c5684d771ad58159f718a7b5788596099bdfb0284597d368a882", [:mix], [{:nimble_parsec, "~> 0.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm"},
|
"makeup": {:hex, :makeup, "0.5.5", "9e08dfc45280c5684d771ad58159f718a7b5788596099bdfb0284597d368a882", [:mix], [{:nimble_parsec, "~> 0.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
"makeup_elixir": {:hex, :makeup_elixir, "0.10.0", "0f09c2ddf352887a956d84f8f7e702111122ca32fbbc84c2f0569b8b65cbf7fa", [:mix], [{:makeup, "~> 0.5.5", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm"},
|
"makeup_elixir": {:hex, :makeup_elixir, "0.10.0", "0f09c2ddf352887a956d84f8f7e702111122ca32fbbc84c2f0569b8b65cbf7fa", [:mix], [{:makeup, "~> 0.5.5", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm"},
|
||||||
|
"meck": {:hex, :meck, "0.8.12", "1f7b1a9f5d12c511848fec26bbefd09a21e1432eadb8982d9a8aceb9891a3cf2", [:rebar3], [], "hexpm"},
|
||||||
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm"},
|
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm"},
|
||||||
"mime": {:hex, :mime, "1.3.0", "5e8d45a39e95c650900d03f897fbf99ae04f60ab1daa4a34c7a20a5151b7a5fe", [:mix], [], "hexpm"},
|
"mime": {:hex, :mime, "1.3.0", "5e8d45a39e95c650900d03f897fbf99ae04f60ab1daa4a34c7a20a5151b7a5fe", [:mix], [], "hexpm"},
|
||||||
"mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [:rebar3], [], "hexpm"},
|
"mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [:rebar3], [], "hexpm"},
|
||||||
|
40
test/fixtures/vcr_cassettes/activity_pub/fetch_framapiaf.org_users_tcit.json
vendored
Normal file
40
test/fixtures/vcr_cassettes/activity_pub/fetch_framapiaf.org_users_tcit.json
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"request": {
|
||||||
|
"body": "",
|
||||||
|
"headers": {
|
||||||
|
"Accept": "application/activity+json"
|
||||||
|
},
|
||||||
|
"method": "get",
|
||||||
|
"options": {
|
||||||
|
"follow_redirect": "true"
|
||||||
|
},
|
||||||
|
"request_body": "",
|
||||||
|
"url": "https://framapiaf.org/users/tcit"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"binary": false,
|
||||||
|
"body": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/v1\",{\"manuallyApprovesFollowers\":\"as:manuallyApprovesFollowers\",\"sensitive\":\"as:sensitive\",\"movedTo\":{\"@id\":\"as:movedTo\",\"@type\":\"@id\"},\"Hashtag\":\"as:Hashtag\",\"ostatus\":\"http://ostatus.org#\",\"atomUri\":\"ostatus:atomUri\",\"inReplyToAtomUri\":\"ostatus:inReplyToAtomUri\",\"conversation\":\"ostatus:conversation\",\"toot\":\"http://joinmastodon.org/ns#\",\"Emoji\":\"toot:Emoji\",\"focalPoint\":{\"@container\":\"@list\",\"@id\":\"toot:focalPoint\"},\"featured\":{\"@id\":\"toot:featured\",\"@type\":\"@id\"},\"schema\":\"http://schema.org#\",\"PropertyValue\":\"schema:PropertyValue\",\"value\":\"schema:value\"}],\"id\":\"https://framapiaf.org/users/tcit\",\"type\":\"Person\",\"following\":\"https://framapiaf.org/users/tcit/following\",\"followers\":\"https://framapiaf.org/users/tcit/followers\",\"inbox\":\"https://framapiaf.org/users/tcit/inbox\",\"outbox\":\"https://framapiaf.org/users/tcit/outbox\",\"featured\":\"https://framapiaf.org/users/tcit/collections/featured\",\"preferredUsername\":\"tcit\",\"name\":\"💼 Thomas Citharel\",\"summary\":\"\\u003cp\\u003e[Professionnal account] See \\u003cspan class=\\\"h-card\\\"\\u003e\\u003ca href=\\\"https://social.tcit.fr/@tcit\\\" class=\\\"u-url mention\\\"\\u003e@\\u003cspan\\u003etcit\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/span\\u003e for personnal stuff. At frama doing framathings.\\u003c/p\\u003e\",\"url\":\"https://framapiaf.org/@tcit\",\"manuallyApprovesFollowers\":false,\"publicKey\":{\"id\":\"https://framapiaf.org/users/tcit#main-key\",\"owner\":\"https://framapiaf.org/users/tcit\",\"publicKeyPem\":\"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApscVCt06lrIiB5jT6Kqk\\nZZwPVoPkhR7HzoTGb8rnklZuOyP4goHIuBDnurklztkmDCaM7DbsUWAPgRVtwWFE\\nWuQrOenb7BPRe/m99pJfUTkBQU3IeuRMD/5Fc3OTIhHQOltTSiB900srCUxjysfw\\nnV5JFciCz8YAXTNJZD34qyv8DbtC/pCJM7wMd9Hl3ohxSPETa6CJUaTdlNwlYJa2\\nMOMCj6/7Iv5oAg14FT9lwqS5lF7jPHk9Z7PNc2wPmNVgIYA2n9d5k7JY8TdM8iu4\\nHLnIbJuqDd1uitlYgy1qsdsxjv4U2Y7Nytc+3ZKHtGsCzUltYL5kC7uWrFpGoWo1\\n0QIDAQAB\\n-----END PUBLIC KEY-----\\n\"},\"tag\":[],\"attachment\":[{\"type\":\"PropertyValue\",\"name\":\"Personnal account\",\"value\":\"\\u003cspan class=\\\"h-card\\\"\\u003e\\u003ca href=\\\"https://social.tcit.fr/@tcit\\\" class=\\\"u-url mention\\\"\\u003e@\\u003cspan\\u003etcit\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/span\\u003e\"},{\"type\":\"PropertyValue\",\"name\":\"Work\",\"value\":\"\\u003cspan class=\\\"h-card\\\"\\u003e\\u003ca href=\\\"https://framapiaf.org/@Framasoft\\\" class=\\\"u-url mention\\\"\\u003e@\\u003cspan\\u003eFramasoft\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/span\\u003e\"},{\"type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Nantes, France\"}],\"endpoints\":{\"sharedInbox\":\"https://framapiaf.org/inbox\"},\"icon\":{\"type\":\"Image\",\"mediaType\":\"image/jpeg\",\"url\":\"https://framapiaf.org/system/accounts/avatars/000/000/001/original/da0cad7ffd20eb61.jpg?1491844231\"},\"image\":{\"type\":\"Image\",\"mediaType\":\"image/jpeg\",\"url\":\"https://framapiaf.org/system/accounts/headers/000/000/001/original/198d058b3086d82d.jpg?1491844231\"}}",
|
||||||
|
"headers": {
|
||||||
|
"Date": "Tue, 13 Nov 2018 11:00:23 GMT",
|
||||||
|
"Content-Type": "application/activity+json; charset=utf-8",
|
||||||
|
"Transfer-Encoding": "chunked",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"Server": "Mastodon",
|
||||||
|
"X-Frame-Options": "DENY",
|
||||||
|
"X-Content-Type-Options": "nosniff",
|
||||||
|
"X-XSS-Protection": "1; mode=block",
|
||||||
|
"Link": "<https://framapiaf.org/.well-known/webfinger?resource=acct%3Atcit%40framapiaf.org>; rel=\"lrdd\"; type=\"application/xrd+xml\", <https://framapiaf.org/users/tcit.atom>; rel=\"alternate\"; type=\"application/atom+xml\", <https://framapiaf.org/users/tcit>; rel=\"alternate\"; type=\"application/activity+json\"",
|
||||||
|
"Vary": "Accept,Accept-Encoding",
|
||||||
|
"Cache-Control": "max-age=180, public",
|
||||||
|
"ETag": "W/\"473bf1a80cea53496b5f1e968123a01b\"",
|
||||||
|
"X-Request-Id": "e5d89c8d-2052-4f72-8e2b-0192456a0c67",
|
||||||
|
"X-Runtime": "0.004232",
|
||||||
|
"Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload",
|
||||||
|
"Referrer-Policy": "same-origin"
|
||||||
|
},
|
||||||
|
"status_code": 200,
|
||||||
|
"type": "ok"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
78
test/fixtures/vcr_cassettes/activity_pub/fetch_social_tcit_fr_status.json
vendored
Normal file
78
test/fixtures/vcr_cassettes/activity_pub/fetch_social_tcit_fr_status.json
vendored
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"request": {
|
||||||
|
"body": "",
|
||||||
|
"headers": {
|
||||||
|
"Accept": "application/activity+json"
|
||||||
|
},
|
||||||
|
"method": "get",
|
||||||
|
"options": {
|
||||||
|
"follow_redirect": "true",
|
||||||
|
"recv_timeout": 20000,
|
||||||
|
"connect_timeout": 10000
|
||||||
|
},
|
||||||
|
"request_body": "",
|
||||||
|
"url": "https://social.tcit.fr/users/tcit/statuses/99908779444618462"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"binary": false,
|
||||||
|
"body": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/v1\",{\"manuallyApprovesFollowers\":\"as:manuallyApprovesFollowers\",\"sensitive\":\"as:sensitive\",\"movedTo\":{\"@id\":\"as:movedTo\",\"@type\":\"@id\"},\"Hashtag\":\"as:Hashtag\",\"ostatus\":\"http://ostatus.org#\",\"atomUri\":\"ostatus:atomUri\",\"inReplyToAtomUri\":\"ostatus:inReplyToAtomUri\",\"conversation\":\"ostatus:conversation\",\"toot\":\"http://joinmastodon.org/ns#\",\"Emoji\":\"toot:Emoji\",\"focalPoint\":{\"@container\":\"@list\",\"@id\":\"toot:focalPoint\"},\"featured\":{\"@id\":\"toot:featured\",\"@type\":\"@id\"},\"schema\":\"http://schema.org#\",\"PropertyValue\":\"schema:PropertyValue\",\"value\":\"schema:value\"}],\"id\":\"https://social.tcit.fr/users/tcit/statuses/99908779444618462\",\"type\":\"Note\",\"summary\":null,\"inReplyTo\":null,\"published\":\"2018-04-23T12:36:31Z\",\"url\":\"https://social.tcit.fr/@tcit/99908779444618462\",\"attributedTo\":\"https://social.tcit.fr/users/tcit\",\"to\":[\"https://www.w3.org/ns/activitystreams#Public\"],\"cc\":[\"https://social.tcit.fr/users/tcit/followers\"],\"sensitive\":false,\"atomUri\":\"https://social.tcit.fr/users/tcit/statuses/99908779444618462\",\"inReplyToAtomUri\":null,\"conversation\":\"tag:social.tcit.fr,2018-04-23:objectId=1769180:objectType=Conversation\",\"content\":\"\\u003cp\\u003eRimini - Les Wampas\\u003cbr /\\u003e\\u003ca href=\\\"https://combine.fm/spotify/track/5xo1GjsebrOd1iUVoJ6SEK\\\" rel=\\\"nofollow noopener\\\" target=\\\"_blank\\\"\\u003e\\u003cspan class=\\\"invisible\\\"\\u003ehttps://\\u003c/span\\u003e\\u003cspan class=\\\"ellipsis\\\"\\u003ecombine.fm/spotify/track/5xo1G\\u003c/span\\u003e\\u003cspan class=\\\"invisible\\\"\\u003ejsebrOd1iUVoJ6SEK\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/p\\u003e\",\"contentMap\":{\"fr\":\"\\u003cp\\u003eRimini - Les Wampas\\u003cbr /\\u003e\\u003ca href=\\\"https://combine.fm/spotify/track/5xo1GjsebrOd1iUVoJ6SEK\\\" rel=\\\"nofollow noopener\\\" target=\\\"_blank\\\"\\u003e\\u003cspan class=\\\"invisible\\\"\\u003ehttps://\\u003c/span\\u003e\\u003cspan class=\\\"ellipsis\\\"\\u003ecombine.fm/spotify/track/5xo1G\\u003c/span\\u003e\\u003cspan class=\\\"invisible\\\"\\u003ejsebrOd1iUVoJ6SEK\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/p\\u003e\"},\"attachment\":[],\"tag\":[]}",
|
||||||
|
"headers": {
|
||||||
|
"Date": "Tue, 13 Nov 2018 11:02:32 GMT",
|
||||||
|
"Content-Type": "application/activity+json; charset=utf-8",
|
||||||
|
"Transfer-Encoding": "chunked",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"Server": "Mastodon",
|
||||||
|
"X-Frame-Options": "DENY",
|
||||||
|
"X-Content-Type-Options": "nosniff",
|
||||||
|
"X-XSS-Protection": "1; mode=block",
|
||||||
|
"Link": "<https://social.tcit.fr/users/tcit/updates/9225.atom>; rel=\"alternate\"; type=\"application/atom+xml\", <https://social.tcit.fr/users/tcit/statuses/99908779444618462>; rel=\"alternate\"; type=\"application/activity+json\"",
|
||||||
|
"Vary": "Accept,Accept-Encoding",
|
||||||
|
"Cache-Control": "max-age=180, public",
|
||||||
|
"ETag": "W/\"4f1620f67825ded8c3ebde01dc48e44f\"",
|
||||||
|
"X-Request-Id": "6e8e4d12-8396-445e-909c-81dab9797449",
|
||||||
|
"X-Runtime": "0.057592",
|
||||||
|
"X-Cached": "MISS"
|
||||||
|
},
|
||||||
|
"status_code": 200,
|
||||||
|
"type": "ok"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"request": {
|
||||||
|
"body": "",
|
||||||
|
"headers": {
|
||||||
|
"Accept": "application/activity+json"
|
||||||
|
},
|
||||||
|
"method": "get",
|
||||||
|
"options": {
|
||||||
|
"follow_redirect": "true"
|
||||||
|
},
|
||||||
|
"request_body": "",
|
||||||
|
"url": "https://social.tcit.fr/users/tcit"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"binary": false,
|
||||||
|
"body": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/v1\",{\"manuallyApprovesFollowers\":\"as:manuallyApprovesFollowers\",\"sensitive\":\"as:sensitive\",\"movedTo\":{\"@id\":\"as:movedTo\",\"@type\":\"@id\"},\"Hashtag\":\"as:Hashtag\",\"ostatus\":\"http://ostatus.org#\",\"atomUri\":\"ostatus:atomUri\",\"inReplyToAtomUri\":\"ostatus:inReplyToAtomUri\",\"conversation\":\"ostatus:conversation\",\"toot\":\"http://joinmastodon.org/ns#\",\"Emoji\":\"toot:Emoji\",\"focalPoint\":{\"@container\":\"@list\",\"@id\":\"toot:focalPoint\"},\"featured\":{\"@id\":\"toot:featured\",\"@type\":\"@id\"},\"schema\":\"http://schema.org#\",\"PropertyValue\":\"schema:PropertyValue\",\"value\":\"schema:value\"}],\"id\":\"https://social.tcit.fr/users/tcit\",\"type\":\"Person\",\"following\":\"https://social.tcit.fr/users/tcit/following\",\"followers\":\"https://social.tcit.fr/users/tcit/followers\",\"inbox\":\"https://social.tcit.fr/users/tcit/inbox\",\"outbox\":\"https://social.tcit.fr/users/tcit/outbox\",\"featured\":\"https://social.tcit.fr/users/tcit/collections/featured\",\"preferredUsername\":\"tcit\",\"name\":\"🦄 Thomas Citharel\",\"summary\":\"\\u003cp\\u003eHoping to make people\\u0026apos;s life better with free software at \\u003cspan class=\\\"h-card\\\"\\u003e\\u003ca href=\\\"https://framapiaf.org/@Framasoft\\\" class=\\\"u-url mention\\\"\\u003e@\\u003cspan\\u003eFramasoft\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/span\\u003e.\\u003c/p\\u003e\",\"url\":\"https://social.tcit.fr/@tcit\",\"manuallyApprovesFollowers\":false,\"publicKey\":{\"id\":\"https://social.tcit.fr/users/tcit#main-key\",\"owner\":\"https://social.tcit.fr/users/tcit\",\"publicKeyPem\":\"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApXwYMUdFg3XUd+bGsh8C\\nyiMRGpRGAWuCdM5pDWx5uM4pW2pM3xbHbcI21j9h8BmlAiPg6hbZD73KGly2N8Rt\\n5iIS0I+l6i8kA1JCCdlAaDTRd41RKMggZDoQvjVZQtsyE1VzMeU2kbqqTFN6ew7H\\nvbd6O0NhixoKoZ5f3jwuBDZoT0p1TAcaMdmG8oqHD97isizkDnRn8cOBA6wtI+xb\\n5xP2zxZMsLpTDZLiKU8XcPKZCw4OfQfmDmKkHtrFb77jCAQj/s/FxjVnvxRwmfhN\\nnWy0D+LUV/g63nHh/b5zXIeV92QZLvDYbgbezmzUzv9UeA1s70GGbaDqCIy85gw9\\n+wIDAQAB\\n-----END PUBLIC KEY-----\\n\"},\"tag\":[],\"attachment\":[{\"type\":\"PropertyValue\",\"name\":\"Works at\",\"value\":\"\\u003cspan class=\\\"h-card\\\"\\u003e\\u003ca href=\\\"https://framapiaf.org/@Framasoft\\\" class=\\\"u-url mention\\\"\\u003e@\\u003cspan\\u003eFramasoft\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/span\\u003e\"},{\"type\":\"PropertyValue\",\"name\":\"Pronouns\",\"value\":\"He/Him\"},{\"type\":\"PropertyValue\",\"name\":\"Work Account\",\"value\":\"\\u003cspan class=\\\"h-card\\\"\\u003e\\u003ca href=\\\"https://framapiaf.org/@tcit\\\" class=\\\"u-url mention\\\"\\u003e@\\u003cspan\\u003etcit\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/span\\u003e\"},{\"type\":\"PropertyValue\",\"name\":\"Pixelfed Account\",\"value\":\"@tcit@pix.tcit.fr\"}],\"endpoints\":{\"sharedInbox\":\"https://social.tcit.fr/inbox\"},\"icon\":{\"type\":\"Image\",\"mediaType\":\"image/jpeg\",\"url\":\"https://media.social.tcit.fr/mastodontcit/accounts/avatars/000/000/001/original/a28c50ce5f2b13fd.jpg\"},\"image\":{\"type\":\"Image\",\"mediaType\":\"image/jpeg\",\"url\":\"https://media.social.tcit.fr/mastodontcit/accounts/headers/000/000/001/original/4d1ab77c20265ee9.jpg\"}}",
|
||||||
|
"headers": {
|
||||||
|
"Date": "Tue, 13 Nov 2018 11:02:32 GMT",
|
||||||
|
"Content-Type": "application/activity+json; charset=utf-8",
|
||||||
|
"Transfer-Encoding": "chunked",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"Server": "Mastodon",
|
||||||
|
"X-Frame-Options": "DENY",
|
||||||
|
"X-Content-Type-Options": "nosniff",
|
||||||
|
"X-XSS-Protection": "1; mode=block",
|
||||||
|
"Link": "<https://social.tcit.fr/.well-known/webfinger?resource=acct%3Atcit%40social.tcit.fr>; rel=\"lrdd\"; type=\"application/xrd+xml\", <https://social.tcit.fr/users/tcit.atom>; rel=\"alternate\"; type=\"application/atom+xml\", <https://social.tcit.fr/users/tcit>; rel=\"alternate\"; type=\"application/activity+json\"",
|
||||||
|
"Vary": "Accept,Accept-Encoding",
|
||||||
|
"Cache-Control": "max-age=180, public",
|
||||||
|
"ETag": "W/\"928f8a090d8c180ccc82fc1699f6c2a5\"",
|
||||||
|
"X-Request-Id": "9520c2ef-0089-4fb8-a6b4-95f3e217487c",
|
||||||
|
"X-Runtime": "0.043715",
|
||||||
|
"X-Cached": "MISS"
|
||||||
|
},
|
||||||
|
"status_code": 200,
|
||||||
|
"type": "ok"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
77
test/fixtures/vcr_cassettes/activity_pub/fetch_tcit@framapiaf.org.json
vendored
Normal file
77
test/fixtures/vcr_cassettes/activity_pub/fetch_tcit@framapiaf.org.json
vendored
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"request": {
|
||||||
|
"body": "",
|
||||||
|
"headers": {
|
||||||
|
"Accept": "application/json, application/activity+json, application/jrd+json"
|
||||||
|
},
|
||||||
|
"method": "get",
|
||||||
|
"options": {
|
||||||
|
"follow_redirect": "true"
|
||||||
|
},
|
||||||
|
"request_body": "",
|
||||||
|
"url": "http://framapiaf.org/.well-known/webfinger?resource=acct:tcit@framapiaf.org"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"binary": false,
|
||||||
|
"body": "{\"subject\":\"acct:tcit@framapiaf.org\",\"aliases\":[\"https://framapiaf.org/@tcit\",\"https://framapiaf.org/users/tcit\"],\"links\":[{\"rel\":\"http://webfinger.net/rel/profile-page\",\"type\":\"text/html\",\"href\":\"https://framapiaf.org/@tcit\"},{\"rel\":\"http://schemas.google.com/g/2010#updates-from\",\"type\":\"application/atom+xml\",\"href\":\"https://framapiaf.org/users/tcit.atom\"},{\"rel\":\"self\",\"type\":\"application/activity+json\",\"href\":\"https://framapiaf.org/users/tcit\"},{\"rel\":\"salmon\",\"href\":\"https://framapiaf.org/api/salmon/1\"},{\"rel\":\"magic-public-key\",\"href\":\"data:application/magic-public-key,RSA.pscVCt06lrIiB5jT6KqkZZwPVoPkhR7HzoTGb8rnklZuOyP4goHIuBDnurklztkmDCaM7DbsUWAPgRVtwWFEWuQrOenb7BPRe_m99pJfUTkBQU3IeuRMD_5Fc3OTIhHQOltTSiB900srCUxjysfwnV5JFciCz8YAXTNJZD34qyv8DbtC_pCJM7wMd9Hl3ohxSPETa6CJUaTdlNwlYJa2MOMCj6_7Iv5oAg14FT9lwqS5lF7jPHk9Z7PNc2wPmNVgIYA2n9d5k7JY8TdM8iu4HLnIbJuqDd1uitlYgy1qsdsxjv4U2Y7Nytc-3ZKHtGsCzUltYL5kC7uWrFpGoWo10Q==.AQAB\"},{\"rel\":\"http://ostatus.org/schema/1.0/subscribe\",\"template\":\"https://framapiaf.org/authorize_interaction?uri={uri}\"}]}",
|
||||||
|
"headers": {
|
||||||
|
"Date": "Tue, 13 Nov 2018 11:00:24 GMT",
|
||||||
|
"Content-Type": "application/jrd+json; charset=utf-8",
|
||||||
|
"Transfer-Encoding": "chunked",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"Server": "Mastodon",
|
||||||
|
"X-Frame-Options": "DENY",
|
||||||
|
"X-Content-Type-Options": "nosniff",
|
||||||
|
"X-XSS-Protection": "1; mode=block",
|
||||||
|
"Vary": "Accept, Accept-Encoding, Origin",
|
||||||
|
"Cache-Control": "max-age=259200, public",
|
||||||
|
"ETag": "W/\"a699e76c8a4a88095aa2f31146a04969\"",
|
||||||
|
"X-Request-Id": "dfd7b0bd-7757-4d16-9a9c-db40f973df9b",
|
||||||
|
"X-Runtime": "0.003948",
|
||||||
|
"Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload",
|
||||||
|
"Referrer-Policy": "same-origin"
|
||||||
|
},
|
||||||
|
"status_code": 200,
|
||||||
|
"type": "ok"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"request": {
|
||||||
|
"body": "",
|
||||||
|
"headers": {
|
||||||
|
"Accept": "application/activity+json"
|
||||||
|
},
|
||||||
|
"method": "get",
|
||||||
|
"options": {
|
||||||
|
"follow_redirect": "true"
|
||||||
|
},
|
||||||
|
"request_body": "",
|
||||||
|
"url": "https://framapiaf.org/users/tcit"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"binary": false,
|
||||||
|
"body": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/v1\",{\"manuallyApprovesFollowers\":\"as:manuallyApprovesFollowers\",\"sensitive\":\"as:sensitive\",\"movedTo\":{\"@id\":\"as:movedTo\",\"@type\":\"@id\"},\"Hashtag\":\"as:Hashtag\",\"ostatus\":\"http://ostatus.org#\",\"atomUri\":\"ostatus:atomUri\",\"inReplyToAtomUri\":\"ostatus:inReplyToAtomUri\",\"conversation\":\"ostatus:conversation\",\"toot\":\"http://joinmastodon.org/ns#\",\"Emoji\":\"toot:Emoji\",\"focalPoint\":{\"@container\":\"@list\",\"@id\":\"toot:focalPoint\"},\"featured\":{\"@id\":\"toot:featured\",\"@type\":\"@id\"},\"schema\":\"http://schema.org#\",\"PropertyValue\":\"schema:PropertyValue\",\"value\":\"schema:value\"}],\"id\":\"https://framapiaf.org/users/tcit\",\"type\":\"Person\",\"following\":\"https://framapiaf.org/users/tcit/following\",\"followers\":\"https://framapiaf.org/users/tcit/followers\",\"inbox\":\"https://framapiaf.org/users/tcit/inbox\",\"outbox\":\"https://framapiaf.org/users/tcit/outbox\",\"featured\":\"https://framapiaf.org/users/tcit/collections/featured\",\"preferredUsername\":\"tcit\",\"name\":\"💼 Thomas Citharel\",\"summary\":\"\\u003cp\\u003e[Professionnal account] See \\u003cspan class=\\\"h-card\\\"\\u003e\\u003ca href=\\\"https://social.tcit.fr/@tcit\\\" class=\\\"u-url mention\\\"\\u003e@\\u003cspan\\u003etcit\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/span\\u003e for personnal stuff. At frama doing framathings.\\u003c/p\\u003e\",\"url\":\"https://framapiaf.org/@tcit\",\"manuallyApprovesFollowers\":false,\"publicKey\":{\"id\":\"https://framapiaf.org/users/tcit#main-key\",\"owner\":\"https://framapiaf.org/users/tcit\",\"publicKeyPem\":\"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApscVCt06lrIiB5jT6Kqk\\nZZwPVoPkhR7HzoTGb8rnklZuOyP4goHIuBDnurklztkmDCaM7DbsUWAPgRVtwWFE\\nWuQrOenb7BPRe/m99pJfUTkBQU3IeuRMD/5Fc3OTIhHQOltTSiB900srCUxjysfw\\nnV5JFciCz8YAXTNJZD34qyv8DbtC/pCJM7wMd9Hl3ohxSPETa6CJUaTdlNwlYJa2\\nMOMCj6/7Iv5oAg14FT9lwqS5lF7jPHk9Z7PNc2wPmNVgIYA2n9d5k7JY8TdM8iu4\\nHLnIbJuqDd1uitlYgy1qsdsxjv4U2Y7Nytc+3ZKHtGsCzUltYL5kC7uWrFpGoWo1\\n0QIDAQAB\\n-----END PUBLIC KEY-----\\n\"},\"tag\":[],\"attachment\":[{\"type\":\"PropertyValue\",\"name\":\"Personnal account\",\"value\":\"\\u003cspan class=\\\"h-card\\\"\\u003e\\u003ca href=\\\"https://social.tcit.fr/@tcit\\\" class=\\\"u-url mention\\\"\\u003e@\\u003cspan\\u003etcit\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/span\\u003e\"},{\"type\":\"PropertyValue\",\"name\":\"Work\",\"value\":\"\\u003cspan class=\\\"h-card\\\"\\u003e\\u003ca href=\\\"https://framapiaf.org/@Framasoft\\\" class=\\\"u-url mention\\\"\\u003e@\\u003cspan\\u003eFramasoft\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/span\\u003e\"},{\"type\":\"PropertyValue\",\"name\":\"Location\",\"value\":\"Nantes, France\"}],\"endpoints\":{\"sharedInbox\":\"https://framapiaf.org/inbox\"},\"icon\":{\"type\":\"Image\",\"mediaType\":\"image/jpeg\",\"url\":\"https://framapiaf.org/system/accounts/avatars/000/000/001/original/da0cad7ffd20eb61.jpg?1491844231\"},\"image\":{\"type\":\"Image\",\"mediaType\":\"image/jpeg\",\"url\":\"https://framapiaf.org/system/accounts/headers/000/000/001/original/198d058b3086d82d.jpg?1491844231\"}}",
|
||||||
|
"headers": {
|
||||||
|
"Date": "Tue, 13 Nov 2018 11:00:24 GMT",
|
||||||
|
"Content-Type": "application/activity+json; charset=utf-8",
|
||||||
|
"Transfer-Encoding": "chunked",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"Server": "Mastodon",
|
||||||
|
"X-Frame-Options": "DENY",
|
||||||
|
"X-Content-Type-Options": "nosniff",
|
||||||
|
"X-XSS-Protection": "1; mode=block",
|
||||||
|
"Link": "<https://framapiaf.org/.well-known/webfinger?resource=acct%3Atcit%40framapiaf.org>; rel=\"lrdd\"; type=\"application/xrd+xml\", <https://framapiaf.org/users/tcit.atom>; rel=\"alternate\"; type=\"application/atom+xml\", <https://framapiaf.org/users/tcit>; rel=\"alternate\"; type=\"application/activity+json\"",
|
||||||
|
"Vary": "Accept,Accept-Encoding",
|
||||||
|
"Cache-Control": "max-age=180, public",
|
||||||
|
"ETag": "W/\"473bf1a80cea53496b5f1e968123a01b\"",
|
||||||
|
"X-Request-Id": "6a828fd7-ac43-4a9f-b1f9-dd1a61420ea1",
|
||||||
|
"X-Runtime": "0.003956",
|
||||||
|
"Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload",
|
||||||
|
"Referrer-Policy": "same-origin"
|
||||||
|
},
|
||||||
|
"status_code": 200,
|
||||||
|
"type": "ok"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
40
test/fixtures/vcr_cassettes/activity_pub_controller/mastodon-post-activity_actor_call.json
vendored
Normal file
40
test/fixtures/vcr_cassettes/activity_pub_controller/mastodon-post-activity_actor_call.json
vendored
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"request": {
|
||||||
|
"body": "",
|
||||||
|
"headers": {
|
||||||
|
"Accept": "application/activity+json"
|
||||||
|
},
|
||||||
|
"method": "get",
|
||||||
|
"options": {
|
||||||
|
"follow_redirect": "true"
|
||||||
|
},
|
||||||
|
"request_body": "",
|
||||||
|
"url": "http://framapiaf.org/users/admin"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"binary": false,
|
||||||
|
"body": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/v1\",{\"manuallyApprovesFollowers\":\"as:manuallyApprovesFollowers\",\"sensitive\":\"as:sensitive\",\"movedTo\":{\"@id\":\"as:movedTo\",\"@type\":\"@id\"},\"Hashtag\":\"as:Hashtag\",\"ostatus\":\"http://ostatus.org#\",\"atomUri\":\"ostatus:atomUri\",\"inReplyToAtomUri\":\"ostatus:inReplyToAtomUri\",\"conversation\":\"ostatus:conversation\",\"toot\":\"http://joinmastodon.org/ns#\",\"Emoji\":\"toot:Emoji\",\"focalPoint\":{\"@container\":\"@list\",\"@id\":\"toot:focalPoint\"},\"featured\":{\"@id\":\"toot:featured\",\"@type\":\"@id\"},\"schema\":\"http://schema.org#\",\"PropertyValue\":\"schema:PropertyValue\",\"value\":\"schema:value\"}],\"id\":\"https://framapiaf.org/users/admin\",\"type\":\"Person\",\"following\":\"https://framapiaf.org/users/admin/following\",\"followers\":\"https://framapiaf.org/users/admin/followers\",\"inbox\":\"https://framapiaf.org/users/admin/inbox\",\"outbox\":\"https://framapiaf.org/users/admin/outbox\",\"featured\":\"https://framapiaf.org/users/admin/collections/featured\",\"preferredUsername\":\"admin\",\"name\":\"\",\"summary\":\"\\u003cp\\u003e\\u003c/p\\u003e\",\"url\":\"https://framapiaf.org/@admin\",\"manuallyApprovesFollowers\":false,\"publicKey\":{\"id\":\"https://framapiaf.org/users/admin#main-key\",\"owner\":\"https://framapiaf.org/users/admin\",\"publicKeyPem\":\"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyHaU/AZ5dWtSxZXkPa89\\nDUQ4z+JQHGGUG/xkGuq0v8P6qJfQqtHPBO5vH0IQJqluXWQS96gqTwjZnYevcpNA\\nveYv0K25DWszx5Ehz6JX2/sSvu2rNUcQ3YZvSjdo/Yy1u5Fuc5lLmvw8uFzXYekD\\nWovTMOnp4mIKpVEm/G/v4w8jvFEKw88h743vwaEIim88GEQItMxzGAV6zSqV1DWO\\nLxtoRsinslJYfAG46ex4YUATFveWvOUeWk5W1sEa5f3c0moaTmBM/PAAo8vLxhlw\\nJhsHihsCH+BcXKVMjW8OCqYYqISMxEifUBX63HcJt78ELHpOuc1c2eG59PomtTjQ\\nywIDAQAB\\n-----END PUBLIC KEY-----\\n\"},\"tag\":[],\"attachment\":[],\"endpoints\":{\"sharedInbox\":\"https://framapiaf.org/inbox\"}}",
|
||||||
|
"headers": {
|
||||||
|
"Date": "Tue, 13 Nov 2018 11:22:02 GMT",
|
||||||
|
"Content-Type": "application/activity+json; charset=utf-8",
|
||||||
|
"Transfer-Encoding": "chunked",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"Server": "Mastodon",
|
||||||
|
"X-Frame-Options": "DENY",
|
||||||
|
"X-Content-Type-Options": "nosniff",
|
||||||
|
"X-XSS-Protection": "1; mode=block",
|
||||||
|
"Link": "<https://framapiaf.org/.well-known/webfinger?resource=acct%3Aadmin%40framapiaf.org>; rel=\"lrdd\"; type=\"application/xrd+xml\", <https://framapiaf.org/users/admin.atom>; rel=\"alternate\"; type=\"application/atom+xml\", <https://framapiaf.org/users/admin>; rel=\"alternate\"; type=\"application/activity+json\"",
|
||||||
|
"Vary": "Accept,Accept-Encoding",
|
||||||
|
"Cache-Control": "max-age=180, public",
|
||||||
|
"ETag": "W/\"82f88eaea909e6c3f20f908ad16e4b54\"",
|
||||||
|
"X-Request-Id": "cef423e2-d143-422f-94b0-03450f70a32d",
|
||||||
|
"X-Runtime": "0.005097",
|
||||||
|
"Strict-Transport-Security": "max-age=31536000; includeSubDomains; preload",
|
||||||
|
"Referrer-Policy": "same-origin"
|
||||||
|
},
|
||||||
|
"status_code": 200,
|
||||||
|
"type": "ok"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
39
test/fixtures/vcr_cassettes/actors/remote_actor_mastodon_tcit.json
vendored
Normal file
39
test/fixtures/vcr_cassettes/actors/remote_actor_mastodon_tcit.json
vendored
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"request": {
|
||||||
|
"body": "",
|
||||||
|
"headers": {
|
||||||
|
"Accept": "application/activity+json"
|
||||||
|
},
|
||||||
|
"method": "get",
|
||||||
|
"options": {
|
||||||
|
"follow_redirect": "true"
|
||||||
|
},
|
||||||
|
"request_body": "",
|
||||||
|
"url": "https://social.tcit.fr/users/tcit"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"binary": false,
|
||||||
|
"body": "{\"@context\":[\"https://www.w3.org/ns/activitystreams\",\"https://w3id.org/security/v1\",{\"manuallyApprovesFollowers\":\"as:manuallyApprovesFollowers\",\"sensitive\":\"as:sensitive\",\"movedTo\":{\"@id\":\"as:movedTo\",\"@type\":\"@id\"},\"Hashtag\":\"as:Hashtag\",\"ostatus\":\"http://ostatus.org#\",\"atomUri\":\"ostatus:atomUri\",\"inReplyToAtomUri\":\"ostatus:inReplyToAtomUri\",\"conversation\":\"ostatus:conversation\",\"toot\":\"http://joinmastodon.org/ns#\",\"Emoji\":\"toot:Emoji\",\"focalPoint\":{\"@container\":\"@list\",\"@id\":\"toot:focalPoint\"},\"featured\":{\"@id\":\"toot:featured\",\"@type\":\"@id\"},\"schema\":\"http://schema.org#\",\"PropertyValue\":\"schema:PropertyValue\",\"value\":\"schema:value\"}],\"id\":\"https://social.tcit.fr/users/tcit\",\"type\":\"Person\",\"following\":\"https://social.tcit.fr/users/tcit/following\",\"followers\":\"https://social.tcit.fr/users/tcit/followers\",\"inbox\":\"https://social.tcit.fr/users/tcit/inbox\",\"outbox\":\"https://social.tcit.fr/users/tcit/outbox\",\"featured\":\"https://social.tcit.fr/users/tcit/collections/featured\",\"preferredUsername\":\"tcit\",\"name\":\"🦄 Thomas Citharel\",\"summary\":\"\\u003cp\\u003eHoping to make people\\u0026apos;s life better with free software at \\u003cspan class=\\\"h-card\\\"\\u003e\\u003ca href=\\\"https://framapiaf.org/@Framasoft\\\" class=\\\"u-url mention\\\"\\u003e@\\u003cspan\\u003eFramasoft\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/span\\u003e.\\u003c/p\\u003e\",\"url\":\"https://social.tcit.fr/@tcit\",\"manuallyApprovesFollowers\":false,\"publicKey\":{\"id\":\"https://social.tcit.fr/users/tcit#main-key\",\"owner\":\"https://social.tcit.fr/users/tcit\",\"publicKeyPem\":\"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApXwYMUdFg3XUd+bGsh8C\\nyiMRGpRGAWuCdM5pDWx5uM4pW2pM3xbHbcI21j9h8BmlAiPg6hbZD73KGly2N8Rt\\n5iIS0I+l6i8kA1JCCdlAaDTRd41RKMggZDoQvjVZQtsyE1VzMeU2kbqqTFN6ew7H\\nvbd6O0NhixoKoZ5f3jwuBDZoT0p1TAcaMdmG8oqHD97isizkDnRn8cOBA6wtI+xb\\n5xP2zxZMsLpTDZLiKU8XcPKZCw4OfQfmDmKkHtrFb77jCAQj/s/FxjVnvxRwmfhN\\nnWy0D+LUV/g63nHh/b5zXIeV92QZLvDYbgbezmzUzv9UeA1s70GGbaDqCIy85gw9\\n+wIDAQAB\\n-----END PUBLIC KEY-----\\n\"},\"tag\":[],\"attachment\":[{\"type\":\"PropertyValue\",\"name\":\"Works at\",\"value\":\"\\u003cspan class=\\\"h-card\\\"\\u003e\\u003ca href=\\\"https://framapiaf.org/@Framasoft\\\" class=\\\"u-url mention\\\"\\u003e@\\u003cspan\\u003eFramasoft\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/span\\u003e\"},{\"type\":\"PropertyValue\",\"name\":\"Pronouns\",\"value\":\"He/Him\"},{\"type\":\"PropertyValue\",\"name\":\"Work Account\",\"value\":\"\\u003cspan class=\\\"h-card\\\"\\u003e\\u003ca href=\\\"https://framapiaf.org/@tcit\\\" class=\\\"u-url mention\\\"\\u003e@\\u003cspan\\u003etcit\\u003c/span\\u003e\\u003c/a\\u003e\\u003c/span\\u003e\"},{\"type\":\"PropertyValue\",\"name\":\"Pixelfed Account\",\"value\":\"@tcit@pix.tcit.fr\"}],\"endpoints\":{\"sharedInbox\":\"https://social.tcit.fr/inbox\"},\"icon\":{\"type\":\"Image\",\"mediaType\":\"image/jpeg\",\"url\":\"https://media.social.tcit.fr/mastodontcit/accounts/avatars/000/000/001/original/a28c50ce5f2b13fd.jpg\"},\"image\":{\"type\":\"Image\",\"mediaType\":\"image/jpeg\",\"url\":\"https://media.social.tcit.fr/mastodontcit/accounts/headers/000/000/001/original/4d1ab77c20265ee9.jpg\"}}",
|
||||||
|
"headers": {
|
||||||
|
"Date": "Tue, 13 Nov 2018 11:21:24 GMT",
|
||||||
|
"Content-Type": "application/activity+json; charset=utf-8",
|
||||||
|
"Transfer-Encoding": "chunked",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"Server": "Mastodon",
|
||||||
|
"X-Frame-Options": "DENY",
|
||||||
|
"X-Content-Type-Options": "nosniff",
|
||||||
|
"X-XSS-Protection": "1; mode=block",
|
||||||
|
"Link": "<https://social.tcit.fr/.well-known/webfinger?resource=acct%3Atcit%40social.tcit.fr>; rel=\"lrdd\"; type=\"application/xrd+xml\", <https://social.tcit.fr/users/tcit.atom>; rel=\"alternate\"; type=\"application/atom+xml\", <https://social.tcit.fr/users/tcit>; rel=\"alternate\"; type=\"application/activity+json\"",
|
||||||
|
"Vary": "Accept,Accept-Encoding",
|
||||||
|
"Cache-Control": "max-age=180, public",
|
||||||
|
"ETag": "W/\"928f8a090d8c180ccc82fc1699f6c2a5\"",
|
||||||
|
"X-Request-Id": "ed9c4b9e-b29c-4f79-b704-3092a5d951a6",
|
||||||
|
"X-Runtime": "0.041257",
|
||||||
|
"X-Cached": "MISS"
|
||||||
|
},
|
||||||
|
"status_code": 200,
|
||||||
|
"type": "ok"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
35
test/fixtures/vcr_cassettes/webfinger/friendica.json
vendored
Normal file
35
test/fixtures/vcr_cassettes/webfinger/friendica.json
vendored
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"request": {
|
||||||
|
"body": "",
|
||||||
|
"headers": {
|
||||||
|
"Accept": "application/json, application/activity+json, application/jrd+json"
|
||||||
|
},
|
||||||
|
"method": "get",
|
||||||
|
"options": {
|
||||||
|
"follow_redirect": "true"
|
||||||
|
},
|
||||||
|
"request_body": "",
|
||||||
|
"url": "http://squeet.me/.well-known/webfinger?resource=acct:lain@squeet.me"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"binary": false,
|
||||||
|
"body": "{\"subject\":\"acct:lain@squeet.me\",\"aliases\":[\"https:\\/\\/squeet.me\\/~lain\",\"https:\\/\\/squeet.me\\/profile\\/lain\"],\"links\":[{\"rel\":\"http:\\/\\/purl.org\\/macgirvin\\/dfrn\\/1.0\",\"href\":\"https:\\/\\/squeet.me\\/profile\\/lain\"},{\"rel\":\"http:\\/\\/schemas.google.com\\/g\\/2010#updates-from\",\"type\":\"application\\/atom+xml\",\"href\":\"https:\\/\\/squeet.me\\/dfrn_poll\\/lain\"},{\"rel\":\"http:\\/\\/webfinger.net\\/rel\\/profile-page\",\"type\":\"text\\/html\",\"href\":\"https:\\/\\/squeet.me\\/profile\\/lain\"},{\"rel\":\"self\",\"type\":\"application\\/activity+json\",\"href\":\"https:\\/\\/squeet.me\\/profile\\/lain\"},{\"rel\":\"http:\\/\\/microformats.org\\/profile\\/hcard\",\"type\":\"text\\/html\",\"href\":\"https:\\/\\/squeet.me\\/hcard\\/lain\"},{\"rel\":\"http:\\/\\/portablecontacts.net\\/spec\\/1.0\",\"href\":\"https:\\/\\/squeet.me\\/poco\\/lain\"},{\"rel\":\"http:\\/\\/webfinger.net\\/rel\\/avatar\",\"type\":\"image\\/jpeg\",\"href\":\"https:\\/\\/squeet.me\\/photo\\/profile\\/301.jpg\"},{\"rel\":\"http:\\/\\/joindiaspora.com\\/seed_location\",\"type\":\"text\\/html\",\"href\":\"https:\\/\\/squeet.me\"},{\"rel\":\"salmon\",\"href\":\"https:\\/\\/squeet.me\\/salmon\\/lain\"},{\"rel\":\"http:\\/\\/salmon-protocol.org\\/ns\\/salmon-replies\",\"href\":\"https:\\/\\/squeet.me\\/salmon\\/lain\"},{\"rel\":\"http:\\/\\/salmon-protocol.org\\/ns\\/salmon-mention\",\"href\":\"https:\\/\\/squeet.me\\/salmon\\/lain\\/mention\"},{\"rel\":\"http:\\/\\/ostatus.org\\/schema\\/1.0\\/subscribe\",\"template\":\"https:\\/\\/squeet.me\\/follow?url={uri}\"},{\"rel\":\"magic-public-key\",\"href\":\"data:application\\/magic-public-key,RSA.AMwa8FUs2fWEjX0xN7yRQgegQffhBpuKNC6fa5VNSVorFjGZhRrlPMn7TQOeihlc9lBz2OsHlIedbYn2uJ7yCs0.AQAB\"},{\"rel\":\"http:\\/\\/purl.org\\/openwebauth\\/v1\",\"type\":\"application\\/x-dfrn+json\",\"href\":\"https:\\/\\/squeet.me\\/owa\"}]}",
|
||||||
|
"headers": {
|
||||||
|
"Date": "Tue, 13 Nov 2018 11:11:09 GMT",
|
||||||
|
"Server": "Apache",
|
||||||
|
"Expires": "Thu, 19 Nov 1981 08:52:00 GMT",
|
||||||
|
"Cache-Control": "no-store, no-cache, must-revalidate",
|
||||||
|
"Pragma": "no-cache",
|
||||||
|
"X-Account-Management-Status": "none",
|
||||||
|
"Access-Control-Allow-Origin": "*",
|
||||||
|
"Set-Cookie": "PHPSESSID=330arcps63iok272c5hqdsfhp3; path=/; secure; HttpOnly",
|
||||||
|
"Strict-Transport-Security": "max-age=31536000; includeSubDomains",
|
||||||
|
"Transfer-Encoding": "chunked",
|
||||||
|
"Content-Type": "application/json; charset=utf-8"
|
||||||
|
},
|
||||||
|
"status_code": 200,
|
||||||
|
"type": "ok"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
38
test/fixtures/vcr_cassettes/webfinger/mastodon.json
vendored
Normal file
38
test/fixtures/vcr_cassettes/webfinger/mastodon.json
vendored
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"request": {
|
||||||
|
"body": "",
|
||||||
|
"headers": {
|
||||||
|
"Accept": "application/json, application/activity+json, application/jrd+json"
|
||||||
|
},
|
||||||
|
"method": "get",
|
||||||
|
"options": {
|
||||||
|
"follow_redirect": "true"
|
||||||
|
},
|
||||||
|
"request_body": "",
|
||||||
|
"url": "http://social.tcit.fr/.well-known/webfinger?resource=acct:tcit@social.tcit.fr"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"binary": false,
|
||||||
|
"body": "{\"subject\":\"acct:tcit@social.tcit.fr\",\"aliases\":[\"https://social.tcit.fr/@tcit\",\"https://social.tcit.fr/users/tcit\"],\"links\":[{\"rel\":\"http://webfinger.net/rel/profile-page\",\"type\":\"text/html\",\"href\":\"https://social.tcit.fr/@tcit\"},{\"rel\":\"http://schemas.google.com/g/2010#updates-from\",\"type\":\"application/atom+xml\",\"href\":\"https://social.tcit.fr/users/tcit.atom\"},{\"rel\":\"self\",\"type\":\"application/activity+json\",\"href\":\"https://social.tcit.fr/users/tcit\"},{\"rel\":\"salmon\",\"href\":\"https://social.tcit.fr/api/salmon/1\"},{\"rel\":\"magic-public-key\",\"href\":\"data:application/magic-public-key,RSA.pXwYMUdFg3XUd-bGsh8CyiMRGpRGAWuCdM5pDWx5uM4pW2pM3xbHbcI21j9h8BmlAiPg6hbZD73KGly2N8Rt5iIS0I-l6i8kA1JCCdlAaDTRd41RKMggZDoQvjVZQtsyE1VzMeU2kbqqTFN6ew7Hvbd6O0NhixoKoZ5f3jwuBDZoT0p1TAcaMdmG8oqHD97isizkDnRn8cOBA6wtI-xb5xP2zxZMsLpTDZLiKU8XcPKZCw4OfQfmDmKkHtrFb77jCAQj_s_FxjVnvxRwmfhNnWy0D-LUV_g63nHh_b5zXIeV92QZLvDYbgbezmzUzv9UeA1s70GGbaDqCIy85gw9-w==.AQAB\"},{\"rel\":\"http://ostatus.org/schema/1.0/subscribe\",\"template\":\"https://social.tcit.fr/authorize_interaction?uri={uri}\"}]}",
|
||||||
|
"headers": {
|
||||||
|
"Date": "Tue, 13 Nov 2018 11:11:10 GMT",
|
||||||
|
"Content-Type": "application/jrd+json; charset=utf-8",
|
||||||
|
"Transfer-Encoding": "chunked",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"Server": "Mastodon",
|
||||||
|
"X-Frame-Options": "DENY",
|
||||||
|
"X-Content-Type-Options": "nosniff",
|
||||||
|
"X-XSS-Protection": "1; mode=block",
|
||||||
|
"Vary": "Accept, Accept-Encoding, Origin",
|
||||||
|
"Cache-Control": "max-age=259200, public",
|
||||||
|
"ETag": "W/\"33f6cc86f8f97d0ca930761c04e0db58\"",
|
||||||
|
"X-Request-Id": "b7f5ad84-5120-4275-aacf-dbb9654be181",
|
||||||
|
"X-Runtime": "0.015609",
|
||||||
|
"X-Cached": "MISS"
|
||||||
|
},
|
||||||
|
"status_code": 200,
|
||||||
|
"type": "ok"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
38
test/fixtures/vcr_cassettes/webfinger/peertube.json
vendored
Normal file
38
test/fixtures/vcr_cassettes/webfinger/peertube.json
vendored
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"request": {
|
||||||
|
"body": "",
|
||||||
|
"headers": {
|
||||||
|
"Accept": "application/json, application/activity+json, application/jrd+json"
|
||||||
|
},
|
||||||
|
"method": "get",
|
||||||
|
"options": {
|
||||||
|
"follow_redirect": "true"
|
||||||
|
},
|
||||||
|
"request_body": "",
|
||||||
|
"url": "http://framatube.org/.well-known/webfinger?resource=acct:framasoft@framatube.org"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"binary": false,
|
||||||
|
"body": "{\"subject\":\"acct:framasoft@framatube.org\",\"aliases\":[\"https://framatube.org/accounts/framasoft\"],\"links\":[{\"rel\":\"self\",\"type\":\"application/activity+json\",\"href\":\"https://framatube.org/accounts/framasoft\"}]}",
|
||||||
|
"headers": {
|
||||||
|
"Server": "nginx/1.10.3",
|
||||||
|
"Date": "Tue, 13 Nov 2018 11:11:11 GMT",
|
||||||
|
"Content-Type": "application/json; charset=utf-8",
|
||||||
|
"Content-Length": "207",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"X-DNS-Prefetch-Control": "off",
|
||||||
|
"X-Frame-Options": "DENY",
|
||||||
|
"X-Download-Options": "noopen",
|
||||||
|
"X-Content-Type-Options": "nosniff",
|
||||||
|
"X-XSS-Protection": "1; mode=block",
|
||||||
|
"Tk": "N",
|
||||||
|
"ETag": "W/\"cf-VoWlsif7OQ4xxqki7jRAnOPKRes\"",
|
||||||
|
"Strict-Transport-Security": "max-age=63072000; includeSubDomains; preload",
|
||||||
|
"X-Robots-Tag": "none"
|
||||||
|
},
|
||||||
|
"status_code": 200,
|
||||||
|
"type": "ok"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
43
test/fixtures/vcr_cassettes/webfinger/pleroma.json
vendored
Normal file
43
test/fixtures/vcr_cassettes/webfinger/pleroma.json
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"request": {
|
||||||
|
"body": "",
|
||||||
|
"headers": {
|
||||||
|
"Accept": "application/json, application/activity+json, application/jrd+json"
|
||||||
|
},
|
||||||
|
"method": "get",
|
||||||
|
"options": {
|
||||||
|
"follow_redirect": "true"
|
||||||
|
},
|
||||||
|
"request_body": "",
|
||||||
|
"url": "http://pleroma.soykaf.com/.well-known/webfinger?resource=acct:lain@pleroma.soykaf.com"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"binary": false,
|
||||||
|
"body": "{\"aliases\":[\"https://pleroma.soykaf.com/users/lain\"],\"links\":[{\"href\":\"https://pleroma.soykaf.com/users/lain/feed.atom\",\"rel\":\"http://schemas.google.com/g/2010#updates-from\",\"type\":\"application/atom+xml\"},{\"href\":\"https://pleroma.soykaf.com/users/lain\",\"rel\":\"http://webfinger.net/rel/profile-page\",\"type\":\"text/html\"},{\"href\":\"https://pleroma.soykaf.com/users/lain/salmon\",\"rel\":\"salmon\"},{\"href\":\"data:application/magic-public-key,RSA.u39dKLin8N4PywPvasEGXstOMsgg9m1OEKnpfHnSHqc6UOtIPs5-aI_LcLbhIEH2EVl6jstvtqMIloPch1FizZ3OBiKz81dXTiEZ3NfKgj_GJfIlipChAadxrmUyWT_Pr0qPaF1vhPrkSTwR8iDNUiQ-OEggRPpJVkJ619MXNdsJE59yklZiD1WY0vC9aG9m-dh0BANKNwSjwfZ3uFjDh0UosMATKjPTSO_I59nK_lArex_jAwTnVm6Dryk2qR2XXZyzTzZAHuYqSM77RlsNTJUCOaSadl816eZAvU3TF-ibIou0D-0sN-M-QehRh93sVJ95U40GQz8jOGc_5wK8xw==.AQAB\",\"rel\":\"magic-public-key\"},{\"href\":\"https://pleroma.soykaf.com/users/lain\",\"rel\":\"self\",\"type\":\"application/activity+json\"},{\"href\":\"https://pleroma.soykaf.com/users/lain\",\"rel\":\"self\",\"type\":\"application/ld+json; profile=\\\"https://www.w3.org/ns/activitystreams\\\"\"},{\"rel\":\"http://ostatus.org/schema/1.0/subscribe\",\"template\":\"https://pleroma.soykaf.com/ostatus_subscribe?acct={uri}\"}],\"subject\":\"acct:lain@pleroma.soykaf.com\"}",
|
||||||
|
"headers": {
|
||||||
|
"Server": "nginx/1.10.3",
|
||||||
|
"Date": "Tue, 13 Nov 2018 11:11:11 GMT",
|
||||||
|
"Content-Type": "application/json; charset=utf-8",
|
||||||
|
"Content-Length": "1214",
|
||||||
|
"Connection": "keep-alive",
|
||||||
|
"Vary": "Accept-Encoding",
|
||||||
|
"cache-control": "max-age=0, private, must-revalidate",
|
||||||
|
"x-request-id": "2ljal4oljell0gfni41am571",
|
||||||
|
"access-control-allow-origin": "*",
|
||||||
|
"access-control-expose-headers": "",
|
||||||
|
"access-control-allow-credentials": "true",
|
||||||
|
"Access-Control-Allow-Methods": "POST, GET, OPTIONS",
|
||||||
|
"Access-Control-Allow-Headers": "Authorization, Content-Type",
|
||||||
|
"X-XSS-Protection": "1; mode=block",
|
||||||
|
"X-Permitted-Cross-Domain-Policies": "none",
|
||||||
|
"X-Frame-Options": "DENY",
|
||||||
|
"X-Content-Type-Options": "nosniff",
|
||||||
|
"Referrer-Policy": "same-origin",
|
||||||
|
"X-Download-Options": "noopen"
|
||||||
|
},
|
||||||
|
"status_code": 200,
|
||||||
|
"type": "ok"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -4,6 +4,7 @@ defmodule Mobilizon.ActorsTest do
|
|||||||
alias Mobilizon.Actors
|
alias Mobilizon.Actors
|
||||||
alias Mobilizon.Actors.{Actor, Member, Follower, User, Bot}
|
alias Mobilizon.Actors.{Actor, Member, Follower, User, Bot}
|
||||||
import Mobilizon.Factory
|
import Mobilizon.Factory
|
||||||
|
use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
|
||||||
|
|
||||||
describe "actors" do
|
describe "actors" do
|
||||||
@valid_attrs %{
|
@valid_attrs %{
|
||||||
@ -88,6 +89,7 @@ defmodule Mobilizon.ActorsTest do
|
|||||||
end
|
end
|
||||||
|
|
||||||
test "get_actor_by_name/1 returns a remote actor" do
|
test "get_actor_by_name/1 returns a remote actor" do
|
||||||
|
use_cassette "actors/remote_actor_mastodon_tcit" do
|
||||||
with {:ok,
|
with {:ok,
|
||||||
%Actor{id: actor_id, preferred_username: preferred_username, domain: domain} = _actor} <-
|
%Actor{id: actor_id, preferred_username: preferred_username, domain: domain} = _actor} <-
|
||||||
Actors.get_or_fetch_by_url(@remote_account_url),
|
Actors.get_or_fetch_by_url(@remote_account_url),
|
||||||
@ -96,6 +98,7 @@ defmodule Mobilizon.ActorsTest do
|
|||||||
assert actor_found_id == actor_id
|
assert actor_found_id == actor_id
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
test "get_local_actor_by_name_with_everything!/1 returns the local actor with it's organized events",
|
test "get_local_actor_by_name_with_everything!/1 returns the local actor with it's organized events",
|
||||||
%{
|
%{
|
||||||
@ -132,8 +135,8 @@ defmodule Mobilizon.ActorsTest do
|
|||||||
end
|
end
|
||||||
|
|
||||||
test "get_actor_by_name_with_everything!/1 returns the remote actor with it's organized events" do
|
test "get_actor_by_name_with_everything!/1 returns the remote actor with it's organized events" do
|
||||||
assert {:ok, %Actor{} = actor} = Actors.get_or_fetch_by_url(@remote_account_url)
|
use_cassette "actors/remote_actor_mastodon_tcit" do
|
||||||
|
with {:ok, %Actor{} = actor} <- Actors.get_or_fetch_by_url(@remote_account_url) do
|
||||||
assert Actors.get_actor_by_name_with_everything(
|
assert Actors.get_actor_by_name_with_everything(
|
||||||
"#{actor.preferred_username}@#{actor.domain}"
|
"#{actor.preferred_username}@#{actor.domain}"
|
||||||
).organized_events == []
|
).organized_events == []
|
||||||
@ -147,6 +150,8 @@ defmodule Mobilizon.ActorsTest do
|
|||||||
|
|
||||||
assert event_found_id == event.id
|
assert event_found_id == event.id
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
test "get_or_fetch_by_url/1 returns the local actor for the url", %{
|
test "get_or_fetch_by_url/1 returns the local actor for the url", %{
|
||||||
actor: %Actor{preferred_username: preferred_username} = actor
|
actor: %Actor{preferred_username: preferred_username} = actor
|
||||||
@ -158,12 +163,14 @@ defmodule Mobilizon.ActorsTest do
|
|||||||
end
|
end
|
||||||
|
|
||||||
test "get_or_fetch_by_url/1 returns the remote actor for the url" do
|
test "get_or_fetch_by_url/1 returns the remote actor for the url" do
|
||||||
|
use_cassette "actors/remote_actor_mastodon_tcit" do
|
||||||
with {:ok, %Actor{preferred_username: preferred_username, domain: domain}} <-
|
with {:ok, %Actor{preferred_username: preferred_username, domain: domain}} <-
|
||||||
Actors.get_or_fetch_by_url!(@remote_account_url) do
|
Actors.get_or_fetch_by_url!(@remote_account_url) do
|
||||||
assert preferred_username == @remote_account_username
|
assert preferred_username == @remote_account_username
|
||||||
assert domain == @remote_account_domain
|
assert domain == @remote_account_domain
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
test "test find_local_by_username/1 returns local actors with similar usernames", %{
|
test "test find_local_by_username/1 returns local actors with similar usernames", %{
|
||||||
actor: actor
|
actor: actor
|
||||||
@ -178,10 +185,13 @@ defmodule Mobilizon.ActorsTest do
|
|||||||
test "test find_actors_by_username_or_name/1 returns actors with similar usernames", %{
|
test "test find_actors_by_username_or_name/1 returns actors with similar usernames", %{
|
||||||
actor: %Actor{id: actor_id}
|
actor: %Actor{id: actor_id}
|
||||||
} do
|
} do
|
||||||
{:ok, %Actor{id: actor2_id}} = Actors.get_or_fetch_by_url(@remote_account_url)
|
use_cassette "actors/remote_actor_mastodon_tcit" do
|
||||||
|
with {:ok, %Actor{id: actor2_id}} <- Actors.get_or_fetch_by_url(@remote_account_url) do
|
||||||
actors_ids = Actors.find_actors_by_username_or_name("t") |> Enum.map(& &1.id)
|
actors_ids = Actors.find_actors_by_username_or_name("t") |> Enum.map(& &1.id)
|
||||||
assert MapSet.new(actors_ids) == MapSet.new([actor2_id, actor_id])
|
assert MapSet.new(actors_ids) == MapSet.new([actor2_id, actor_id])
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
test "test find_actors_by_username_or_name/1 returns actors with similar names" do
|
test "test find_actors_by_username_or_name/1 returns actors with similar names" do
|
||||||
actors = Actors.find_actors_by_username_or_name("ohno")
|
actors = Actors.find_actors_by_username_or_name("ohno")
|
||||||
@ -218,8 +228,10 @@ defmodule Mobilizon.ActorsTest do
|
|||||||
20_890_513_599_005_517_665_557_846_902_571_022_168_782_075_040_010_449_365_706_450_877_170_130_373_892_202_874_869_873_999_284_399_697_282_332_064_948_148_602_583_340_776_692_090_472_558_740_998_357_203_838_580_321_412_679_020_304_645_826_371_196_718_081_108_049_114_160_630_664_514_340_729_769_453_281_682_773_898_619_827_376_232_969_899_348_462_205_389_310_883_299_183_817_817_999_273_916_446_620_095_414_233_374_619_948_098_516_821_650_069_821_783_810_210_582_035_456_563_335_930_330_252_551_528_035_801_173_640_288_329_718_719_895_926_309_416_142_129_926_226_047_930_429_802_084_560_488_897_717_417_403_272_782_469_039_131_379_953_278_833_320_195_233_761_955_815_307_522_871_787_339_192_744_439_894_317_730_207_141_881_699_363_391_788_150_650_217_284_777_541_358_381_165_360_697_136_307_663_640_904_621_178_632_289_787,
|
20_890_513_599_005_517_665_557_846_902_571_022_168_782_075_040_010_449_365_706_450_877_170_130_373_892_202_874_869_873_999_284_399_697_282_332_064_948_148_602_583_340_776_692_090_472_558_740_998_357_203_838_580_321_412_679_020_304_645_826_371_196_718_081_108_049_114_160_630_664_514_340_729_769_453_281_682_773_898_619_827_376_232_969_899_348_462_205_389_310_883_299_183_817_817_999_273_916_446_620_095_414_233_374_619_948_098_516_821_650_069_821_783_810_210_582_035_456_563_335_930_330_252_551_528_035_801_173_640_288_329_718_719_895_926_309_416_142_129_926_226_047_930_429_802_084_560_488_897_717_417_403_272_782_469_039_131_379_953_278_833_320_195_233_761_955_815_307_522_871_787_339_192_744_439_894_317_730_207_141_881_699_363_391_788_150_650_217_284_777_541_358_381_165_360_697_136_307_663_640_904_621_178_632_289_787,
|
||||||
65537}}
|
65537}}
|
||||||
test "test get_public_key_for_url/1 with remote actor" do
|
test "test get_public_key_for_url/1 with remote actor" do
|
||||||
|
use_cassette "actors/remote_actor_mastodon_tcit" do
|
||||||
assert Actor.get_public_key_for_url(@remote_account_url) == @remote_actor_key
|
assert Actor.get_public_key_for_url(@remote_account_url) == @remote_actor_key
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
test "create_actor/1 with valid data creates a actor" do
|
test "create_actor/1 with valid data creates a actor" do
|
||||||
assert {:ok, %Actor{} = actor} = Actors.create_actor(@valid_attrs)
|
assert {:ok, %Actor{} = actor} = Actors.create_actor(@valid_attrs)
|
||||||
|
@ -7,18 +7,27 @@ defmodule Mobilizon.Service.Activitypub.ActivitypubTest do
|
|||||||
alias Mobilizon.Actors.Actor
|
alias Mobilizon.Actors.Actor
|
||||||
alias Mobilizon.Actors
|
alias Mobilizon.Actors
|
||||||
alias Mobilizon.Service.ActivityPub
|
alias Mobilizon.Service.ActivityPub
|
||||||
|
use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
|
||||||
|
|
||||||
|
setup_all do
|
||||||
|
HTTPoison.start()
|
||||||
|
end
|
||||||
|
|
||||||
describe "fetching actor from it's url" do
|
describe "fetching actor from it's url" do
|
||||||
test "returns an actor from nickname" do
|
test "returns an actor from nickname" do
|
||||||
|
use_cassette "activity_pub/fetch_tcit@framapiaf.org" do
|
||||||
assert {:ok, %Actor{preferred_username: "tcit", domain: "framapiaf.org"} = actor} =
|
assert {:ok, %Actor{preferred_username: "tcit", domain: "framapiaf.org"} = actor} =
|
||||||
ActivityPub.make_actor_from_nickname("tcit@framapiaf.org")
|
ActivityPub.make_actor_from_nickname("tcit@framapiaf.org")
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
test "returns an actor from url" do
|
test "returns an actor from url" do
|
||||||
|
use_cassette "activity_pub/fetch_framapiaf.org_users_tcit" do
|
||||||
assert {:ok, %Actor{preferred_username: "tcit", domain: "framapiaf.org"}} =
|
assert {:ok, %Actor{preferred_username: "tcit", domain: "framapiaf.org"}} =
|
||||||
Actors.get_or_fetch_by_url("https://framapiaf.org/users/tcit")
|
Actors.get_or_fetch_by_url("https://framapiaf.org/users/tcit")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "create activities" do
|
describe "create activities" do
|
||||||
test "removes doubled 'to' recipients" do
|
test "removes doubled 'to' recipients" do
|
||||||
@ -40,6 +49,7 @@ defmodule Mobilizon.Service.Activitypub.ActivitypubTest do
|
|||||||
|
|
||||||
describe "fetching an" do
|
describe "fetching an" do
|
||||||
test "object by url" do
|
test "object by url" do
|
||||||
|
use_cassette "activity_pub/fetch_social_tcit_fr_status" do
|
||||||
{:ok, object} =
|
{:ok, object} =
|
||||||
ActivityPub.fetch_object_from_url(
|
ActivityPub.fetch_object_from_url(
|
||||||
"https://social.tcit.fr/users/tcit/statuses/99908779444618462"
|
"https://social.tcit.fr/users/tcit/statuses/99908779444618462"
|
||||||
@ -53,6 +63,7 @@ defmodule Mobilizon.Service.Activitypub.ActivitypubTest do
|
|||||||
assert object == object_again
|
assert object == object_again
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "deletion" do
|
describe "deletion" do
|
||||||
test "it creates a delete activity and deletes the original event" do
|
test "it creates a delete activity and deletes the original event" do
|
||||||
|
@ -3,6 +3,17 @@ defmodule Mobilizon.Service.WebFingerTest do
|
|||||||
alias Mobilizon.Service.WebFinger
|
alias Mobilizon.Service.WebFinger
|
||||||
import Mobilizon.Factory
|
import Mobilizon.Factory
|
||||||
|
|
||||||
|
use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
|
||||||
|
|
||||||
|
@mastodon_account "tcit@social.tcit.fr"
|
||||||
|
@mastodon_account_username "tcit"
|
||||||
|
@pleroma_account "lain@pleroma.soykaf.com"
|
||||||
|
@pleroma_account_username "lain"
|
||||||
|
@peertube_account "framasoft@framatube.org"
|
||||||
|
@peertube_account_username "framasoft"
|
||||||
|
@friendica_account "lain@squeet.me"
|
||||||
|
@friendica_account_username "lain"
|
||||||
|
|
||||||
describe "host meta" do
|
describe "host meta" do
|
||||||
test "returns a link to the xml lrdd" do
|
test "returns a link to the xml lrdd" do
|
||||||
host_info = WebFinger.host_meta()
|
host_info = WebFinger.host_meta()
|
||||||
@ -31,39 +42,47 @@ defmodule Mobilizon.Service.WebFingerTest do
|
|||||||
|
|
||||||
describe "fingering" do
|
describe "fingering" do
|
||||||
test "a mastodon actor" do
|
test "a mastodon actor" do
|
||||||
actor = "tcit@social.tcit.fr"
|
use_cassette "webfinger/mastodon" do
|
||||||
|
res = %{
|
||||||
|
"subject" => "acct:" <> @mastodon_account,
|
||||||
|
"url" => "https://social.tcit.fr/users/#{@mastodon_account_username}"
|
||||||
|
}
|
||||||
|
|
||||||
assert {:ok, %{"subject" => "acct:" <> actor, "url" => "https://social.tcit.fr/users/tcit"}} =
|
assert {:ok, res} == WebFinger.finger(@mastodon_account)
|
||||||
WebFinger.finger(actor)
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
test "a pleroma actor" do
|
test "a pleroma actor" do
|
||||||
actor = "@lain@pleroma.soykaf.com"
|
use_cassette "webfinger/pleroma" do
|
||||||
|
res = %{
|
||||||
|
"subject" => "acct:" <> @pleroma_account,
|
||||||
|
"url" => "https://pleroma.soykaf.com/users/#{@pleroma_account_username}"
|
||||||
|
}
|
||||||
|
|
||||||
assert {:ok,
|
assert {:ok, res} == WebFinger.finger(@pleroma_account)
|
||||||
%{"subject" => "acct:" <> actor, "url" => "https://pleroma.soykaf.com/users/lain"}} =
|
end
|
||||||
WebFinger.finger(actor)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test "a peertube actor" do
|
test "a peertube actor" do
|
||||||
actor = "framasoft@framatube.org"
|
use_cassette "webfinger/peertube" do
|
||||||
|
res = %{
|
||||||
|
"subject" => "acct:" <> @peertube_account,
|
||||||
|
"url" => "https://framatube.org/accounts/#{@peertube_account_username}"
|
||||||
|
}
|
||||||
|
|
||||||
assert {:ok,
|
assert {:ok, res} == WebFinger.finger(@peertube_account)
|
||||||
%{
|
end
|
||||||
"subject" => "acct:" <> actor,
|
|
||||||
"url" => "https://framatube.org/accounts/framasoft"
|
|
||||||
}} = WebFinger.finger(actor)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test "a friendica actor" do
|
test "a friendica actor" do
|
||||||
# Now with ActivityPub !
|
use_cassette "webfinger/friendica" do
|
||||||
actor = "lain@squeet.me"
|
res = %{
|
||||||
|
"subject" => "acct:" <> @friendica_account,
|
||||||
|
"url" => "https://squeet.me/profile/#{@friendica_account_username}"
|
||||||
|
}
|
||||||
|
|
||||||
assert {:ok,
|
assert {:ok, res} == WebFinger.finger(@friendica_account)
|
||||||
%{
|
end
|
||||||
"subject" => "acct:" <> actor,
|
|
||||||
"url" => "https://squeet.me/profile/lain"
|
|
||||||
}} = WebFinger.finger(actor)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -5,6 +5,7 @@ defmodule MobilizonWeb.ActivityPubControllerTest do
|
|||||||
alias Mobilizon.Actors
|
alias Mobilizon.Actors
|
||||||
alias Mobilizon.Service.ActivityPub
|
alias Mobilizon.Service.ActivityPub
|
||||||
alias Mobilizon.Service.ActivityPub.Utils
|
alias Mobilizon.Service.ActivityPub.Utils
|
||||||
|
use ExVCR.Mock, adapter: ExVCR.Adapter.Hackney
|
||||||
|
|
||||||
describe "/@:preferred_username" do
|
describe "/@:preferred_username" do
|
||||||
test "it returns a json representation of the actor", %{conn: conn} do
|
test "it returns a json representation of the actor", %{conn: conn} do
|
||||||
@ -48,6 +49,7 @@ defmodule MobilizonWeb.ActivityPubControllerTest do
|
|||||||
|
|
||||||
describe "/@:preferred_username/inbox" do
|
describe "/@:preferred_username/inbox" do
|
||||||
test "it inserts an incoming event into the database", %{conn: conn} do
|
test "it inserts an incoming event into the database", %{conn: conn} do
|
||||||
|
use_cassette "activity_pub_controller/mastodon-post-activity_actor_call" do
|
||||||
data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!()
|
data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!()
|
||||||
|
|
||||||
conn =
|
conn =
|
||||||
@ -61,6 +63,7 @@ defmodule MobilizonWeb.ActivityPubControllerTest do
|
|||||||
assert ActivityPub.fetch_object_from_url(data["object"]["id"])
|
assert ActivityPub.fetch_object_from_url(data["object"]["id"])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "/@:preferred_username/outbox" do
|
describe "/@:preferred_username/outbox" do
|
||||||
test "it returns a note activity in a collection", %{conn: conn} do
|
test "it returns a note activity in a collection", %{conn: conn} do
|
||||||
|
Loading…
Reference in New Issue
Block a user