2018-12-23 20:11:29 +00:00
# Pleroma: A lightweight social networking server
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
2017-04-18 16:41:51 +00:00
defmodule Pleroma.Web.OStatus.OStatusControllerTest do
use Pleroma.Web.ConnCase
2019-07-20 13:07:51 +00:00
import ExUnit.CaptureLog
2017-04-18 16:41:51 +00:00
import Pleroma.Factory
2019-07-20 13:07:51 +00:00
2019-02-10 21:57:38 +00:00
alias Pleroma.Object
2019-03-05 02:52:23 +00:00
alias Pleroma.User
2018-11-17 22:10:15 +00:00
alias Pleroma.Web.CommonAPI
2017-05-19 13:53:02 +00:00
alias Pleroma.Web.OStatus.ActivityRepresenter
2018-12-03 18:37:55 +00:00
2018-12-04 11:01:39 +00:00
setup_all do
Tesla.Mock . mock_global ( fn env -> apply ( HttpRequestMock , :request , [ env ] ) end )
2018-12-03 18:37:55 +00:00
:ok
end
2017-04-18 16:41:51 +00:00
2019-08-19 15:34:29 +00:00
clear_config_all ( [ :instance , :federating ] ) do
Pleroma.Config . put ( [ :instance , :federating ] , true )
end
2019-01-25 17:38:54 +00:00
describe " salmon_incoming " do
test " decodes a salmon " , %{ conn : conn } do
user = insert ( :user )
salmon = File . read! ( " test/fixtures/salmon.xml " )
2018-03-30 13:01:53 +00:00
2019-07-20 13:07:51 +00:00
assert capture_log ( fn ->
conn =
conn
|> put_req_header ( " content-type " , " application/atom+xml " )
|> post ( " /users/ #{ user . nickname } /salmon " , salmon )
2017-11-09 07:32:54 +00:00
2019-07-20 13:07:51 +00:00
assert response ( conn , 200 )
end ) =~ " [error] "
2019-01-25 17:38:54 +00:00
end
2017-11-09 07:32:54 +00:00
2019-01-25 17:38:54 +00:00
test " decodes a salmon with a changed magic key " , %{ conn : conn } do
user = insert ( :user )
salmon = File . read! ( " test/fixtures/salmon.xml " )
2018-03-30 13:01:53 +00:00
2019-07-20 13:07:51 +00:00
assert capture_log ( fn ->
conn =
conn
|> put_req_header ( " content-type " , " application/atom+xml " )
|> post ( " /users/ #{ user . nickname } /salmon " , salmon )
2017-11-09 07:32:54 +00:00
2019-07-20 13:07:51 +00:00
assert response ( conn , 200 )
end ) =~ " [error] "
2017-11-09 07:32:54 +00:00
2019-01-25 17:38:54 +00:00
# Set a wrong magic-key for a user so it has to refetch
2019-04-22 07:20:43 +00:00
salmon_user = User . get_cached_by_ap_id ( " http://gs.example.org:4040/index.php/user/1 " )
2019-01-25 17:38:54 +00:00
# Wrong key
info_cng =
User.Info . remote_user_creation ( salmon_user . info , %{
magic_key :
" RSA.pu0s-halox4tu7wmES1FVSx6u-4wc0YrUFXcqWXZG4-27UmbCOpMQftRCldNRfyA-qLbz-eqiwrong1EwUvjsD4cYbAHNGHwTvDOyx5AKthQUP44ykPv7kjKGh3DWKySJvcs9tlUG87hlo7AvnMo9pwRS_Zz2CacQ-MKaXyDepk=.AQAB "
} )
2018-11-27 17:21:05 +00:00
2019-01-25 17:38:54 +00:00
salmon_user
|> Ecto.Changeset . change ( )
|> Ecto.Changeset . put_embed ( :info , info_cng )
2019-04-22 07:20:43 +00:00
|> User . update_and_set_cache ( )
2017-11-09 07:32:54 +00:00
2019-07-20 13:07:51 +00:00
assert capture_log ( fn ->
conn =
build_conn ( )
|> put_req_header ( " content-type " , " application/atom+xml " )
|> post ( " /users/ #{ user . nickname } /salmon " , salmon )
2019-01-25 17:38:54 +00:00
2019-07-20 13:07:51 +00:00
assert response ( conn , 200 )
end ) =~ " [error] "
2019-01-25 17:38:54 +00:00
end
2017-11-09 07:32:54 +00:00
end
2017-04-18 16:41:51 +00:00
test " gets a feed " , %{ conn : conn } do
note_activity = insert ( :note_activity )
2019-07-08 16:53:02 +00:00
object = Object . normalize ( note_activity )
2017-04-18 16:41:51 +00:00
user = User . get_cached_by_ap_id ( note_activity . data [ " actor " ] )
2018-03-30 13:01:53 +00:00
conn =
conn
2018-06-03 19:04:44 +00:00
|> put_req_header ( " content-type " , " application/atom+xml " )
2018-03-30 13:01:53 +00:00
|> get ( " /users/ #{ user . nickname } /feed.atom " )
2017-04-18 16:41:51 +00:00
2019-07-08 16:53:02 +00:00
assert response ( conn , 200 ) =~ object . data [ " content " ]
2017-04-18 16:41:51 +00:00
end
2017-05-03 07:54:17 +00:00
2018-06-03 19:04:44 +00:00
test " returns 404 for a missing feed " , %{ conn : conn } do
conn =
conn
|> put_req_header ( " content-type " , " application/atom+xml " )
|> get ( " /users/nonexisting/feed.atom " )
assert response ( conn , 404 )
end
2019-07-29 05:02:20 +00:00
describe " GET object/2 " do
test " gets an object " , %{ conn : conn } do
note_activity = insert ( :note_activity )
object = Object . normalize ( note_activity )
user = User . get_cached_by_ap_id ( note_activity . data [ " actor " ] )
[ _ , uuid ] = hd ( Regex . scan ( ~r/ .+ \/ ([ \w -]+)$ / , object . data [ " id " ] ) )
url = " /objects/ #{ uuid } "
conn =
conn
|> put_req_header ( " accept " , " application/xml " )
|> get ( url )
expected =
ActivityRepresenter . to_simple_form ( note_activity , user , true )
|> ActivityRepresenter . wrap_with_entry ( )
|> :xmerl . export_simple ( :xmerl_xml )
|> to_string
assert response ( conn , 200 ) == expected
end
test " redirects to /notice/id for html format " , %{ conn : conn } do
note_activity = insert ( :note_activity )
object = Object . normalize ( note_activity )
[ _ , uuid ] = hd ( Regex . scan ( ~r/ .+ \/ ([ \w -]+)$ / , object . data [ " id " ] ) )
url = " /objects/ #{ uuid } "
conn =
conn
|> put_req_header ( " accept " , " text/html " )
|> get ( url )
assert redirected_to ( conn ) == " /notice/ #{ note_activity . id } "
end
test " 500s when user not found " , %{ conn : conn } do
note_activity = insert ( :note_activity )
object = Object . normalize ( note_activity )
user = User . get_cached_by_ap_id ( note_activity . data [ " actor " ] )
User . invalidate_cache ( user )
Pleroma.Repo . delete ( user )
[ _ , uuid ] = hd ( Regex . scan ( ~r/ .+ \/ ([ \w -]+)$ / , object . data [ " id " ] ) )
url = " /objects/ #{ uuid } "
conn =
conn
|> put_req_header ( " accept " , " application/xml " )
|> get ( url )
assert response ( conn , 500 ) == ~S( {"error":"Something went wrong"} )
end
test " 404s on private objects " , %{ conn : conn } do
note_activity = insert ( :direct_note_activity )
object = Object . normalize ( note_activity )
[ _ , uuid ] = hd ( Regex . scan ( ~r/ .+ \/ ([ \w -]+)$ / , object . data [ " id " ] ) )
conn
|> get ( " /objects/ #{ uuid } " )
|> response ( 404 )
end
test " 404s on nonexisting objects " , %{ conn : conn } do
conn
|> get ( " /objects/123 " )
|> response ( 404 )
end
end
describe " GET activity/2 " do
test " gets an activity in xml format " , %{ conn : conn } do
note_activity = insert ( :note_activity )
[ _ , uuid ] = hd ( Regex . scan ( ~r/ .+ \/ ([ \w -]+)$ / , note_activity . data [ " id " ] ) )
2017-05-03 07:54:17 +00:00
2018-03-30 13:01:53 +00:00
conn
2018-12-14 01:59:33 +00:00
|> put_req_header ( " accept " , " application/xml " )
2019-07-29 05:02:20 +00:00
|> get ( " /activities/ #{ uuid } " )
|> response ( 200 )
end
2017-05-03 07:54:17 +00:00
2019-07-29 05:02:20 +00:00
test " redirects to /notice/id for html format " , %{ conn : conn } do
note_activity = insert ( :note_activity )
[ _ , uuid ] = hd ( Regex . scan ( ~r/ .+ \/ ([ \w -]+)$ / , note_activity . data [ " id " ] ) )
2017-05-19 13:53:02 +00:00
2019-07-29 05:02:20 +00:00
conn =
conn
|> put_req_header ( " accept " , " text/html " )
|> get ( " /activities/ #{ uuid } " )
2017-05-19 13:53:02 +00:00
2019-07-29 05:02:20 +00:00
assert redirected_to ( conn ) == " /notice/ #{ note_activity . id } "
end
2018-05-30 18:00:27 +00:00
2019-07-29 05:02:20 +00:00
test " 505s when user not found " , %{ conn : conn } do
note_activity = insert ( :note_activity )
[ _ , uuid ] = hd ( Regex . scan ( ~r/ .+ \/ ([ \w -]+)$ / , note_activity . data [ " id " ] ) )
user = User . get_cached_by_ap_id ( note_activity . data [ " actor " ] )
User . invalidate_cache ( user )
Pleroma.Repo . delete ( user )
2018-05-30 18:00:27 +00:00
2019-07-29 05:02:20 +00:00
conn =
conn
|> put_req_header ( " accept " , " text/html " )
|> get ( " /activities/ #{ uuid } " )
2018-06-03 19:04:44 +00:00
2019-07-29 05:02:20 +00:00
assert response ( conn , 500 ) == ~S( {"error":"Something went wrong"} )
end
2017-05-19 13:53:02 +00:00
2019-07-29 05:02:20 +00:00
test " 404s on deleted objects " , %{ conn : conn } do
note_activity = insert ( :note_activity )
object = Object . normalize ( note_activity )
[ _ , uuid ] = hd ( Regex . scan ( ~r/ .+ \/ ([ \w -]+)$ / , object . data [ " id " ] ) )
2017-11-27 16:24:52 +00:00
2019-07-29 05:02:20 +00:00
conn
|> put_req_header ( " accept " , " application/xml " )
|> get ( " /objects/ #{ uuid } " )
|> response ( 200 )
2018-12-25 20:40:57 +00:00
2019-07-29 05:02:20 +00:00
Object . delete ( object )
2018-12-25 20:40:57 +00:00
2019-07-29 05:02:20 +00:00
conn
|> put_req_header ( " accept " , " application/xml " )
|> get ( " /objects/ #{ uuid } " )
|> response ( 404 )
end
2018-12-25 20:40:57 +00:00
2019-07-29 05:02:20 +00:00
test " 404s on private activities " , %{ conn : conn } do
note_activity = insert ( :direct_note_activity )
[ _ , uuid ] = hd ( Regex . scan ( ~r/ .+ \/ ([ \w -]+)$ / , note_activity . data [ " id " ] ) )
2018-12-25 20:40:57 +00:00
2019-07-29 05:02:20 +00:00
conn
|> get ( " /activities/ #{ uuid } " )
|> response ( 404 )
end
2018-05-30 18:00:27 +00:00
2019-07-29 05:02:20 +00:00
test " 404s on nonexistent activities " , %{ conn : conn } do
conn
|> get ( " /activities/123 " )
|> response ( 404 )
end
2018-05-30 18:00:27 +00:00
2019-07-29 05:02:20 +00:00
test " gets an activity in AS2 format " , %{ conn : conn } do
note_activity = insert ( :note_activity )
[ _ , uuid ] = hd ( Regex . scan ( ~r/ .+ \/ ([ \w -]+)$ / , note_activity . data [ " id " ] ) )
url = " /activities/ #{ uuid } "
2018-06-03 19:04:44 +00:00
2019-07-29 05:02:20 +00:00
conn =
conn
|> put_req_header ( " accept " , " application/activity+json " )
|> get ( url )
2017-11-27 16:24:52 +00:00
2019-07-29 05:02:20 +00:00
assert json_response ( conn , 200 )
end
2017-11-27 16:24:52 +00:00
end
2018-05-30 18:00:27 +00:00
2019-07-29 05:02:20 +00:00
describe " GET notice/2 " do
test " gets a notice in xml format " , %{ conn : conn } do
note_activity = insert ( :note_activity )
2018-07-12 20:32:05 +00:00
2019-07-29 05:02:20 +00:00
conn
|> get ( " /notice/ #{ note_activity . id } " )
|> response ( 200 )
end
2018-07-12 20:32:05 +00:00
2019-07-29 05:02:20 +00:00
test " gets a notice in AS2 format " , %{ conn : conn } do
note_activity = insert ( :note_activity )
2018-11-17 22:10:15 +00:00
conn
|> put_req_header ( " accept " , " application/activity+json " )
2019-07-29 05:02:20 +00:00
|> get ( " /notice/ #{ note_activity . id } " )
|> json_response ( 200 )
end
2018-11-17 22:10:15 +00:00
2019-07-29 05:02:20 +00:00
test " 500s when actor not found " , %{ conn : conn } do
note_activity = insert ( :note_activity )
user = User . get_cached_by_ap_id ( note_activity . data [ " actor " ] )
User . invalidate_cache ( user )
Pleroma.Repo . delete ( user )
2018-11-17 22:10:15 +00:00
2019-07-29 05:02:20 +00:00
conn =
conn
|> get ( " /notice/ #{ note_activity . id } " )
2018-11-17 22:10:15 +00:00
2019-07-29 05:02:20 +00:00
assert response ( conn , 500 ) == ~S( {"error":"Something went wrong"} )
end
2018-11-17 22:10:15 +00:00
2019-07-29 05:02:20 +00:00
test " only gets a notice in AS2 format for Create messages " , %{ conn : conn } do
note_activity = insert ( :note_activity )
url = " /notice/ #{ note_activity . id } "
2018-11-17 22:10:15 +00:00
2019-07-29 05:02:20 +00:00
conn =
conn
|> put_req_header ( " accept " , " application/activity+json " )
|> get ( url )
2018-11-17 22:10:15 +00:00
2019-07-29 05:02:20 +00:00
assert json_response ( conn , 200 )
2018-11-17 22:10:15 +00:00
2019-07-29 05:02:20 +00:00
user = insert ( :user )
2018-07-12 20:32:05 +00:00
2019-07-29 05:02:20 +00:00
{ :ok , like_activity , _ } = CommonAPI . favorite ( note_activity . id , user )
url = " /notice/ #{ like_activity . id } "
assert like_activity . data [ " type " ] == " Like "
conn =
build_conn ( )
|> put_req_header ( " accept " , " application/activity+json " )
|> get ( url )
assert response ( conn , 404 )
end
test " render html for redirect for html format " , %{ conn : conn } do
note_activity = insert ( :note_activity )
resp =
conn
|> put_req_header ( " accept " , " text/html " )
|> get ( " /notice/ #{ note_activity . id } " )
|> response ( 200 )
assert resp =~
" <meta content= \" #{ Pleroma.Web . base_url ( ) } /notice/ #{ note_activity . id } \" property= \" og:url \" > "
user = insert ( :user )
{ :ok , like_activity , _ } = CommonAPI . favorite ( note_activity . id , user )
assert like_activity . data [ " type " ] == " Like "
resp =
conn
|> put_req_header ( " accept " , " text/html " )
|> get ( " /notice/ #{ like_activity . id } " )
|> response ( 200 )
assert resp =~ " <!--server-generated-meta--> "
end
test " 404s a private notice " , %{ conn : conn } do
note_activity = insert ( :direct_note_activity )
url = " /notice/ #{ note_activity . id } "
conn =
conn
|> get ( url )
assert response ( conn , 404 )
end
test " 404s a nonexisting notice " , %{ conn : conn } do
url = " /notice/123 "
2018-07-12 20:32:05 +00:00
2019-07-29 05:02:20 +00:00
conn =
conn
|> get ( url )
assert response ( conn , 404 )
end
2018-07-12 20:32:05 +00:00
end
2019-07-29 05:02:20 +00:00
describe " feed_redirect " do
test " undefined format. it redirects to feed " , %{ conn : conn } do
note_activity = insert ( :note_activity )
user = User . get_cached_by_ap_id ( note_activity . data [ " actor " ] )
response =
conn
|> put_req_header ( " accept " , " application/xml " )
|> get ( " /users/ #{ user . nickname } " )
|> response ( 302 )
assert response ==
" <html><body>You are being <a href= \" #{ Pleroma.Web . base_url ( ) } /users/ #{
user . nickname
} / feed . atom \ " >redirected</a>.</body></html> "
end
2018-05-30 18:00:27 +00:00
2019-07-29 05:02:20 +00:00
test " undefined format. it returns error when user not found " , %{ conn : conn } do
response =
conn
|> put_req_header ( " accept " , " application/xml " )
|> get ( " /users/jimm " )
|> response ( 404 )
2018-05-30 18:00:27 +00:00
2019-07-29 05:02:20 +00:00
assert response == ~S( {"error":"Not found"} )
end
test " activity+json format. it redirects on actual feed of user " , %{ conn : conn } do
note_activity = insert ( :note_activity )
user = User . get_cached_by_ap_id ( note_activity . data [ " actor " ] )
response =
conn
|> put_req_header ( " accept " , " application/activity+json " )
|> get ( " /users/ #{ user . nickname } " )
|> json_response ( 200 )
assert response [ " endpoints " ] == %{
" oauthAuthorizationEndpoint " = > " #{ Pleroma.Web . base_url ( ) } /oauth/authorize " ,
" oauthRegistrationEndpoint " = > " #{ Pleroma.Web . base_url ( ) } /api/v1/apps " ,
" oauthTokenEndpoint " = > " #{ Pleroma.Web . base_url ( ) } /oauth/token " ,
" sharedInbox " = > " #{ Pleroma.Web . base_url ( ) } /inbox "
}
assert response [ " @context " ] == [
" https://www.w3.org/ns/activitystreams " ,
" http://localhost:4001/schemas/litepub-0.1.jsonld " ,
%{ " @language " = > " und " }
]
assert Map . take ( response , [
" followers " ,
" following " ,
" id " ,
" inbox " ,
" manuallyApprovesFollowers " ,
" name " ,
" outbox " ,
" preferredUsername " ,
" summary " ,
" tag " ,
" type " ,
" url "
] ) == %{
" followers " = > " #{ Pleroma.Web . base_url ( ) } /users/ #{ user . nickname } /followers " ,
" following " = > " #{ Pleroma.Web . base_url ( ) } /users/ #{ user . nickname } /following " ,
" id " = > " #{ Pleroma.Web . base_url ( ) } /users/ #{ user . nickname } " ,
" inbox " = > " #{ Pleroma.Web . base_url ( ) } /users/ #{ user . nickname } /inbox " ,
" manuallyApprovesFollowers " = > false ,
" name " = > user . name ,
" outbox " = > " #{ Pleroma.Web . base_url ( ) } /users/ #{ user . nickname } /outbox " ,
" preferredUsername " = > user . nickname ,
" summary " = > user . bio ,
" tag " = > [ ] ,
" type " = > " Person " ,
" url " = > " #{ Pleroma.Web . base_url ( ) } /users/ #{ user . nickname } "
}
end
test " activity+json format. it returns error whe use not found " , %{ conn : conn } do
response =
conn
|> put_req_header ( " accept " , " application/activity+json " )
|> get ( " /users/jimm " )
|> json_response ( 404 )
assert response == " Not found "
end
test " json format. it redirects on actual feed of user " , %{ conn : conn } do
note_activity = insert ( :note_activity )
user = User . get_cached_by_ap_id ( note_activity . data [ " actor " ] )
response =
conn
|> put_req_header ( " accept " , " application/json " )
|> get ( " /users/ #{ user . nickname } " )
|> json_response ( 200 )
assert response [ " endpoints " ] == %{
" oauthAuthorizationEndpoint " = > " #{ Pleroma.Web . base_url ( ) } /oauth/authorize " ,
" oauthRegistrationEndpoint " = > " #{ Pleroma.Web . base_url ( ) } /api/v1/apps " ,
" oauthTokenEndpoint " = > " #{ Pleroma.Web . base_url ( ) } /oauth/token " ,
" sharedInbox " = > " #{ Pleroma.Web . base_url ( ) } /inbox "
}
assert response [ " @context " ] == [
" https://www.w3.org/ns/activitystreams " ,
" http://localhost:4001/schemas/litepub-0.1.jsonld " ,
%{ " @language " = > " und " }
]
assert Map . take ( response , [
" followers " ,
" following " ,
" id " ,
" inbox " ,
" manuallyApprovesFollowers " ,
" name " ,
" outbox " ,
" preferredUsername " ,
" summary " ,
" tag " ,
" type " ,
" url "
] ) == %{
" followers " = > " #{ Pleroma.Web . base_url ( ) } /users/ #{ user . nickname } /followers " ,
" following " = > " #{ Pleroma.Web . base_url ( ) } /users/ #{ user . nickname } /following " ,
" id " = > " #{ Pleroma.Web . base_url ( ) } /users/ #{ user . nickname } " ,
" inbox " = > " #{ Pleroma.Web . base_url ( ) } /users/ #{ user . nickname } /inbox " ,
" manuallyApprovesFollowers " = > false ,
" name " = > user . name ,
" outbox " = > " #{ Pleroma.Web . base_url ( ) } /users/ #{ user . nickname } /outbox " ,
" preferredUsername " = > user . nickname ,
" summary " = > user . bio ,
" tag " = > [ ] ,
" type " = > " Person " ,
" url " = > " #{ Pleroma.Web . base_url ( ) } /users/ #{ user . nickname } "
}
end
test " json format. it returns error whe use not found " , %{ conn : conn } do
response =
conn
|> put_req_header ( " accept " , " application/json " )
|> get ( " /users/jimm " )
|> json_response ( 404 )
assert response == " Not found "
end
test " html format. it redirects on actual feed of user " , %{ conn : conn } do
note_activity = insert ( :note_activity )
user = User . get_cached_by_ap_id ( note_activity . data [ " actor " ] )
response =
conn
|> get ( " /users/ #{ user . nickname } " )
|> response ( 200 )
assert response ==
Fallback.RedirectController . redirector_with_meta (
conn ,
%{ user : user }
) . resp_body
end
test " html format. it returns error when user not found " , %{ conn : conn } do
response =
conn
|> get ( " /users/jimm " )
|> json_response ( 404 )
assert response == %{ " error " = > " Not found " }
end
2018-05-30 18:00:27 +00:00
end
2018-06-03 19:04:44 +00:00
2019-07-29 05:02:20 +00:00
describe " GET /notice/:id/embed_player " do
test " render embed player " , %{ conn : conn } do
note_activity = insert ( :note_activity )
object = Pleroma.Object . normalize ( note_activity )
object_data =
Map . put ( object . data , " attachment " , [
%{
" url " = > [
%{
" href " = >
" https://peertube.moe/static/webseed/df5f464b-be8d-46fb-ad81-2d4c2d1630e3-480.mp4 " ,
" mediaType " = > " video/mp4 " ,
" type " = > " Link "
}
]
}
] )
object
|> Ecto.Changeset . change ( data : object_data )
|> Pleroma.Repo . update ( )
conn =
conn
|> get ( " /notice/ #{ note_activity . id } /embed_player " )
assert Plug.Conn . get_resp_header ( conn , " x-frame-options " ) == [ " ALLOW " ]
assert Plug.Conn . get_resp_header (
conn ,
" content-security-policy "
) == [
" default-src 'none';style-src 'self' 'unsafe-inline';img-src 'self' data: https:; media-src 'self' https:; "
]
assert response ( conn , 200 ) =~
" <video controls loop><source src= \" https://peertube.moe/static/webseed/df5f464b-be8d-46fb-ad81-2d4c2d1630e3-480.mp4 \" type= \" video/mp4 \" >Your browser does not support video/mp4 playback.</video> "
end
2018-06-03 19:04:44 +00:00
2019-07-29 05:02:20 +00:00
test " 404s when activity isn't create " , %{ conn : conn } do
note_activity = insert ( :note_activity , data_attrs : %{ " type " = > " Like " } )
2018-06-03 19:04:44 +00:00
2019-07-29 05:02:20 +00:00
assert conn
|> get ( " /notice/ #{ note_activity . id } /embed_player " )
|> response ( 404 )
end
test " 404s when activity is direct message " , %{ conn : conn } do
note_activity = insert ( :note_activity , data_attrs : %{ " directMessage " = > true } )
assert conn
|> get ( " /notice/ #{ note_activity . id } /embed_player " )
|> response ( 404 )
end
test " 404s when attachment is empty " , %{ conn : conn } do
note_activity = insert ( :note_activity )
object = Pleroma.Object . normalize ( note_activity )
object_data = Map . put ( object . data , " attachment " , [ ] )
object
|> Ecto.Changeset . change ( data : object_data )
|> Pleroma.Repo . update ( )
assert conn
|> get ( " /notice/ #{ note_activity . id } /embed_player " )
|> response ( 404 )
end
test " 404s when attachment isn't audio or video " , %{ conn : conn } do
note_activity = insert ( :note_activity )
object = Pleroma.Object . normalize ( note_activity )
object_data =
Map . put ( object . data , " attachment " , [
%{
" url " = > [
%{
" href " = > " https://peertube.moe/static/webseed/480.jpg " ,
" mediaType " = > " image/jpg " ,
" type " = > " Link "
}
]
}
] )
object
|> Ecto.Changeset . change ( data : object_data )
|> Pleroma.Repo . update ( )
assert conn
|> get ( " /notice/ #{ note_activity . id } /embed_player " )
|> response ( 404 )
end
2018-06-03 19:04:44 +00:00
end
2017-04-18 16:41:51 +00:00
end