@ -7,6 +7,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
alias Ecto.Changeset
alias Pleroma.Activity
alias Pleroma.Config
alias Pleroma.Notification
alias Pleroma.Object
alias Pleroma.Repo
@ -85,11 +86,11 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
end
test " the public timeline when public is set to false " , %{ conn : conn } do
public = Pleroma. Config. get ( [ :instance , :public ] )
Pleroma. Config. put ( [ :instance , :public ] , false )
public = Config. get ( [ :instance , :public ] )
Config. put ( [ :instance , :public ] , false )
on_exit ( fn ->
Pleroma. Config. put ( [ :instance , :public ] , public )
Config. put ( [ :instance , :public ] , public )
end )
assert conn
@ -250,7 +251,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
end
test " posting a status with OGP link preview " , %{ conn : conn } do
Pleroma. Config. put ( [ :rich_media , :enabled ] , true )
Config. put ( [ :rich_media , :enabled ] , true )
conn =
conn
@ -260,7 +261,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
assert %{ " id " = > id , " card " = > %{ " title " = > " The Rock " } } = json_response ( conn , 200 )
assert Activity . get_by_id ( id )
Pleroma. Config. put ( [ :rich_media , :enabled ] , false )
Config. put ( [ :rich_media , :enabled ] , false )
end
test " posting a direct status " , %{ conn : conn } do
@ -304,7 +305,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
test " option limit is enforced " , %{ conn : conn } do
user = insert ( :user )
limit = Pleroma. Config. get ( [ :instance , :poll_limits , :max_options ] )
limit = Config. get ( [ :instance , :poll_limits , :max_options ] )
conn =
conn
@ -320,7 +321,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
test " option character limit is enforced " , %{ conn : conn } do
user = insert ( :user )
limit = Pleroma. Config. get ( [ :instance , :poll_limits , :max_option_chars ] )
limit = Config. get ( [ :instance , :poll_limits , :max_option_chars ] )
conn =
conn
@ -339,7 +340,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
test " minimal date limit is enforced " , %{ conn : conn } do
user = insert ( :user )
limit = Pleroma. Config. get ( [ :instance , :poll_limits , :min_expiration ] )
limit = Config. get ( [ :instance , :poll_limits , :min_expiration ] )
conn =
conn
@ -358,7 +359,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
test " maximum date limit is enforced " , %{ conn : conn } do
user = insert ( :user )
limit = Pleroma. Config. get ( [ :instance , :poll_limits , :max_expiration ] )
limit = Config. get ( [ :instance , :poll_limits , :max_expiration ] )
conn =
conn
@ -1633,12 +1634,12 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
describe " media upload " do
setup do
upload_config = Pleroma. Config. get ( [ Pleroma.Upload ] )
proxy_config = Pleroma. Config. get ( [ :media_proxy ] )
upload_config = Config. get ( [ Pleroma.Upload ] )
proxy_config = Config. get ( [ :media_proxy ] )
on_exit ( fn ->
Pleroma. Config. put ( [ Pleroma.Upload ] , upload_config )
Pleroma. Config. put ( [ :media_proxy ] , proxy_config )
Config. put ( [ Pleroma.Upload ] , upload_config )
Config. put ( [ :media_proxy ] , proxy_config )
end )
user = insert ( :user )
@ -2581,7 +2582,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
conn = get ( conn , " /api/v1/instance " )
assert result = json_response ( conn , 200 )
email = Pleroma. Config. get ( [ :instance , :email ] )
email = Config. get ( [ :instance , :email ] )
# Note: not checking for "max_toot_chars" since it's optional
assert %{
" uri " = > _ ,
@ -2623,7 +2624,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
|> Changeset . put_embed ( :info , info_change )
|> User . update_and_set_cache ( )
Pleroma.Stats . update_stats ( )
Pleroma.Stats . force_ update( )
conn = get ( conn , " /api/v1/instance " )
@ -2641,7 +2642,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
insert ( :user , %{ local : false , nickname : " u@peer1.com " } )
insert ( :user , %{ local : false , nickname : " u@peer2.com " } )
Pleroma.Stats . update_stats ( )
Pleroma.Stats . force_ update( )
conn = get ( conn , " /api/v1/instance/peers " )
@ -2666,7 +2667,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
describe " pinned statuses " do
setup do
Pleroma. Config. put ( [ :instance , :max_pinned_statuses ] , 1 )
Config. put ( [ :instance , :max_pinned_statuses ] , 1 )
user = insert ( :user )
{ :ok , activity } = CommonAPI . post ( user , %{ " status " = > " HI!!! " } )
@ -2766,10 +2767,10 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
describe " cards " do
setup do
Pleroma. Config. put ( [ :rich_media , :enabled ] , true )
Config. put ( [ :rich_media , :enabled ] , true )
on_exit ( fn ->
Pleroma. Config. put ( [ :rich_media , :enabled ] , false )
Config. put ( [ :rich_media , :enabled ] , false )
end )
user = insert ( :user )
@ -2997,7 +2998,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
reporter : reporter ,
target_user : target_user
} do
max_size = Pleroma. Config. get ( [ :instance , :max_report_comment_size ] , 1000 )
max_size = Config. get ( [ :instance , :max_report_comment_size ] , 1000 )
comment = String . pad_trailing ( " a " , max_size + 1 , " a " )
error = %{ " error " = > " Comment must be up to #{ max_size } characters " }
@ -3126,15 +3127,15 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
conn : conn ,
path : path
} do
is_public = Pleroma. Config. get ( [ :instance , :public ] )
Pleroma. Config. put ( [ :instance , :public ] , false )
is_public = Config. get ( [ :instance , :public ] )
Config. put ( [ :instance , :public ] , false )
conn = get ( conn , path )
assert conn . status == 302
assert redirected_to ( conn ) == " /web/login "
Pleroma. Config. put ( [ :instance , :public ] , is_public )
Config. put ( [ :instance , :public ] , is_public )
end
test " does not redirect logged in users to the login page " , %{ conn : conn , path : path } do
@ -3876,8 +3877,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
token_record = Repo . get_by ( Pleroma.PasswordResetToken , user_id : user . id )
email = Pleroma.Emails.UserEmail . password_reset_email ( user , token_record . token )
notify_email = Pleroma. Config. get ( [ :instance , :notify_email ] )
instance_name = Pleroma. Config. get ( [ :instance , :name ] )
notify_email = Config. get ( [ :instance , :notify_email ] )
instance_name = Config. get ( [ :instance , :name ] )
assert_email_sent (
from : { instance_name , notify_email } ,
@ -3909,11 +3910,11 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
describe " POST /api/v1/pleroma/accounts/confirmation_resend " do
setup do
setting = Pleroma. Config. get ( [ :instance , :account_activation_required ] )
setting = Config. get ( [ :instance , :account_activation_required ] )
unless setting do
Pleroma. Config. put ( [ :instance , :account_activation_required ] , true )
on_exit ( fn -> Pleroma. Config. put ( [ :instance , :account_activation_required ] , setting ) end )
Config. put ( [ :instance , :account_activation_required ] , true )
on_exit ( fn -> Config. put ( [ :instance , :account_activation_required ] , setting ) end )
end
user = insert ( :user )
@ -3937,8 +3938,8 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
|> json_response ( :no_content )
email = Pleroma.Emails.UserEmail . account_confirmation_email ( user )
notify_email = Pleroma. Config. get ( [ :instance , :notify_email ] )
instance_name = Pleroma. Config. get ( [ :instance , :name ] )
notify_email = Config. get ( [ :instance , :notify_email ] )
instance_name = Config. get ( [ :instance , :name ] )
assert_email_sent (
from : { instance_name , notify_email } ,
@ -3947,4 +3948,84 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIControllerTest do
)
end
end
describe " GET /api/v1/suggestions " do
setup do
user = insert ( :user )
other_user = insert ( :user )
config = Config . get ( :suggestions )
on_exit ( fn -> Config . put ( :suggestions , config ) end )
host = Config . get ( [ Pleroma.Web.Endpoint , :url , :host ] )
url500 = " http://test500? #{ host } & #{ user . nickname } "
url200 = " http://test200? #{ host } & #{ user . nickname } "
mock ( fn
%{ method : :get , url : ^ url500 } ->
% Tesla.Env { status : 500 , body : " bad request " }
%{ method : :get , url : ^ url200 } ->
% Tesla.Env {
status : 200 ,
body :
~s( [{"acct":"yj455","avatar":"https://social.heldscal.la/avatar/201.jpeg","avatar_static":"https://social.heldscal.la/avatar/s/201.jpeg"}, {"acct":" #{
other_user . ap_id
} " , " avatar " : " https :/ / social . heldscal . la / avatar / 202 . jpeg " , " avatar_static " : " https :/ / social . heldscal . la / avatar / s / 202 . jpeg " }])
}
end )
[ user : user , other_user : other_user ]
end
test " returns empty result when suggestions disabled " , %{ conn : conn , user : user } do
Config . put ( [ :suggestions , :enabled ] , false )
res =
conn
|> assign ( :user , user )
|> get ( " /api/v1/suggestions " )
|> json_response ( 200 )
assert res == [ ]
end
test " returns error " , %{ conn : conn , user : user } do
Config . put ( [ :suggestions , :enabled ] , true )
Config . put ( [ :suggestions , :third_party_engine ] , " http://test500?{{host}}&{{user}} " )
res =
conn
|> assign ( :user , user )
|> get ( " /api/v1/suggestions " )
|> json_response ( 500 )
assert res == " Something went wrong "
end
test " returns suggestions " , %{ conn : conn , user : user , other_user : other_user } do
Config . put ( [ :suggestions , :enabled ] , true )
Config . put ( [ :suggestions , :third_party_engine ] , " http://test200?{{host}}&{{user}} " )
res =
conn
|> assign ( :user , user )
|> get ( " /api/v1/suggestions " )
|> json_response ( 200 )
assert res == [
%{
" acct " = > " yj455 " ,
" avatar " = > " https://social.heldscal.la/avatar/201.jpeg " ,
" avatar_static " = > " https://social.heldscal.la/avatar/s/201.jpeg " ,
" id " = > 0
} ,
%{
" acct " = > other_user . ap_id ,
" avatar " = > " https://social.heldscal.la/avatar/202.jpeg " ,
" avatar_static " = > " https://social.heldscal.la/avatar/s/202.jpeg " ,
" id " = > other_user . id
}
]
end
end
end