Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F84164944
anti_link_spam_policy_test.exs
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
4 KB
Referenced Files
None
Subscribers
None
anti_link_spam_policy_test.exs
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicyTest
do
use
Pleroma.DataCase
import
Pleroma.Factory
import
ExUnit.CaptureLog
alias
Pleroma.Web.ActivityPub.MRF
alias
Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy
@linkless_message
%{
"type"
=>
"Create"
,
"object"
=>
%{
"content"
=>
"hi world!"
}
}
@linkful_message
%{
"type"
=>
"Create"
,
"object"
=>
%{
"content"
=>
"<a href='https://example.com'>hi world!</a>"
}
}
@response_message
%{
"type"
=>
"Create"
,
"object"
=>
%{
"name"
=>
"yes"
,
"type"
=>
"Answer"
}
}
describe
"with new user"
do
test
"it allows posts without links"
do
user
=
insert
(
:user
,
local
:
false
)
assert
user
.
note_count
==
0
message
=
@linkless_message
|>
Map
.
put
(
"actor"
,
user
.
ap_id
)
{
:ok
,
_message
}
=
AntiLinkSpamPolicy
.
filter
(
message
)
end
test
"it disallows posts with links"
do
user
=
insert
(
:user
,
local
:
false
)
assert
user
.
note_count
==
0
message
=
%{
"type"
=>
"Create"
,
"actor"
=>
user
.
ap_id
,
"object"
=>
%{
"formerRepresentations"
=>
%{
"type"
=>
"OrderedCollection"
,
"orderedItems"
=>
[
%{
"content"
=>
"<a href='https://example.com'>hi world!</a>"
}
]
},
"content"
=>
"mew"
}
}
{
:reject
,
_
}
=
MRF
.
filter_one
(
AntiLinkSpamPolicy
,
message
)
end
test
"it allows posts with links for local users"
do
user
=
insert
(
:user
)
assert
user
.
note_count
==
0
message
=
@linkful_message
|>
Map
.
put
(
"actor"
,
user
.
ap_id
)
{
:ok
,
_message
}
=
AntiLinkSpamPolicy
.
filter
(
message
)
end
test
"it disallows posts with links in history"
do
user
=
insert
(
:user
,
local
:
false
)
assert
user
.
note_count
==
0
message
=
@linkful_message
|>
Map
.
put
(
"actor"
,
user
.
ap_id
)
{
:reject
,
_
}
=
AntiLinkSpamPolicy
.
filter
(
message
)
end
end
describe
"with old user"
do
test
"it allows posts without links"
do
user
=
insert
(
:user
,
note_count
:
1
)
assert
user
.
note_count
==
1
message
=
@linkless_message
|>
Map
.
put
(
"actor"
,
user
.
ap_id
)
{
:ok
,
_message
}
=
AntiLinkSpamPolicy
.
filter
(
message
)
end
test
"it allows posts with links"
do
user
=
insert
(
:user
,
note_count
:
1
)
assert
user
.
note_count
==
1
message
=
@linkful_message
|>
Map
.
put
(
"actor"
,
user
.
ap_id
)
{
:ok
,
_message
}
=
AntiLinkSpamPolicy
.
filter
(
message
)
end
end
describe
"with followed new user"
do
test
"it allows posts without links"
do
user
=
insert
(
:user
,
follower_count
:
1
)
assert
user
.
follower_count
==
1
message
=
@linkless_message
|>
Map
.
put
(
"actor"
,
user
.
ap_id
)
{
:ok
,
_message
}
=
AntiLinkSpamPolicy
.
filter
(
message
)
end
test
"it allows posts with links"
do
user
=
insert
(
:user
,
follower_count
:
1
)
assert
user
.
follower_count
==
1
message
=
@linkful_message
|>
Map
.
put
(
"actor"
,
user
.
ap_id
)
{
:ok
,
_message
}
=
AntiLinkSpamPolicy
.
filter
(
message
)
end
end
describe
"with unknown actors"
do
setup
do
Tesla.Mock
.
mock
(
fn
%{
method
:
:get
,
url
:
"http://invalid.actor"
}
->
%
Tesla.Env
{
status
:
500
,
body
:
""
}
end
)
:ok
end
test
"it rejects posts without links"
do
message
=
@linkless_message
|>
Map
.
put
(
"actor"
,
"http://invalid.actor"
)
assert
capture_log
(
fn
->
{
:reject
,
_
}
=
AntiLinkSpamPolicy
.
filter
(
message
)
end
)
=~
"[error] Could not decode user at fetch http://invalid.actor"
end
test
"it rejects posts with links"
do
message
=
@linkful_message
|>
Map
.
put
(
"actor"
,
"http://invalid.actor"
)
assert
capture_log
(
fn
->
{
:reject
,
_
}
=
AntiLinkSpamPolicy
.
filter
(
message
)
end
)
=~
"[error] Could not decode user at fetch http://invalid.actor"
end
end
describe
"with contentless-objects"
do
test
"it does not reject them or error out"
do
user
=
insert
(
:user
,
note_count
:
1
)
message
=
@response_message
|>
Map
.
put
(
"actor"
,
user
.
ap_id
)
{
:ok
,
_message
}
=
AntiLinkSpamPolicy
.
filter
(
message
)
end
end
end
File Metadata
Details
Attached
Mime Type
text/html
Expires
Thu, Jun 4, 6:30 PM (1 d, 4 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1537636
Default Alt Text
anti_link_spam_policy_test.exs (4 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment